diff --git a/api_specifications/public/pelion_dm_public_openapi.yaml b/api_specifications/public/pelion_dm_public_openapi.yaml index 75c7a24c9..5718a52e3 100644 --- a/api_specifications/public/pelion_dm_public_openapi.yaml +++ b/api_specifications/public/pelion_dm_public_openapi.yaml @@ -1,4 +1,148 @@ definitions: + AccessKey: + description: Represents an application in Device Management. + properties: + account_id: + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + application_id: + description: The ID of the application. + example: 01705c6383f6c85b76f92f4e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + created_at: + description: Creation UTC time RFC3339. + example: '2020-02-13T09:35:20Z' + format: date-time + readOnly: true + type: string + description: + description: The description of the access key. + example: Access key to control the warp drive + maxLength: 500 + type: string + etag: + description: API resource entity version. + example: '1' + readOnly: true + type: string + expiration: + description: 'Expiration time of the access key, as UTC time RFC3339. + + Expiration makes the access key inoperative and the status will be EXPIRED. + + The client using the expired access key is no longer able to use the REST + API. + + The access key expiration does not invalidate existing configurations meaning + that subscribed events will continue to flow on existing channels.' + format: date-time + type: string + id: + description: The ID of the access key. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + key: + description: The access key. The full key including the secret part is visible + in the response for create only + example: ak_2MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + readOnly: true + type: string + last_used_at: + description: The time of the latest access key usage. + example: '2020-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + name: + description: The display name for the access key. + example: Access key warp + maxLength: 100 + type: string + object: + description: 'Entity name: always ''access-key''' + enum: + - access-key + readOnly: true + type: string + status: + description: 'The status of the access key. + + ACTIVE means that the access key is operational. + + INACTIVE means that the access key is not operational and it prevents the + clients to use the REST API. Inactivating the access key does not invalidate + existing configurations meaning that subscribed events will continue to + flow on existing channels. + + The EXPIRED status is not allowed to be set directly, it is derived from + the expiration attribute.' + enum: + - ACTIVE + - INACTIVE + - EXPIRED + example: ACTIVE + type: string + updated_at: + description: Last update UTC time RFC3339. + example: '2020-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + required: + - name + type: object + AccessKeyList: + properties: + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + data: + description: A list of entities. + items: + $ref: '#/definitions/AccessKey' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return, or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' + enum: + - list + type: string + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC + type: string + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object AccountCreationReq: description: Represents an account creation request. properties: @@ -39,13 +183,16 @@ definitions: type: string x-nullable: true aliases: - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array x-nullable: true + business_model: + $ref: '#/definitions/BusinessModel' city: description: The city part of the postal address. Required for commercial accounts only. @@ -54,7 +201,8 @@ definitions: type: string x-nullable: true company: - description: The name of the company. Required for commercial accounts only. + description: The name of the company used in billing. Required for commercial + accounts only. example: ARM Holdings Plc maxLength: 100 type: string @@ -86,7 +234,7 @@ definitions: type: string x-nullable: true display_name: - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -123,7 +271,7 @@ definitions: required: - end_market type: object - AccountInfo: + AccountCreationResp: description: Represents an account in requests and responses. properties: address_line1: @@ -153,7 +301,8 @@ definitions: type: string x-nullable: true admin_id: - description: The ID of the admin user created for this account. + description: The ID of the admin user created for this account. Present only + in the response for the account creation. example: 01619571e2e89242ac12000600000000 pattern: '[a-f0-9]{32}' type: string @@ -164,6 +313,11 @@ definitions: example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT readOnly: true type: string + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-09-01T00:00:00+00:00' + issued_at: '2020-09-01T00:00:00+00:00' + links: [] x-nullable: true admin_name: description: The username of the admin user created for this account. Present @@ -179,12 +333,20 @@ definitions: type: string x-nullable: true aliases: - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + business_model: + $ref: '#/definitions/BusinessModel' + business_model_history: + description: Business model history for this account. + items: + $ref: '#/definitions/BusinessModelHistory' + type: array city: description: The city part of the postal address. example: Cambridge @@ -192,7 +354,7 @@ definitions: type: string x-nullable: true company: - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string @@ -231,7 +393,7 @@ definitions: type: string x-nullable: true display_name: - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -275,11 +437,20 @@ definitions: minimum: 1 type: integer x-nullable: true + limitations: + description: List of account limitation objects. + items: + $ref: '#/definitions/AccountLimitation' + type: array limits: additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true mfa_status: description: The enforcement status of multi-factor authentication, either @@ -387,6 +558,11 @@ definitions: account, `2`: partner tier. Other values are reserved for the future.' example: '1' type: string + tier_history: + description: Tier history for this account. + items: + $ref: '#/definitions/TierHistory' + type: array updated_at: description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' @@ -397,64 +573,12 @@ definitions: example: '2018-02-14T15:24:14Z' format: date-time type: string - required: - - end_market - - etag - - id - - object - - status - - tier - type: object - AccountInfoList: - properties: - after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - data: - description: A list of entities. - items: - $ref: '#/definitions/AccountInfo' - type: array - has_more: - description: Flag indicating whether there are more results. - example: false - type: boolean - limit: - description: The number of results to return (2-1000), or equal to `total_count`. - example: 50 - format: int32 - type: integer - object: - description: 'Entity name: always `list`.' - enum: - - list - type: string - order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' - enum: - - ASC - - DESC - type: string - total_count: - description: The total number of records, if requested. - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count type: object - AccountUpdateReq: - description: Represents an account creation request. + AccountInfo: + description: Represents an account in requests and responses. properties: address_line1: - description: Postal address line 1. Required for commercial accounts only. + description: Postal address line 1. example: 110 Fulbourn Rd maxLength: 100 type: string @@ -466,79 +590,125 @@ definitions: type: string x-nullable: true aliases: - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array - x-nullable: true + business_model: + $ref: '#/definitions/BusinessModel' + business_model_history: + description: Business model history for this account. + items: + $ref: '#/definitions/BusinessModelHistory' + type: array city: - description: The city part of the postal address. Required for commercial - accounts only. + description: The city part of the postal address. example: Cambridge maxLength: 100 type: string x-nullable: true company: - description: The name of the company. Required for commercial accounts only. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string x-nullable: true contact: - description: The name of the contact person for this account. Required for - commercial accounts only. + description: The name of the contact person for this account. example: J. Doe maxLength: 100 type: string x-nullable: true + contract_number: + description: Contract number of the customer. + example: 1NX25_0001 + type: string + x-nullable: true country: - description: The country part of the postal address. Required for commercial - accounts only. + description: The country part of the postal address. example: United Kingdom maxLength: 100 type: string x-nullable: true + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string custom_fields: additionalProperties: type: string description: Account's custom properties as key-value pairs. - maxItems: 10 type: object x-nullable: true + customer_number: + description: Customer number of the customer. + example: 1NC25_0001 + type: string + x-nullable: true display_name: - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string x-nullable: true email: - description: The company email address for this account. Required for commercial - accounts only. + description: The company email address for this account. example: info@arm.com pattern: ^(?=.{3,254}$).+\@.+ type: string x-nullable: true end_market: - description: The end market for this account. + description: Account end market. example: IT - maxLength: 100 + type: string + etag: + description: API resource entity version. + example: '1' + type: string + expiration: + description: Expiration time of the account, as UTC time RFC3339. + format: date-time type: string x-nullable: true expiration_warning_threshold: - description: Indicates how many days before account expiration a notification + description: Indicates how many days (1-180) before account expiration a notification email is sent. + example: '180' maximum: 180 minimum: 1 type: integer x-nullable: true + id: + description: Account ID. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string idle_timeout: - description: Reference token expiration time in minutes. + description: The reference token expiration time, in minutes, for this account. + example: '30' maximum: 120 minimum: 1 type: integer x-nullable: true + limitations: + description: List of account limitation objects. + items: + $ref: '#/definitions/AccountLimitation' + type: array + limits: + additionalProperties: + type: string + description: 'DEPRECATED: Replaced by the limitations parameter.' + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true mfa_status: description: The enforcement status of multi-factor authentication, either `enforced` or `optional`. @@ -554,9 +724,24 @@ definitions: type: string type: array x-nullable: true + object: + description: 'Entity name: always `account`.' + enum: + - account + type: string + parent_account: + $ref: '#/definitions/ParentAccountInfo' + description: Contact details of the parent account. + x-nullable: true + parent_id: + description: The ID of the parent account, if any. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true password_policy: $ref: '#/definitions/PasswordPolicy' - description: Password policy for this account. + description: The password policy for this account. x-nullable: true password_recovery_expiration: description: Indicates for how many minutes a password recovery email is valid. @@ -564,427 +749,239 @@ definitions: maximum: 45 minimum: 1 type: integer - x-nullable: true phone_number: - description: The phone number of a representative of the company. + description: The phone number of a company representative. example: +44 (1223) 400 400 maxLength: 100 type: string x-nullable: true + policies: + description: List of policies if requested. + items: + $ref: '#/definitions/FeaturePolicy' + type: array + x-nullable: true postal_code: description: The postal code part of the postal address. example: CB1 9NJ maxLength: 100 type: string x-nullable: true - state: - description: The state part of the postal address. - example: ' ' - maxLength: 100 - type: string - x-nullable: true - type: object - AccountUpdateRootReq: - description: Represents an account update request. - properties: - address_line1: - description: Postal address line 1. Required for commercial accounts only. - example: 110 Fulbourn Rd - maxLength: 100 - type: string - x-nullable: true - address_line2: - description: Postal address line 2. - example: ' ' - maxLength: 100 + reason: + description: A note with the reason for account status update. + example: Subscription paid. type: string x-nullable: true - aliases: - description: An array of aliases. - items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 - type: array - x-nullable: true - city: - description: The city part of the postal address. Required for commercial - accounts only. - example: Cambridge - maxLength: 100 + reference_note: + description: A reference note for updating the status of the account. + example: ARM-INT-0001 type: string x-nullable: true - company: - description: The name of the company. Required for commercial accounts only. - example: ARM Holdings Plc - maxLength: 100 + sales_contact: + description: Email address of the sales contact. + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ type: string x-nullable: true - contact: - description: The name of the contact person for this account. Required for - commercial accounts only. - example: J. Doe + state: + description: The state part of the postal address. + example: ' ' maxLength: 100 type: string x-nullable: true - contract_number: - description: Contract number of the customer. - type: string - x-nullable: true - country: - description: The country part of the postal address. Required for commercial - accounts only. - example: United Kingdom - maxLength: 100 + status: + description: The status of the account. + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE type: string + sub_accounts: + description: List of sub accounts. Not available for developer users. + items: + $ref: '#/definitions/AccountInfo' + type: array x-nullable: true - custom_fields: - additionalProperties: - type: string - description: Account's custom properties as key-value pairs. - maxItems: 10 - type: object - x-nullable: true - customer_number: - description: Customer number of the customer. + template_id: + description: Account template ID. + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string x-nullable: true - display_name: - description: The display name for the account. - example: ARM - maxLength: 100 + tier: + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' type: string - x-nullable: true - email: - description: The company email address for this account. Required for commercial - accounts only. - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + tier_history: + description: Tier history for this account. + items: + $ref: '#/definitions/TierHistory' + type: array + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string - x-nullable: true - end_market: - description: The end market for this account. - example: IT - maxLength: 100 + upgraded_at: + description: Time when upgraded to commercial account in UTC format RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string - x-nullable: true - expiration_warning_threshold: - description: Indicates how many days before account expiration a notification - email is sent. - maximum: 180 - minimum: 1 - type: integer - x-nullable: true - idle_timeout: - description: The reference token expiration time in minutes for this account. - Between 1 and 120 minutes. - maximum: 120 - minimum: 1 - type: integer - x-nullable: true - mfa_status: - description: The enforcement status of setting up the multi-factor authentication. - 'Enforced' means that setting up the MFA is required after login. 'Optional' - means that the MFA is not required. - enum: - - enforced - - optional + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + AccountInfoList: + properties: + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - x-nullable: true - notification_emails: - description: A list of notification email addresses. + data: + description: A list of entities. items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string + $ref: '#/definitions/AccountInfo' type: array - x-nullable: true - password_policy: - $ref: '#/definitions/PasswordPolicy' - description: Password policy for this account. - x-nullable: true - password_recovery_expiration: - description: Indicates for how many minutes a password recovery email is valid. + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return (2-1000), or equal to `total_count`. + example: 50 format: int32 - maximum: 45 - minimum: 1 type: integer - x-nullable: true - phone_number: - description: The phone number of a representative of the company. - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - postal_code: - description: The postal code part of the postal address. - example: CB1 9NJ - maxLength: 100 - type: string - x-nullable: true - sales_contact: - description: Email address of the sales contact. - pattern: ^(?=.{3,254}$).+\@.+ + object: + description: 'Entity name: always `list`.' + enum: + - list type: string - x-nullable: true - state: - description: The state part of the postal address. - example: ' ' - maxLength: 100 + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC type: string - x-nullable: true + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count type: object - ActiveServicePackage: - description: An active service package. + AccountLimitation: + description: This object represents an account limitation. properties: - created: - description: Service package creation time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string - expires: - description: Service package expiration time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string - firmware_update_count: - description: Size of firmware update quota of this service package. + billing_period: + description: Billing period of the account limitation. format: int32 type: integer - grace_period: - description: Indicates whether the service package is in its grace period. - type: boolean - id: - description: ID of this service package. - type: string - modified: - description: Service package latest modified time in RFC3339 date-time with - millisecond accuracy and UTC time zone. + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' format: date-time type: string - next_id: - description: Next service package ID if this service package has a pending - renewal, or null. - type: string - previous_id: - description: Previous service package ID or null. - type: string - start_time: - description: Service package start time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string - required: - - id - - created - - modified - - start_time - - expires - - firmware_update_count - - grace_period - type: object - ActiveSession: - description: Represents an active user session. - properties: - account_id: - description: The UUID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - ip_address: - description: IP address of the client. - example: 127.0.0.1 - type: string - login_time: - description: The login time of the user. - example: '2018-02-14T17:52:07Z' - format: date-time - type: string - object: - description: 'Entity name: always ''user-session''' - enum: - - user-session - type: string - reference_token: - description: The reference token. - example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk - type: string - user_agent: - description: User Agent header from the login request. - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 - type: string - required: - - account_id - - ip_address - - login_time - - object - - reference_token - - user_agent - type: object - AggregatedQuotaUsageReport: - description: Aggregated quota usage entry. - properties: - account_id: - type: string - amount: - description: Amount of quota usage entry. Negative if quota consumption. - format: int64 - type: integer - campaign_name: - description: 'Campaign name of quota usage entry. - - Null if quota usage entry type is not `reservation` or `reservation release`.' - type: string - time: - description: Added time of quota usage entry in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string - type: - description: Type of quota usage entry. - enum: - - reservation - - reservation_release - - reservation_termination - - package_renewal - - package_creation - - package_termination - type: string - required: - - account_id - - amount - - type - - time - type: object - AllServerCredentialsResponseData: - properties: - bootstrap: - $ref: '#/definitions/CredentialsResponseData' - lwm2m: - $ref: '#/definitions/CredentialsResponseData' - type: object - ApiKeyInfoReq: - description: Represents an API key in requests towards Device Management. - properties: - groups: - description: A list of group IDs this API key belongs to. - items: - type: string - type: array - name: - description: The display name for the API key. - maxLength: 100 - type: string - owner: - description: The owner of this API key. - type: string - status: - description: The status of the API key. - enum: - - ACTIVE - - INACTIVE - type: string - required: - - name - type: object - ApiKeyInfoResp: - description: Represents an API key in Device Management. - properties: - account_id: - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - created_at: - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time + description: + description: Description of the account limitation. + readOnly: true type: string - creation_time: - description: The timestamp of the API key creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - type: integer etag: description: API resource entity version. example: '1' type: string - groups: - description: A list of group IDs this API key belongs to. - items: - type: string - type: array id: - description: The ID of the API key. - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' + description: Entity ID. + example: 01619571d01d0242ac12000600000000 type: string - key: - description: The API key. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + inherited: + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + inherited_from: + description: Indicates where this limit is inherited from. + readOnly: true type: string - last_login_time: - description: The timestamp of the latest API key usage, in milliseconds. - example: 1518630727688 - format: int64 + inherited_type: + description: Indicates the type of the entity where the limitation is inherited + from. + readOnly: true + type: string + limit: + description: The value of the limit. + format: int32 type: integer name: - description: The display name for the API key. - example: API key gorgon - maxLength: 100 + description: Name of the account limitation. type: string object: - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''limitation''' enum: + - user - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image type: string - owner: - description: The owner of this API key, who is the creator by default. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - status: - description: The status of the API key. - enum: - - ACTIVE - - INACTIVE - example: ACTIVE - type: string + quota: + description: Quota of the account limitation. + format: int32 + type: integer updated_at: description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' format: date-time type: string - required: - - etag - - id - - key - - name - - object type: object - ApiKeyInfoRespList: + AccountLimitationList: properties: after: - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' type: string data: description: A list of entities. items: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/AccountLimitation' type: array has_more: - description: Flag indicating whether there are more results. + description: Flag indicating whether there is more results. example: false type: boolean limit: - description: The number of results to return, or equal to `total_count`. + description: 'The number of results to return, (range: 2-1000), or equals + to `total_count`' example: 50 format: int32 type: integer object: - description: 'Entity name: always `list`.' + description: 'Entity name: always ''list''' enum: - list type: string @@ -996,7 +993,8 @@ definitions: - DESC type: string total_count: - description: The total number of records, if requested. + description: The total number or records, if requested. It might be returned + also for small lists. example: 20 format: int32 type: integer @@ -1007,260 +1005,76 @@ definitions: - object - total_count type: object - ApiKeyUpdateReq: - description: Represents an API key in requests towards Device Management. + AccountResponse: + description: This object represents an account in responses. properties: - groups: - description: A list of group IDs this API key belongs to. + alias: + description: Alias of the account. + example: cust-314159 + readOnly: true + type: string + display_name: + description: The display name for the account. + example: Customer 3.14159 + readOnly: true + type: string + id: + description: The UUID of the account. + example: 01619571e2e90242ac12000600000000 + readOnly: true + type: string + login_profiles: + description: A list of login profiles for the user in the account. items: - type: string + $ref: '#/definitions/LoginProfile' type: array - name: - description: The display name for the API key. - maxLength: 100 - type: string - owner: - description: The owner of this API key. + x-nullable: true + parent_id: + description: The UUID of the parent account, if it has any. + example: 01619571f3c00242ac12000600000000 + readOnly: true type: string status: - description: The status of the API key. + description: The status of the account. enum: + - ENROLLING - ACTIVE - - INACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + readOnly: true type: string - required: - - name type: object - AsyncID: + AccountResponseList: properties: - async-response-id: - description: Asynchronous response unique ID. - example: 9e3c96b8-c4d7-496a-ab90-cc732b9b560e - type: string - type: object - AsyncIDResponse: - properties: - ct: - description: The content type. - example: text/plain - type: string - error: - description: 'An optional error message describing the error. Please refer - to status listing above. - - ' - example: TIMEOUT - type: string - id: - description: The unique ID of the asynchronous response. - example: 9e3c96b8-c4d7-496a-ab90-cc732b9b560e - type: string - max-age: - description: Determines how long this value stays valid in the cache, in seconds. - 0 means that the value is not stored in the cache. - example: 60 - type: string - payload: - description: Requested data, base64 encoded. - example: My4zMQ== - type: string - status: - description: "\nStates whether sending a command to the device succeeded or\ - \ failed.\n\n\n \n \n \n \n\ - \ \n \n \n \n \n\ - \ \n \n \n \n\ - \ \n \n\ - \ \n \n \n\ - \ \n \n \n \n \n\ - \ \n \n \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n\ - \ \n \n \n \n \n \n\ - \ \n \n \n
CodeDescription
200Operation succeeded. The playload contains result of the operation\ - \ from the device.
404Endpoint does not have requested resource.
412Precondition failed and\ - \ operation was not executed. Device responded with 4.12 CoAP response code.
413Request entity\ - \ is too large and could not be delivered to the device.
415Endpoint does not support\ - \ media type.
429Expired request was removed from queue (REQUEST_EXPIRED), device\ - \ requested deregistration (DEVICE_REMOVED_REGISTRATION), or device was\ - \ suspended (DEVICE_BLOCKED).
502Request to the device failed and retry count exceeded. Last retry\ - \ failed to establish TCP or TLS connection to endpoint.
503Request to the device failed\ - \ and retry count exceeded. Last retry failed because endpoint is currently\ - \ unavailable (NOT_CONNECTED).
504Request to the device failed and retry count exceeded. Last retry\ - \ failed, as device did not respond in the time of protocol-specific retransmission\ - \ logic (TIMEOUT).
\n" - example: 200 - type: integer - type: object - BadRequestErrorResponse: - description: 400 Bad request response. - properties: - code: - description: Response code. Always set to 400. - enum: - - 400 - type: integer - fields: - items: - $ref: '#/definitions/BadRequestErrorResponseField' - type: array - message: - description: A human-readable message with detailed info. - type: string - object: - description: Always set to `error`. - enum: - - error - type: string - request_id: - description: Request ID. - type: string - type: - description: Error type. Always set to `validation_error`. - enum: - - validation_error - type: string - required: - - object - - message - - request_id - - type - - code - - fields - type: object - BadRequestErrorResponseField: - description: Single field that failed validation. - properties: - message: - description: A human-readable message with detailed validation error. - type: string - name: - description: Name of the field that failed validation. If name is set to `body,` - then the validation failed on request body. - type: string - required: - - name - - message - type: object - BillingReportRawDataResponse: - description: The response includes the URL to download raw billing data. - properties: - filename: - description: The filename of the raw billing data file to download. Contains - file extensions. - type: string - object: - description: API Resource name. - type: string - url: - description: The URL to download raw billing data. - type: string - required: - - object - - url - - filename - type: object - BlackListedDeviceData: - properties: - account_id: - description: account id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' - type: string - created_at: - description: date on which the failed bootstrap was attempted on - example: '2000-01-23T04:56:07.000+00:00' - format: date-time - type: string - endpoint_name: - description: endpoint name - example: Endpoint_1234 - type: string - id: - description: id of the recorded failed bootstrap attempt - example: 00005a4e027f0a580a04567c00000000 - pattern: '[a-f0-9]{32}' - type: string - object: - enum: - - denied_device - type: string - trusted_certificate_id: - description: Trusted certificate id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' - type: string - required: - - id - - account_id - - endpoint_name - - trusted_certificate_id - - created_at - - object - BrandingColor: - properties: - color: - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - type: string - x-nullable: true - object: - description: 'Entity name: always ''branding_color''' - enum: - - branding_color - readOnly: true - type: string - reference: - description: Color name. - enum: &id019 - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - type: string - updated_at: - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - type: string - type: object - BrandingColorList: - properties: - after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + after: + description: The entity ID to fetch after the given one. + example: 01619571f3c00242ac12000600000000 + readOnly: true type: string data: description: A list of entities. items: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/AccountResponse' + readOnly: true type: array has_more: - description: Flag indicating whether there are more results. + description: Flag indicating whether there is more results. example: false + readOnly: true type: boolean limit: - description: The number of results to return, or equal to `total_count`. + description: 'The number of results to return, (range: 2-1000), or equals + to `total_count`' example: 50 format: int32 + readOnly: true type: integer object: - description: 'Entity name: always `list`.' + description: 'Entity name: always ''list''' enum: - list + readOnly: true type: string order: description: 'The order of the records to return based on creation time. Available @@ -1268,1636 +1082,1951 @@ definitions: enum: - ASC - DESC + readOnly: true type: string total_count: - description: The total number of records, if requested. - example: 20 + description: The total number or records, if requested. It might be returned + also for small lists. + example: 5 format: int32 + readOnly: true type: integer - required: - - data - - has_more - - limit - - object - - total_count type: object - BrandingImage: + AccountUpdateReq: + description: Represents an account creation request. properties: - object: - description: 'Entity name: always ''branding_image''' - enum: - - branding_image - readOnly: true - type: string - reference: - description: Name of the image. - enum: &id020 - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 + address_line1: + description: Postal address line 1. Required for commercial accounts only. + example: 110 Fulbourn Rd + maxLength: 100 type: string - static_uri: - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + x-nullable: true + address_line2: + description: Postal address line 2. + example: ' ' + maxLength: 100 type: string - updated_at: - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true + x-nullable: true + aliases: + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + x-nullable: true + city: + description: The city part of the postal address. Required for commercial + accounts only. + example: Cambridge + maxLength: 100 type: string - type: object - BrandingImageList: - properties: - after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + x-nullable: true + company: + description: The name of the company used in billing. Required for commercial + accounts only. + example: ARM Holdings Plc + maxLength: 100 type: string - data: - description: A list of entities. + x-nullable: true + contact: + description: The name of the contact person for this account. Required for + commercial accounts only. + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + country: + description: The country part of the postal address. Required for commercial + accounts only. + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + custom_fields: + additionalProperties: + type: string + description: Account's custom properties as key-value pairs. + maxItems: 10 + type: object + x-nullable: true + display_name: + description: The display name for the tenant account. + example: ARM + maxLength: 100 + type: string + x-nullable: true + email: + description: The company email address for this account. Required for commercial + accounts only. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + end_market: + description: The end market for this account. + example: IT + maxLength: 100 + type: string + x-nullable: true + expiration_warning_threshold: + description: Indicates how many days before account expiration a notification + email is sent. + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + idle_timeout: + description: Reference token expiration time in minutes. + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + mfa_status: + description: The enforcement status of multi-factor authentication, either + `enforced` or `optional`. + enum: + - enforced + - optional + type: string + x-nullable: true + notification_emails: + description: A list of notification email addresses. items: - $ref: '#/definitions/BrandingImage' + pattern: ^(?=.{3,254}$).+\@.+ + type: string type: array - has_more: - description: Flag indicating whether there are more results. - example: false - type: boolean - limit: - description: The number of results to return, or equal to `total_count`. - example: 50 + x-nullable: true + password_policy: + $ref: '#/definitions/PasswordPolicy' + description: Password policy for this account. + x-nullable: true + password_recovery_expiration: + description: Indicates for how many minutes a password recovery email is valid. format: int32 + maximum: 45 + minimum: 1 type: integer - object: - description: 'Entity name: always `list`.' - enum: - - list + x-nullable: true + phone_number: + description: The phone number of a representative of the company. + example: +44 (1223) 400 400 + maxLength: 100 type: string - order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' - enum: - - ASC - - DESC + x-nullable: true + postal_code: + description: The postal code part of the postal address. + example: CB1 9NJ + maxLength: 100 type: string - total_count: - description: The total number of records, if requested. - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count + x-nullable: true + state: + description: The state part of the postal address. + example: ' ' + maxLength: 100 + type: string + x-nullable: true type: object - BulkResponse: + AccountUpdateRootReq: + description: Represents an account update request. properties: - account_id: - description: ID - example: 00005a4e027f0a580a01081c00000000 + address_line1: + description: Postal address line 1. Required for commercial accounts only. + example: 110 Fulbourn Rd + maxLength: 100 type: string - completed_at: - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - format: date-time + x-nullable: true + address_line2: + description: Postal address line 2. + example: ' ' + maxLength: 100 type: string - created_at: - description: The time of receiving the bulk creation task. - format: date-time + x-nullable: true + aliases: + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + x-nullable: true + business_model: + $ref: '#/definitions/BusinessModel' + city: + description: The city part of the postal address. Required for commercial + accounts only. + example: Cambridge + maxLength: 100 type: string - errors_count: - description: The number of enrollment identities with failed processing. - example: 0 - type: integer - errors_report_file: - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + x-nullable: true + company: + description: The name of the company used in billing. Required for commercial + accounts only. + example: ARM Holdings Plc + maxLength: 100 type: string - etag: - description: etag - example: '1' - pattern: '[A-Za-z0-9]{0,256}' + x-nullable: true + contact: + description: The name of the contact person for this account. Required for + commercial accounts only. + example: J. Doe + maxLength: 100 type: string - full_report_file: - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv + x-nullable: true + contract_number: + description: Contract number of the customer. An administrator can set this + property on tenant accounts only. type: string - id: - description: Bulk ID - pattern: ^[A-Za-z0-9]{32} + x-nullable: true + country: + description: The country part of the postal address. Required for commercial + accounts only. + example: United Kingdom + maxLength: 100 type: string - object: - enum: - - enrollment-identity-bulk-uploads - example: enrollment-identity-bulk-uploads + x-nullable: true + custom_fields: + additionalProperties: + type: string + description: Account's custom properties as key-value pairs. + maxItems: 10 + type: object + x-nullable: true + customer_number: + description: Customer number of the customer. An administrator can set this + property on tenant accounts only. type: string - processed_count: - description: The number of enrollment identities processed until now. - example: 0 - type: integer - status: - default: new - description: The state of the process is 'new' at the time of creation. If - creation is still in progress, the state shows as 'processing'. When the - request is fully processed, the state changes to 'completed'. - enum: - - new - - processing - - completed - example: new - total_count: - description: Total number of enrollment identities found in the input CSV. - example: 10 - type: integer - required: - - object - - id - - etag - - created_at - - account_id - - status - - total_count - - processed_count - - errors_count - - completet_at - - full_report_file - - errors_report_file - type: object - CampaignDeviceMetadata: - properties: - campaign: - description: The device's campaign ID - example: 015bf72fccda00000000000100100280 + x-nullable: true + display_name: + description: The display name for the tenant account. + example: ARM + maxLength: 100 type: string - created_at: - description: The time the campaign was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + email: + description: The company email address for this account. Required for commercial + accounts only. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ type: string - deployment_state: - description: The state of the update campaign on the device - enum: - - pending - - updated_connector_channel - - failed_connector_channel_update - - deployed - - manifestremoved - - deregistered + x-nullable: true + end_market: + description: The end market for this account. + example: IT + maxLength: 100 type: string - description: - description: Description - example: '' - maxLength: 2000 + x-nullable: true + expiration_warning_threshold: + description: Indicates how many days before account expiration a notification + email is sent. + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + idle_timeout: + description: The reference token expiration time in minutes for this account. + Between 1 and 120 minutes. + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + mfa_status: + description: The enforcement status of setting up the multi-factor authentication. + 'Enforced' means that setting up the MFA is required after login. 'Optional' + means that the MFA is not required. + enum: + - enforced + - optional type: string - device_id: - description: The device ID - example: 015c2fec9bba0000000000010010036f + x-nullable: true + notification_emails: + description: A list of notification email addresses. + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + password_policy: + $ref: '#/definitions/PasswordPolicy' + description: Password policy for this account. + x-nullable: true + password_recovery_expiration: + description: Indicates for how many minutes a password recovery email is valid. + format: int32 + maximum: 45 + minimum: 1 + type: integer + x-nullable: true + phone_number: + description: The phone number of a representative of the company. + example: +44 (1223) 400 400 + maxLength: 100 type: string - etag: - description: API resource entity version - example: '2017-05-22T12:37:58.753425Z' + x-nullable: true + postal_code: + description: The postal code part of the postal address. + example: CB1 9NJ + maxLength: 100 type: string - id: - description: The metadata record ID - example: 015c3029f6f7000000000001001000c3 + x-nullable: true + sales_contact: + description: Email address of the sales contact. + pattern: ^(?=.{3,254}$).+\@.+ type: string - mechanism: - description: How the firmware is delivered (connector or direct) - example: connector + x-nullable: true + state: + description: The state part of the postal address. + example: ' ' + maxLength: 100 type: string - mechanism_url: - description: The Device Management Connect URL - example: '' + x-nullable: true + type: object + ActiveDevicesCounter: + description: Active device count is the total number of unique active devices + connected to Device Management. A device is considered active when it has registered + at least once over a billing period. + format: int64 + minimum: 0 + type: integer + ActiveServicePackage: + description: An active service package. + properties: + created: + description: Service package creation time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time type: string - name: - description: The record name - example: default_object_name - maxLength: 128 + expires: + description: Service package expiration time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time type: string - object: - description: 'The entity name: always ''update-campaign-device-metadata''' - example: update-campaign-device-metadata + firmware_update_count: + description: Size of firmware update quota of this service package. + format: int32 + type: integer + grace_period: + description: Indicates whether the service package is in its grace period. + type: boolean + id: + description: ID of this service package. type: string - updated_at: - description: 'The record was modified in the database format: date-time' - example: '2017-05-22T12:37:58.776736Z' + modified: + description: Service package latest modified time in RFC3339 date-time with + millisecond accuracy and UTC time zone. format: date-time type: string - type: object - CampaignDeviceMetadataPage: - properties: - after: - description: The entity ID to fetch after the given one - example: 'null' - type: string - data: - description: A list of entities - items: - $ref: '#/definitions/CampaignDeviceMetadata' - type: array - has_more: - description: A flag indicating whether there are more results - example: 'false' - type: boolean - limit: - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. - example: '50' - maximum: 1000 - minimum: 2 - type: integer - object: - description: 'The entity name: always ''list''' - example: list + next_id: + description: Next service package ID if this service package has a pending + renewal, or null. type: string - order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + previous_id: + description: Previous service package ID or null. type: string - total_count: - description: The total number or records, if requested. It may be returned - also for small lists. - example: '1' - type: integer - type: object - CampaignMetrics: - properties: - created_at: - description: The time the metrics were created. - example: '2017-05-22T12:37:55.576563Z' + start_time: + description: Service package start time in RFC3339 date-time with millisecond + accuracy and UTC time zone. format: date-time type: string - failed_count: - description: Running total of devices that could not be updated. - example: '0' - format: int32 - type: integer - object: - description: 'Entity name: always ''update-campaign-metrics''' - example: update-campaign-metrics - type: string - pending_count: - description: Running total of devices that have yet to receive an update or - are applying an update. - example: '5' - format: int32 - type: integer - skipped_count: - description: Running total of devices that were skipped. - example: '5' - format: int32 - type: integer - success_count: - description: Running total of successfully updated devices. - example: '90' - format: int32 - type: integer - total_count: - description: Number of devices in the campaign. - example: '100' - format: int32 - type: integer + required: + - id + - created + - modified + - start_time + - expires + - firmware_update_count + - grace_period type: object - CertificateEnrollment: + ActiveSession: + description: Represents an active user session. properties: - certificate_name: - description: The certificate name. - example: customer.dlms - maxLength: 50 + account_id: + description: The UUID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string created_at: description: Creation UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + example: '2018-02-13T09:35:20Z' format: date-time type: string - device_id: - description: The device ID. - example: 01625daa23230a580a0100bd00000000 + ip_address: + description: IP address of the client. + example: 127.0.0.1 type: string - enroll_result: - description: The result of certificate enrollment request. - enum: - - success - - failure - example: success + login_time: + description: The login time of the user. + example: '2018-02-14T17:52:07Z' + format: date-time type: string - enroll_result_detail: - description: Additional information in case of failure. - example: The device is currently processing too many certificate renewals. + object: + description: 'Entity name: always ''user-session''' + enum: + - user-session type: string - enroll_status: - description: The status of certificate enrollment request. + reference_token: + description: The reference token. + example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk + type: string + user_agent: + description: User Agent header from the login request. + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + type: string + required: + - account_id + - ip_address + - login_time + - object + - reference_token + - user_agent + type: object + AggregatedQuotaUsageReport: + description: Aggregated quota usage entry. + properties: + account_id: + type: string + amount: + description: Amount of quota usage entry. Negative if quota consumption. + format: int64 + type: integer + campaign_name: + description: 'Campaign name of quota usage entry. + + Null if quota usage entry type is not `reservation` or `reservation release`.' + type: string + time: + description: Added time of quota usage entry in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + type: + description: Type of quota usage entry. enum: - - new - - completed + - reservation + - reservation_release + - reservation_termination + - package_renewal + - package_creation + - package_termination + - package_tokens_edit + type: string + required: + - account_id + - amount + - type + - time + type: object + AllServerCredentialsResponseData: + properties: + bootstrap: + $ref: '#/definitions/CredentialsResponseData' + lwm2m: + $ref: '#/definitions/CredentialsResponseData' + type: object + ApiKeyInfoReq: + description: Represents an API key in requests towards Device Management. + properties: + groups: + description: 'A list of group IDs this API key belongs to. + + Adding an API key to the ''Administrators'' group is restricted to administrators.' + items: + type: string + type: array + name: + description: The display name for the API key. + maxLength: 100 + type: string + owner: + description: The owner of this API key. Only an administrator can set the + owner of an API key. + type: string + status: + description: The status of the API key. Only an administrator can set the + status of an API key. + enum: + - ACTIVE + - INACTIVE + type: string + required: + - name + type: object + ApiKeyInfoResp: + description: Represents an API key in Device Management. + properties: + account_id: + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + creation_time: + description: The timestamp of the API key creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + type: integer etag: - description: Entity instance signature. + description: API resource entity version. example: '1' type: string + groups: + description: A list of group IDs this API key belongs to. + items: + type: string + type: array id: - description: The certificate enrollment ID. - example: 01612df56f3b0a580a010fc700000000 + description: The ID of the API key. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + key: + description: The API key. + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + last_login_time: + description: The timestamp of the latest API key usage, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + name: + description: The display name for the API key. + example: API key gorgon + maxLength: 100 type: string object: + description: 'Entity name: always ''api-key''' enum: - - certificate-enrollment + - api-key + type: string + owner: + description: The owner of this API key, who is the creator by default. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + status: + description: The status of the API key. + enum: + - ACTIVE + - INACTIVE + example: ACTIVE type: string updated_at: - description: Update UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' format: date-time type: string required: - - created_at - etag - id - - device_id - - certificate_name + - key + - name + - object type: object - CertificateEnrollmentListResponse: + ApiKeyInfoRespList: properties: after: - description: The entity ID to fetch after the given one. - example: 01625daa23230a580a0100bd00000000 + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string data: - description: List of certificate enrollments. + description: A list of entities. items: - $ref: '#/definitions/CertificateEnrollment' + $ref: '#/definitions/ApiKeyInfoResp' type: array has_more: description: Flag indicating whether there are more results. + example: false type: boolean limit: - description: The number of results to return. + description: The number of results to return, or equal to `total_count`. + example: 50 format: int32 type: integer object: - description: Describes the type of objects in the list. + description: 'Entity name: always `list`.' enum: - list type: string order: - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' enum: - ASC - DESC type: string total_count: - description: The total number of records. + description: The total number of records, if requested. + example: 20 format: int32 type: integer + required: + - data + - has_more + - limit + - object + - total_count type: object - CertificateGenerationReq: - description: Generate a new service provider certificate. + ApiKeyUpdateReq: + description: Represents an API key in requests towards Device Management. properties: - algorithm: - description: The algorithm and its key size used for generating the certificate. - Defaults to RSA2048. + groups: + description: A list of group IDs this API key belongs to. Only an administrator + can update the group membership of an API key. + items: + type: string + type: array + name: + description: The display name for the API key. + maxLength: 100 + type: string + owner: + description: The owner of this API key. Only an administrator can update the + owner of an API key. + type: string + status: + description: The status of the API key. Only the owner of the API key or an + administrator can update the status of an API key. enum: - - RSA2048 - - RSA3072 - - EC224 - - EC256 - - EC384 - - EC521 - - ECDSA224 - - ECDSA256 - - ECDSA384 - - ECDSA521 + - ACTIVE + - INACTIVE type: string - validity: - description: Validity for the certificate in days. - format: int32 - type: integer type: object - CertificateIssuerConfigListResponse: + Application: + description: Represents an application in Device Management. properties: - after: &id001 - description: An offset token for current page. - example: '01631667477600000000000100100374' + account_id: + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true type: string - data: - description: List of certificate issuers. + created_at: + description: Creation UTC time RFC3339. + example: '2020-02-18T09:16:40Z' + format: date-time + readOnly: true + type: string + description: + description: The description of the application. + example: Application to control the warp drive + maxLength: 500 + type: string + etag: + description: API resource entity version. + example: '1' + readOnly: true + type: string + groups: + description: A list of group IDs this application belongs to. items: - $ref: '#/definitions/CertificateIssuerConfigResponse' + example: 01705c6383f6c85b76f92f4e00000000 + type: string type: array - has_more: &id002 - description: Are there more results available. - example: false - type: boolean - limit: &id003 - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. - example: 50 - maximum: 1000 - minimum: 2 - type: integer - object: &id004 - description: The type of this API object is a `list`. - example: list - type: string - order: &id005 - description: The creation time based order of the entries. - example: DESC - type: string - total_count: &id006 - example: 1 - format: integer - type: integer - type: object - CertificateIssuerConfigRequest: - properties: - certificate_issuer_id: - description: 'Certificate issuer ID. - - For LwM2M, may be null if Device Management internal certificate issuer - is used.' - example: 01648415a2a30242ac18000500000000 - type: string - x-nullable: true - type: object - CertificateIssuerConfigResponse: - properties: - certificate_issuer_id: - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - example: 01648415a2a30242ac18000500000000 + id: + description: The ID of the application. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true type: string - x-nullable: true - created_at: - description: Created UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + last_used_at: + description: The time of the latest application usage. + example: '2020-02-14T15:24:14Z' format: date-time + readOnly: true type: string - etag: - description: Entity instance signature. - example: '1' - type: string - id: - description: 'The ID of the certificate issuer configuration. - - ' - example: 01648415a2a30242ac18000500000000 + name: + description: The display name for the application. + example: Application warp + maxLength: 100 type: string - is_custom: - example: true - type: boolean object: + description: 'Entity name: always ''application''' enum: - - certificate-issuer-configuration + - application + readOnly: true type: string - reference: - description: The certificate name to which the certificate issuer configuration - applies. - example: customer.dlms + status: + description: The status of the application. When admin sets the application + as inactive all related data and configurations are cleared from the system. + If application is activated again, client must open new channels and set + new subscriptions to start receiving events again. + enum: + - ACTIVE + - INACTIVE + example: ACTIVE type: string updated_at: - description: Updated UTC time RFC3339. - example: '2017-02-01T00:00:00Z' + description: Last update UTC time RFC3339. + example: '2020-02-19T11:54:32Z' format: date-time + readOnly: true type: string + required: + - name type: object - CertificateIssuerInfo: + ApplicationList: properties: - created_at: - description: Creation UTC time RFC3339. - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - description: - description: General description for the certificate issuer. - example: GlobalSign sample issuer - maxLength: 100 - type: string - x-nullable: true - etag: - description: Entity instance signature. - example: '1' - type: string - id: - description: The ID of the certificate issuer. - example: 01234567890ABCDEF01234567890ABCDEF + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - issuer_attributes: - additionalProperties: &id007 - type: string - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - example: &id008 {} - type: object - issuer_type: - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" + data: + description: A list of entities. + items: + $ref: '#/definitions/Application' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return, or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' enum: - - GLOBAL_SIGN - - CFSSL_AUTH - example: GLOBAL_SIGN - type: string - name: - description: Certificate issuer name, unique per account. - example: GS Issuer - maxLength: 50 + - list type: string - object: + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' enum: - - certificate-issuer + - ASC + - DESC type: string + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer required: - - issuer_type - type: object - CertificateIssuerInfoListResponse: - properties: - after: *id001 - data: - description: List of certificate issuers. - items: - $ref: '#/definitions/CertificateIssuerInfo' - type: array - has_more: *id002 - limit: *id003 - object: *id004 - order: *id005 - total_count: *id006 + - data + - has_more + - limit + - object + - total_count type: object - CertificateIssuerRequest: - example: - description: Sample GlobalSign certificate issuer. - issuer_attributes: null - issuer_credentials: - api_key: e510e289e6cd8947 - api_secret: a477a8393d17a55ecb2ba6a61f58feb84770b621 - client_certificate: '"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END - CERTIFICATE-----" - - ' - passphrase: helloworld - private_key: '"-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: - DES-EDE3-CBC,CCAC26A4133947CB\n\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\n-----END - RSA PRIVATE KEY-----"' - issuer_type: GLOBAL_SIGN - name: GS Issuer + ArchiveInfoResponse: + description: This object represents the response for the archive info request. properties: - description: - description: General description of the certificate issuer. - maxLength: 100 + download_size_bytes: + description: The size of the archive file in bytes. + example: 2402668 + type: integer + download_url: + description: URL to download the Factory Configurator Utility archive. + example: https://api.us-east-1.mbedcloud.com/downloads/fcu/factory_configurator_utility.zip type: string - x-nullable: true - issuer_attributes: - additionalProperties: *id007 - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - example: *id008 - type: object - issuer_credentials: - additionalProperties: &id009 - type: string - description: 'The credentials required for connecting to the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials. - - ' - example: &id010 {} - type: object - issuer_type: - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" - enum: - - GLOBAL_SIGN - - CFSSL_AUTH + license_type: + description: The license agreement type required for downloading Factory Configurator + Utility. + example: fcu type: string - name: - description: Certificate issuer name, unique per account. - maxLength: 50 + license_version: + description: The license agreement version required for downloading Factory + Configurator Utility. + example: '1.0' type: string - required: - - name - - issuer_type - - issuer_credentials - type: object - CertificateIssuerUpdateRequest: - example: - description: Sample GlobalSign certificate issuer - updated. - name: GlobalSign Issuer - properties: - description: - description: General description of the certificate issuer. - maxLength: 100 + release_notes_url: + description: URL to the Factory Configurator Utility release notes. + example: https://api.us-east-1.mbedcloud.com/downloads/fcu/release_notes type: string - x-nullable: true - issuer_attributes: - additionalProperties: *id007 - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - example: *id008 - type: object - issuer_credentials: - additionalProperties: *id009 - description: 'The credentials required for connecting to the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials. - - ' - example: *id010 - type: object - name: - description: Certificate issuer name. - maxLength: 50 + version: + description: The Factory Configurator Utility version. + example: 1.2.9.500 type: string + required: + - download_size_bytes + - version + - download_url + - release_notes_url type: object - CertificateIssuerVerifyResponse: + AsyncID: properties: - message: - description: 'Provides details in case of failure. - - ' - example: message describing the verification failure + async-response-id: + description: Asynchronous response unique ID. + example: 9e3c96b8-c4d7-496a-ab90-cc732b9b560e type: string - successful: - description: 'Indicates whether the certificate issuer was verified successfully. - - ' - example: false - type: boolean type: object - CfsslAttributes: - description: 'Describes the attributes required to connect to the CFSSL server. - - ' + AsyncIDResponse: properties: - cfssl_label: - description: 'The label that is used by CFSSL when creating the certificate. - - ' + ct: + description: The content type. + example: text/plain type: string - cfssl_profile: - description: 'The profile that is configured on the CFSSL server and is used - by CFSSL when creating the certificate. + error: + description: 'An optional error message describing the error. Please refer + to status listing above. ' + example: TIMEOUT type: string - host_url: - description: 'The URL to connect to the CFSSL server. - - ' - type: string - required: - - host_url - type: object - CfsslAuthCredentials: - description: 'Describes the credentials required when using CFSSL authenticated - signing. - - ' - properties: - hmac_hex_key: - description: 'The key that is used to compute the HMAC of the request using - the HMAC-SHA-256 algorithm. - - Must contain an even number of hexadecimal characters. - - ' - example: 0010203ABCD708EF - maxLength: 64 - pattern: ^([a-fA-F0-9][a-fA-F0-9]){1,32}$ - type: string - required: - - hmac_hex_key - type: object - ChannelMetadata: - properties: - delivery_mechanism: - description: Channel delivery mechanism. - enum: - - CALLBACK - - LONG_POLLING - - WEB_SOCKET - example: CALLBACK - type: string - type: object - CreateCertificateIssuerConfig: - properties: - certificate_issuer_id: - description: 'The ID of the certificate issuer. - - ' - example: 01648415a2a30242ac18000500000000 - maxLength: 32 - type: string - x-nullable: true - reference: - description: 'The certificate name, as created in the factory, to which the - certificate issuer configuration applies. - - The following names are reserved and cannot be configured: LwM2M, BOOTSTRAP. - - ' - example: customer.dlms - maxLength: 100 - pattern: (?!mbed\.)[\w-_.]{1,100} + id: + description: The unique ID of the asynchronous response. + example: 9e3c96b8-c4d7-496a-ab90-cc732b9b560e type: string - required: - - reference - - certificate_issuer_id - type: object - CredentialsResponseData: - properties: - certificate: - description: PEM-format X.509 server certificate used to validate the server - certificate received during the TLS/DTLS handshake. + max-age: + description: Determines how long this value stays valid in the cache, in seconds. + 0 means that the value is not stored in the cache. + example: 60 type: string - url: - description: Server URI that the client connects to. + payload: + description: Requested data, base64 encoded. + example: My4zMQ== type: string + status: + description: "\nStates whether sending a command to the device succeeded or\ + \ failed.\n\n\n \n \n \n \n\ + \ \n \n \n \n \n\ + \ \n \n \n \n\ + \ \n\ + \ \n \n \n \n \n \n\ + \ \n \n \n \n \n \n \ + \ \n \n \n \n \n \n\ + \ \n \n \n \n \n\ + \ \n\ + \ \n \n \n \n\ + \ \n \n \n \n \n \n
CodeDescription
200Operation succeeded. The payload contains result of the operation\ + \ from the device.
400The device rejected the request, possibly because it does not\ + \ support the request method.\n See how the supported methods are\n\ + \ [configured for the device resources](https://www.pelion.com/docs/device-management/current/resources/index.html).
404The device replied\ + \ that it does not have the requested resource.
412Precondition failed and the operation\ + \ was not executed. The device responded with 4.12 CoAP\n response\ + \ code. The device may reject a subscription request with this response\ + \ code.
413Request\ + \ entity is too large and could not be delivered to the device.
415The device does\ + \ not support the media type in the request.
429An expired request was removed from\ + \ queue (REQUEST_EXPIRED),\n the device requested deregistration (DEVICE_REMOVED_REGISTRATION),\n\ + \ or the device was suspended (DEVICE_BLOCKED). The request was never\ + \ delivered to the device.
502The request to the device failed and the retry count was exceeded.\n\ + \ The last retry failed to establish TCP or TLS connection to the device.
503The request to\ + \ the device failed and the retry count was exceeded.\n The last retry\ + \ failed because the device is currently unavailable (NOT_CONNECTED).
504The request to\ + \ the device failed and the retry count was exceeded.\n The last retry\ + \ failed because the device did not respond in time according to the protocol-specific\n\ + \ retransmission logic (TIMEOUT).
\n" + example: 200 + type: integer type: object - DenialAttemptsResponse: + AudienceItem: + description: Audience item, device ID or endpoint name. + pattern: ^ep:[a-zA-Z0-9 -]{1,57}$|^id:[0-9a-fA-F]{32}$ + type: string + BadRequestErrorResponse: + description: 400 Bad request response. properties: - after: - description: An offset token for current page. - type: string - data: + code: + description: Response code. Always set to 400. + enum: + - 400 + type: integer + fields: items: - $ref: '#/definitions/BlackListedDeviceData' + $ref: '#/definitions/BadRequestErrorResponseField' type: array - has_more: - description: Are there more results available. - example: false - type: boolean - limit: - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. - example: 50 - maximum: 1000 - minimum: 2 - type: integer + message: + description: A human-readable message with detailed info. + type: string object: - description: The type of this API object is a "list". - example: list + description: Always set to `error`. + enum: + - error type: string - order: - description: The creation time based order of the entries. + request_id: + description: Request ID. + type: string + type: + description: Error type. Always set to `validation_error`. enum: - - ASC - - DESC - example: DESC + - validation_error type: string - total_count: - example: 1 - format: integer - type: integer required: - object - - data + - message + - request_id + - type + - code + - fields type: object - DeveloperCertificateRequestData: + BadRequestErrorResponseField: + description: Single field that failed validation. properties: - description: - description: Description for the developer certificate. Maximum 500 characters. - Please see [TrustedCertificateReq](../current/api-references/account-management-api.html#trustedcertificatereq). - maxLength: 500 + message: + description: A human-readable message with detailed validation error. type: string - x-nullable: true name: - description: Name of the developer certificate. Must be unique. Maximum 100 - characters. Please see [TrustedCertificateReq](../current/api-references/account-management-api.html#trustedcertificatereq). - maxLength: 100 + description: Name of the field that failed validation. If name is set to `body,` + then the validation failed on request body. type: string required: - name + - message type: object - DeveloperCertificateResponseData: + BillingReportRawDataResponse: + description: The response includes the URL to download raw billing data. properties: - account_id: - description: Account to which the developer certificate belongs. - type: string - created_at: - description: Creation UTC time RFC3339. - format: date-time - type: string - description: - description: Description for the developer certificate. - type: string - x-nullable: true - developer_certificate: - description: PEM-format X.509 developer certificate. - type: string - developer_private_key: - description: PEM-format developer private key associated with the certificate. - type: string - etag: - description: API resource entity version. - type: string - id: - description: ID that uniquely identifies the developer certificate. - type: string - name: - description: Name of the developer certificate. + filename: + description: The filename of the raw billing data file to download. Contains + file extensions. type: string object: - description: 'Entity name: always `trusted-cert`.' + description: API Resource name. type: string - security_file_content: - description: Content of the `security.c` file flashed to the device to provide - security credentials. + url: + description: The URL to download raw billing data. type: string + required: + - object + - url + - filename type: object - DeviceBlockCategory: + BootstrapRequestsCounter: + description: The number of bootstrap requests received from devices. + format: int64 + minimum: 0 + type: integer + BootstrapsCounter: + description: The total number of successful bootstrap operations in the requested + time. + format: int64 + minimum: 0 + type: integer + BrandingColor: properties: - description: - example: Suspended for maintenance. + color: + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' type: string + x-nullable: true object: - description: 'Entity name: always ''device-block-category''.' - example: device-block-category + description: 'Entity name: always ''branding_color''' + enum: + - branding_color + readOnly: true type: string reference: - example: maintenance + description: Color name. + enum: &id001 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color type: string updated_at: + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' format: date-time + readOnly: true type: string type: object - DeviceBlockCategoryPage: + BrandingColorList: properties: after: - description: An offset token for current page. + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string data: + description: A list of entities. items: - $ref: '#/definitions/DeviceBlockCategory' + $ref: '#/definitions/BrandingColor' type: array has_more: - description: More results are available. + description: Flag indicating whether there are more results. example: false type: boolean limit: - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + description: The number of results to return, or equal to `total_count`. example: 50 - maximum: 1000 - minimum: 2 + format: int32 type: integer object: - description: The type of this API object is 'list'. - example: list + description: 'Entity name: always `list`.' + enum: + - list type: string order: - description: Order of entries based on creation time. - example: DESC + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC type: string total_count: - example: 1 - format: integer + description: The total number of records, if requested. + example: 20 + format: int32 type: integer + required: + - data + - has_more + - limit + - object + - total_count type: object - DeviceData: + BrandingColorUpdate: properties: - account_id: - description: The ID of the associated account. - example: '00000000000000000000000000000000' - type: string - auto_update: - description: 'DEPRECATED: Mark this device for automatic firmware update.' - type: boolean - bootstrap_expiration_date: - description: The expiration date of the certificate used to connect to bootstrap - server. - format: date - type: string - x-nullable: true - bootstrapped_timestamp: - description: The timestamp of the device's most recent bootstrap process. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - description: The expiration date of the certificate used to connect to LwM2M - server. - format: date + color: + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' type: string x-nullable: true - created_at: - description: The timestamp of when the device was created in the device directory. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + reference: + description: Color name. + enum: *id001 type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - example: - key: value - maxProperties: 5 - type: object - deployed_state: - description: 'DEPRECATED: The state of the device''s deployment.' + required: + - reference + type: object + BrandingImage: + properties: + object: + description: 'Entity name: always ''branding_image''' enum: - - development - - production + - branding_image + readOnly: true type: string - deployment: - description: 'DEPRECATED: The last deployment used on the device.' - example: '' + reference: + description: Name of the image. + enum: &id026 + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 type: string - description: - description: The description of the device. - example: description - maxLength: 2000 + static_uri: + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true type: string - device_class: - description: An ID representing the model and hardware revision of the device. - example: '' - maxLength: 32 + updated_at: + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true type: string - device_execution_mode: &id011 - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ - \ execution mode (default if host_gateway invalid or not set). The device\ - \ firmware uses a certificate that is not identified as a developer or production\ - \ certificate.\n - 1 - Development device. The device firmware uses a developer\ - \ certificate to communicate with Device Management.\n - 5 - Production\ - \ device. The device firmware uses a factory-generated certificate to communicate\ - \ with Device Management." - enum: - - 0 - - 1 - - 5 - example: 0 + type: object + BrandingImageList: + properties: + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + data: + description: A list of entities. + items: + $ref: '#/definitions/BrandingImage' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return, or equal to `total_count`. + example: 50 + format: int32 type: integer - device_key: - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 + object: + description: 'Entity name: always `list`.' + enum: + - list type: string - endpoint_name: - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - readOnly: true + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC type: string - endpoint_type: - description: The endpoint type of the device. For example, the device is a - gateway. - example: '' - maxLength: 64 + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + BulkResponse: + properties: + account_id: + description: ID + example: 00005a4e027f0a580a01081c00000000 type: string - enrolment_list_timestamp: - description: The claim date/time. - example: '2017-05-22T12:37:55.576563Z' + completed_at: + description: 'The time the bulk creation task was completed. + + Null when creating bulk upload or delete.' format: date-time type: string - etag: - description: The entity instance signature. - example: '2017-05-22T12:37:55.576563Z' + created_at: + description: The time of receiving the bulk creation task. format: date-time type: string - firmware_checksum: - description: The SHA256 checksum of the current firmware image. - example: '0000000000000000000000000000000000000000000000000000000000000000' + errors_count: + description: The number of enrollment identities with failed processing. + example: 0 + type: integer + errors_report_file: + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv type: string - groups: - description: An array containing an ID of each group this device belongs to. - items: - example: '00000000000000000000000000000000' - type: string - type: array - host_gateway: - description: The ID of the host gateway, if appropriate. - example: '' + x-nullable: true + etag: + description: etag + example: '1' + pattern: '[A-Za-z0-9]{0,256}' + type: string + full_report_file: + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv type: string + x-nullable: true id: - description: The ID of the device. The device ID is used across all Device - Management APIs. - example: '00000000000000000000000000000000' + description: Bulk ID + pattern: ^[A-Za-z0-9]{32} type: string - issuer_fingerprint: &id012 - description: SHA256 fingerprint of the certificate used to validate the signature - of the device certificate. - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' + object: + enum: + - enrollment-identity-bulk-uploads + example: enrollment-identity-bulk-uploads type: string - x-nullable: true - last_operator_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' + processed_count: + description: The number of enrollment identities processed until now. + example: 0 + type: integer + status: + default: new + description: The state of the process is 'new' at the time of creation. If + creation is still in progress, the state shows as 'processing'. When the + request is fully processed, the state changes to 'completed'. + enum: + - new + - processing + - completed + example: new + total_count: + description: Total number of enrollment identities found in the input CSV. + example: 10 + type: integer + required: + - object + - id + - etag + - created_at + - account_id + - status + - total_count + - processed_count + - errors_count + - completet_at + - full_report_file + - errors_report_file + type: object + BusinessModel: + default: active_device_business_model + description: Business model for this account. Manageable by the root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + BusinessModelHistory: + properties: + business_model: + $ref: '#/definitions/BusinessModel' + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string - last_operator_suspended_description: - description: The most recent description why the device was suspended or returned - to service. - example: Suspended for maintenance. - maxLength: 2000 + type: object + CampaignDeviceMetadata: + properties: + campaign: + description: The device's campaign ID. + example: 015bf72fccda00000000000100100280 type: string - last_operator_suspended_updated_at: - description: The timestamp of the most recent suspension activity. + created_at: &id014 + description: The time the entity was created. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - last_system_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' + deployment_state: + description: The state of the update campaign on the device. + enum: + - pending + - updated_connector_channel + - failed_connector_channel_update + - deployed + - manifestremoved + - deregistered type: string - last_system_suspended_description: - description: The most recent description of why the device was blocked or - unblocked by the system. - example: A certificate in the device's certificate chain was blacklisted by - the system. + description: + description: Description. + example: a description maxLength: 2000 type: string - last_system_suspended_updated_at: - description: The timestamp of the most recent system block activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - lifecycle_status: - description: The lifecycle status of the device. - enum: - - enabled - - blocked - example: enabled + device_id: + description: The device ID. + example: 015c2fec9bba0000000000010010036f type: string - manifest: - description: 'DEPRECATED: The URL for the current device manifest.' - example: '' + etag: &id015 + description: API resource entity version. + example: '2017-05-22T12:37:58.753425Z' type: string - manifest_timestamp: - description: The timestamp of the current manifest version. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + id: + description: The metadata record ID. + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' type: string mechanism: - description: The ID of the channel used to communicate with the device. - enum: - - connector - - direct + description: How the firmware is delivered (connector or direct). + example: connector type: string mechanism_url: - description: The address of the connector to use. - example: '' + description: The Device Management Connect URL. type: string name: - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 + default: default_object_name + description: The record name. maxLength: 128 type: string object: - description: The API resource entity. - example: device + description: 'The entity name: always ''update-campaign-device-metadata''.' + example: update-campaign-device-metadata type: string - operator_suspended: - description: Is the device suspended by the operator? + updated_at: &id016 + description: The time the entity was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: object + CampaignDeviceMetadataPage: + properties: + after: + description: The entity ID to fetch after the given one. + example: 'null' + type: string + data: + description: A list of entities. + items: + $ref: '#/definitions/CampaignDeviceMetadata' + type: array + has_more: + description: A flag indicating whether there are more results. + example: 'false' type: boolean - serial_number: - description: The serial number of the device. - example: 00000000-0000-0000-0000-000000000000 + limit: + description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to + the closest limit. + example: '50' + maximum: 1000 + minimum: 2 + type: integer + object: + description: 'The entity name: always ''list''.' + example: list type: string - state: - description: The current state of the device. + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - ASC + - DESC + example: ASC type: string - system_suspended: - description: Is the device suspended by the system? - type: boolean - updated_at: - description: The time the object was updated. + total_count: + description: The total number or records, if requested. It may be returned + also for small lists. + example: '1' + type: integer + type: object + CampaignMetrics: + properties: + created_at: + description: The time the metrics were created. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - vendor_id: - description: The device vendor ID. - example: 00000000-0000-0000-0000-000000000000 + failed_count: + description: Running total of devices that could not be updated. + example: '0' + format: int32 + type: integer + object: + description: 'Entity name: always ''update-campaign-metrics''.' + example: update-campaign-metrics type: string - DeviceDataPostRequest: + pending_count: + description: Running total of devices that have yet to receive an update or + are applying an update. + example: '5' + format: int32 + type: integer + skipped_count: + description: Running total of devices that were skipped. + example: '5' + format: int32 + type: integer + success_count: + description: Running total of successfully updated devices. + example: '90' + format: int32 + type: integer + total_count: + description: Number of devices in the campaign. + example: '100' + format: int32 + type: integer + type: object + CertificateEnrollment: properties: - auto_update: - description: 'DEPRECATED: Mark this device for automatic firmware update.' - type: boolean - bootstrap_expiration_date: - description: The expiration date of the certificate used to connect to bootstrap - server. - example: '2017-05-22' - format: date - type: string - x-nullable: true - ca_id: - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 + certificate_name: + description: The certificate name. + example: customer.dlms + maxLength: 50 type: string - connector_expiration_date: - description: The expiration date of the certificate used to connect to the - LwM2M server. - example: '2017-05-22' - format: date + created_at: + description: Creation UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time type: string - x-nullable: true - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - example: - key: value - maxProperties: 5 - type: object - deployment: - description: 'DEPRECATED: The last deployment used on the device.' - example: '' + device_id: + description: The device ID. + example: 01625daa23230a580a0100bd00000000 type: string - description: - description: The description of the device. - example: '' - maxLength: 2000 - type: string - device_class: - description: An ID representing the model and hardware revision of the device. - maxLength: 32 - type: string - device_execution_mode: *id011 - device_key: - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 64 - type: string - endpoint_type: - description: The endpoint type of the device. For example, the device is a - gateway. - example: '' - maxLength: 64 - type: string - host_gateway: - description: The ID of the host gateway, if appropriate. - example: '' + enroll_result: + description: The result of certificate enrollment request. + enum: + - success + - failure + example: success type: string - issuer_fingerprint: *id012 - manifest: - description: 'DEPRECATED: The URL for the current device manifest.' - example: '' + enroll_result_detail: + description: Additional information in case of failure. + example: The device is currently processing too many certificate renewals. type: string - mechanism: - description: The ID of the channel used to communicate with the device. + enroll_status: + description: The status of certificate enrollment request. enum: - - connector - - direct - type: string - mechanism_url: - description: The address of the connector to use. - example: '' + - new + - completed type: string - name: - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + etag: + description: Entity instance signature. + example: '1' type: string - serial_number: - description: The serial number of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 64 + id: + description: The certificate enrollment ID. + example: 01612df56f3b0a580a010fc700000000 type: string - state: - description: The current state of the device. + object: enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - certificate-enrollment type: string - vendor_id: - description: The device vendor ID. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 255 + updated_at: + description: Update UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time type: string - DeviceDataPutRequest: + required: + - created_at + - etag + - id + - device_id + - certificate_name + type: object + CertificateEnrollmentListResponse: properties: - auto_update: - description: 'DEPRECATED: Mark this device for automatic firmware update.' - type: boolean - ca_id: - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - example: - key: value - maxProperties: 5 - type: object - description: - description: The description of the device. - example: '' - maxLength: 2000 - type: string - device_key: - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 64 - readOnly: true + after: + description: The entity ID to fetch after the given one. + example: 01625daa23230a580a0100bd00000000 type: string - endpoint_type: - description: The endpoint type of the device. For example, the device is a - gateway. - example: '' - maxLength: 64 + data: + description: List of certificate enrollments. + items: + $ref: '#/definitions/CertificateEnrollment' + type: array + has_more: + description: Flag indicating whether there are more results. + type: boolean + limit: + description: The number of results to return. + format: int32 + type: integer + object: + description: Describes the type of objects in the list. + enum: + - list type: string - host_gateway: - description: The ID of the host gateway, if appropriate. - example: '' + order: + description: 'Record order based on creation time. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC type: string - name: - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + total_count: + description: The total number of records. + format: int32 + type: integer + type: object + CertificateGenerationReq: + description: Generate a new service provider certificate. + properties: + algorithm: + description: The algorithm and its key size used for generating the certificate. + Defaults to RSA2048. + enum: + - RSA2048 + - RSA3072 + - EC224 + - EC256 + - EC384 + - EC521 + - ECDSA224 + - ECDSA256 + - ECDSA384 + - ECDSA521 type: string - DeviceEqNeqFilter: + validity: + description: Validity for the certificate in days. + format: int32 + type: integer + type: object + CertificateIssuerConfigListResponse: properties: - account_id: + after: &id002 + description: An offset token for current page. + example: '01631667477600000000000100100374' type: string - auto_update: + data: + description: List of certificate issuers. + items: + $ref: '#/definitions/CertificateIssuerConfigResponse' + type: array + has_more: &id003 + description: More results are available. + example: false type: boolean - bootstrap_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + limit: &id004 + description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. + example: 50 + maximum: 1000 + minimum: 2 + type: integer + object: &id005 + description: The type of this API object is `list`. + example: list type: string - bootstrapped_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + order: &id006 + description: Record order based on creation time. + example: DESC type: string - ca_id: + total_count: &id007 + example: 1 + format: integer + type: integer + type: object + CertificateIssuerConfigRequest: + properties: + certificate_issuer_id: + description: 'Certificate issuer ID. + + For LwM2M, may be null if Device Management internal certificate issuer + is used.' + example: 01648415a2a30242ac18000500000000 type: string - connector_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + type: object + CertificateIssuerConfigResponse: + properties: + certificate_issuer_id: + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + example: 01648415a2a30242ac18000500000000 type: string + x-nullable: true created_at: - example: '2017-05-22T12:37:55.576563Z' + description: Created UTC time RFC3339. + example: '2017-01-01T00:00:00Z' format: date-time type: string - custom_attributes: - additionalProperties: - type: string - type: object - deployed_state: + etag: + description: Entity instance signature. + example: '1' type: string - deployment: + id: + description: Certificate issuer ID. configuration. + example: 01648415a2a30242ac18000500000000 type: string - description: - type: string - device_class: - type: string - device_execution_mode: - type: integer - device_key: - type: string - endpoint_name: - type: string - endpoint_type: - type: string - enrolment_list_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - firmware_checksum: - type: string - host_gateway: - type: string - id: - type: string - manifest: - type: string - manifest_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - mechanism: - type: string - mechanism_url: - type: string - name: - type: string - serial_number: + is_custom: + example: true + type: boolean + object: + enum: + - certificate-issuer-configuration type: string - state: + reference: + description: The certificate name to which the certificate issuer configuration + applies. + example: customer.dlms type: string updated_at: - example: '2017-05-22T12:37:55.576563Z' + description: Updated UTC time RFC3339. + example: '2017-02-01T00:00:00Z' format: date-time type: string - vendor_id: - type: string type: object - DeviceEventData: + CertificateIssuerInfo: properties: - changes: - additionalProperties: - type: object - example: {} - type: object - x-deprecation: - comment: This field is not used. - end_of_life_at: '2020-01-15T14:55:20+00:00' - issued_at: '2019-01-15T14:55:20+00:00' - links: [] created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - data: - additionalProperties: - type: string - description: Additional data relevant to the event. - example: - campaign_id: '00000000000000000000000000000000' - type: object - date_time: - example: '2017-05-22T12:37:55.576563Z' + description: Creation UTC time RFC3339. + example: '2017-01-01T00:00:00Z' format: date-time type: string description: - example: Device record created - type: string - device_id: - example: '00000000000000000000000000000000' + description: General description for the certificate issuer. + example: GlobalSign sample issuer + maxLength: 100 type: string + x-nullable: true etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - event_type: - description: Event code - example: UPD2_100 - maxLength: 100 + description: Entity instance signature. + example: '1' type: string - event_type_category: - description: Category code which groups the event type by a summary category. - example: FAIL_MANIFEST_REJECTED + id: + description: Certificate issuer ID. + example: 01234567890ABCDEF01234567890ABCDEF type: string - event_type_description: - description: Generic description of the event. - example: FAIL + issuer_attributes: + additionalProperties: &id008 + type: string + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + example: &id009 {} + type: object + issuer_type: + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are\ + \ issued by GlobalSign service. You must provide your own GlobalSign account\ + \ credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ + \ signing service.\n You must provide your own CFSSL host_url and credentials." + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + example: GLOBAL_SIGN type: string - id: - example: '00000000000000000000000000000000' + name: + description: Certificate issuer name, unique per account. + example: GS Issuer + maxLength: 50 type: string object: - description: The API resource entity. - example: device-event + enum: + - certificate-issuer type: string - state_change: - type: boolean required: - - date_time - - id - DeviceEventEqNeqFilter: + - issuer_type + type: object + CertificateIssuerInfoListResponse: + properties: + after: *id002 + data: + description: List of certificate issuers. + items: + $ref: '#/definitions/CertificateIssuerInfo' + type: array + has_more: *id003 + limit: *id004 + object: *id005 + order: *id006 + total_count: *id007 + type: object + CertificateIssuerRequest: + example: + description: Sample GlobalSign certificate issuer. + issuer_attributes: null + issuer_credentials: + api_key: e510e289e6cd8947 + api_secret: a477a8393d17a55ecb2ba6a61f58feb84770b621 + client_certificate: '"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END + CERTIFICATE-----" + + ' + passphrase: helloworld + private_key: '"-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: + DES-EDE3-CBC,CCAC26A4133947CB\n\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\n-----END + RSA PRIVATE KEY-----"' + issuer_type: GLOBAL_SIGN + name: GS Issuer properties: - date_time: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string description: + description: General description of the certificate issuer. + maxLength: 100 type: string - device_id: - type: string - event_type: - type: string - id: + x-nullable: true + issuer_attributes: + additionalProperties: *id008 + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + example: *id009 + type: object + issuer_credentials: + additionalProperties: &id010 + type: string + description: 'The credentials required to connect to the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.' + example: &id011 {} + type: object + issuer_type: + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are\ + \ issued by GlobalSign service. You must provide your own GlobalSign account\ + \ credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ + \ signing service.\n You must provide your own CFSSL host_url and credentials." + enum: + - GLOBAL_SIGN + - CFSSL_AUTH type: string - state_change: - type: boolean - DeviceEventGteLteFilter: - properties: - date_time: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + name: + description: Certificate issuer name, unique per account. + maxLength: 50 type: string - DeviceEventInNinFilter: + required: + - name + - issuer_type + - issuer_credentials + type: object + CertificateIssuerUpdateRequest: + example: + description: Sample GlobalSign certificate issuer - updated. + name: GlobalSign Issuer properties: - date_time: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string description: + description: General description of the certificate issuer. + maxLength: 100 type: string - device_id: - type: string - event_type: - type: string - id: + x-nullable: true + issuer_attributes: + additionalProperties: *id008 + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + example: *id009 + type: object + issuer_credentials: + additionalProperties: *id010 + description: 'The credentials required to connect to the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.' + example: *id011 + type: object + name: + description: Certificate issuer name. + maxLength: 50 type: string - state_change: - type: boolean - DeviceEventPage: + type: object + CertificateIssuerVerifyResponse: properties: - after: - example: null + message: + description: Provides details in case of failure. + example: Message describing the verification failure type: string - data: - example: '[]' - items: - $ref: '#/definitions/DeviceEventData' - type: array - has_more: + successful: + description: Indicates whether the certificate issuer was verified successfully. example: false type: boolean - limit: - example: 1000 - type: integer - object: - example: list + type: object + CfsslAttributes: + description: Describes the attributes required to connect to the CFSSL server. + properties: + cfssl_label: + description: The label that is used by CFSSL when creating the certificate. type: string - order: - example: DESC + cfssl_profile: + description: The profile that is configured on the CFSSL server and used by + CFSSL when creating the certificate. type: string - total_count: - example: 1 - type: integer - DeviceGroup: + host_url: + description: The URL to connect to the CFSSL server. + example: http://my.cfssl.service:5555 + type: string + required: + - host_url + type: object + CfsslAuthCredentials: + description: Describes the credentials required when using CFSSL authenticated + signing. + properties: + hmac_hex_key: + description: 'The key that is used to compute the HMAC of the request using + the HMAC-SHA-256 algorithm. + + Must contain an even number of hexadecimal characters.' + example: 0010203ABCD708EF + maxLength: 64 + pattern: ^([a-fA-F0-9][a-fA-F0-9]){1,32}$ + type: string + required: + - hmac_hex_key + type: object + ChannelMetadata: + properties: + delivery_mechanism: + description: Channel delivery mechanism. + enum: + - CALLBACK + - LONG_POLLING + - WEB_SOCKET + example: CALLBACK + type: string + type: object + CreateCertificateIssuerConfig: + properties: + certificate_issuer_id: + description: Certificate issuer ID. + example: 01648415a2a30242ac18000500000000 + maxLength: 32 + type: string + x-nullable: true + reference: + description: 'The certificate name, as created in the factory, to which the + certificate issuer configuration applies. + + The following names are reserved and cannot be configured: LwM2M, BOOTSTRAP.' + example: customer.dlms + maxLength: 100 + pattern: (?!mbed\.)[\w-_.]{1,100} + type: string + required: + - reference + - certificate_issuer_id + type: object + CreateTrustAnchorRequest: + properties: + description: + description: The description of the new trust anchor key pair. + format: Free text + maxLength: 256 + minLength: 1 + type: string + required: + - description + type: object + CreateTrustAnchorResponse: + properties: + created_at: &id017 + description: Creation UTC time. + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + description: + description: Notes about the trust anchor. + format: free text + maxLength: 256 + minLength: 1 + type: string + etag: &id018 + description: Entity instance signature, 1 or Unix timestamp of last customer + update. + example: '1' + type: string + fingerprint: + description: The SHA256 of the trust anchor public key; the prefix 'mbed.ta.' + followed by the trust anchor public key as a SHA256 hash in Base64-encoded + DER format. + format: byte + type: string + id: &id019 + description: The ID of the entity. + example: 01612df56f3b0a580a010fc700000000 + pattern: '[A-Fa-f0-9]{32}' + type: string + object: &id020 + description: The API resource entity + example: trust-anchor + type: string + public_key: + description: The generated trust anchor public key in PEM format. + format: byte + type: string + public_key_der: + description: The generated trust anchor public key in Base64-encoded DER format. + format: byte + type: string + updated_at: &id021 + description: Update UTC time. + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + type: object + CredentialsResponseData: + properties: + certificate: + description: PEM-format X.509 server certificate used to validate the server + certificate received during the TLS/DTLS handshake. + type: string + url: + description: Server URI that the client connects to. + type: string + type: object + DeveloperCertificateRequestData: + properties: + description: + description: Description for the developer certificate. Maximum 500 characters. + Please see [TrustedCertificateReq](https://www.pelion.com/docs/device-management-api/account-management/). + maxLength: 500 + type: string + x-nullable: true + name: + description: Name of the developer certificate. Must be unique. Maximum 100 + characters. Please see [TrustedCertificateReq](https://www.pelion.com/docs/device-management-api/account-management/). + maxLength: 100 + type: string + required: + - name + type: object + DeveloperCertificateResponseData: properties: + account_id: + description: Account to which the developer certificate belongs. + type: string created_at: - description: The time the campaign was created. - example: '2017-05-22T12:37:55.576563Z' + description: Creation UTC time RFC3339. format: date-time type: string - custom_attributes: &id022 - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to ten custom key-value attributes. Keys cannot begin with - a number. Both key and value are limited to 128 characters. Updating this - field replaces existing contents. - example: - key: value - maxProperties: 10 - type: object - description: &id023 - description: The description of the group. - example: Devices on the factory floor. - maxLength: 2000 + description: + description: Description for the developer certificate. + type: string + x-nullable: true + developer_certificate: + description: PEM-format X.509 developer certificate. + type: string + developer_private_key: + description: PEM-format developer private key associated with the certificate. type: string - devices_count: - description: The number of devices in this group. - example: 10 - type: integer etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + description: API resource entity version. type: string id: - description: The group ID. - example: 015c3029f6f7000000000001001000c3 + description: ID that uniquely identifies the developer certificate. type: string - name: &id024 - description: Name of the group. - example: My devices - maxLength: 128 + name: + description: Name of the developer certificate. type: string object: - description: 'Entity name: always `device-group`.' - example: device-group + description: 'Entity name: always `trusted-cert`.' type: string - updated_at: - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + security_file_content: + description: Content of the `security.c` file flashed to the device to provide + security credentials. type: string type: object - DeviceGroupManipulation: + DeviceBlockCategory: properties: - device_id: - example: '00000000000000000000000000000000' + description: + example: Suspended for maintenance. + type: string + object: + description: 'Entity name: always ''device-block-category''.' + example: device-block-category + type: string + reference: + example: maintenance + type: string + updated_at: + format: date-time type: string - required: - - device_id type: object - DeviceGroupPage: + DeviceBlockCategoryPage: properties: after: description: An offset token for current page. - example: '01631667477600000000000100100374' type: string data: items: - $ref: '#/definitions/DeviceGroup' + $ref: '#/definitions/DeviceBlockCategory' type: array has_more: description: More results are available. @@ -2915,7 +3044,7 @@ definitions: example: list type: string order: - description: Record order based on creation time. + description: Order of entries based on creation time. example: DESC type: string total_count: @@ -2923,253 +3052,636 @@ definitions: format: integer type: integer type: object - DeviceGteLteFilter: - properties: - bootstrap_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - bootstrapped_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - connector_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - enrolment_list_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - manifest_timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - type: object - DeviceInNinFilter: + DeviceData: properties: account_id: + description: The ID of the associated account. + example: '00000000000000000000000000000000' type: string auto_update: + description: 'DEPRECATED: Mark this device for automatic firmware update.' type: boolean bootstrap_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + description: The expiration date of the certificate used to connect to bootstrap + server. + format: date type: string + x-nullable: true bootstrapped_timestamp: + description: The timestamp of the device's most recent bootstrap process. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string ca_id: + description: The certificate issuer's ID. + example: '00000000000000000000000000000000' + maxLength: 500 type: string + component_attributes: + additionalProperties: + maxLength: 128 + type: string + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 10 + type: object connector_expiration_date: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + description: The expiration date of the certificate used to connect to LwM2M + server. + format: date type: string + x-nullable: true created_at: + description: The timestamp of when the device was created in the device directory. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string custom_attributes: additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* type: string - type: object - deployed_state: + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 5 + type: object + deployed_state: + description: 'DEPRECATED: The state of the device''s deployment.' + enum: + - development + - production type: string deployment: + description: 'DEPRECATED: The last deployment used on the device.' + example: '' type: string description: + description: The description of the device. + example: Temperature measuring device + maxLength: 2000 type: string device_class: + description: An ID representing the model and hardware revision of the device. + example: '' + maxLength: 32 type: string - device_execution_mode: + device_execution_mode: &id012 + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ + \ execution mode (default if host_gateway invalid or not set). The device\ + \ firmware uses a certificate that is not identified as a developer or production\ + \ certificate.\n - 1 - Development device. The device firmware uses a developer\ + \ certificate to communicate with Device Management.\n - 5 - Production\ + \ device. The device firmware uses a factory-generated certificate to communicate\ + \ with Device Management." + enum: + - 0 + - 1 + - 5 + example: 0 type: integer device_key: + description: The fingerprint of the device certificate. + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 type: string endpoint_name: + description: The endpoint name given to the device. The endpoint_name is from + the device certificate and is set by factory tool. + example: 00000000-0000-0000-0000-000000000000 + readOnly: true type: string endpoint_type: + description: The endpoint type of the device. For example, the device is a + gateway. + example: '' + maxLength: 64 type: string enrolment_list_timestamp: + description: The claim date/time. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string etag: + description: The entity instance signature. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string firmware_checksum: + description: The SHA256 checksum of the current firmware image. + example: '0000000000000000000000000000000000000000000000000000000000000000' type: string + groups: + description: An array containing an ID of each group this device belongs to. + items: + example: '00000000000000000000000000000000' + type: string + type: array host_gateway: + description: The ID of the host gateway, if appropriate. A device behind Edge + has this host_gateway set. + example: '' type: string id: + description: The ID of the device. The device ID is used across all Device + Management APIs. + example: '00000000000000000000000000000000' + type: string + issuer_fingerprint: &id013 + description: SHA256 fingerprint of the certificate used to validate the signature + of the device certificate. + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' + type: string + x-nullable: true + last_operator_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_operator_suspended_description: + description: The most recent description why the device was suspended or returned + to service. + example: Suspended for maintenance. + maxLength: 2000 + type: string + last_operator_suspended_updated_at: + description: The timestamp of the most recent suspension activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + last_system_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_system_suspended_description: + description: The most recent description of why the device was blocked or + unblocked by the system. + example: A certificate in the device's certificate chain was blacklisted by + the system. + maxLength: 2000 + type: string + last_system_suspended_updated_at: + description: The timestamp of the most recent system block activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + lifecycle_status: + description: 'The lifecycle status of the device. + + * Enabled: The device is allowed to connect to Pelion Device Management. + + * Blocked: The device is prevented from connecting to Pelion Device Management. + Device can be, for example, ''suspended''.' + enum: + - enabled + - blocked + example: enabled type: string manifest: + description: 'DEPRECATED: The URL for the current device manifest.' + example: '' type: string manifest_timestamp: + description: The timestamp of the current manifest version. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string mechanism: + description: 'NOT USED: The ID of the channel used to communicate with the + device.' + enum: + - connector + - direct type: string mechanism_url: + description: 'NOT USED: The address of the connector to use.' + example: '' type: string name: + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 + type: string + net_id: + default: '' + description: Private network identifier. Used to group nodes connected to + a specific border router. + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: + description: The API resource entity. + example: device type: string + operator_suspended: + description: Device has been suspended by operator. + type: boolean serial_number: + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + example: 00000000-0000-0000-0000-000000000000 type: string state: + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This + state is set only while bootstrapping is in progress. For example, an external + CA gives an error, and the device tries to bootstrap again after few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. [Device + commands](https://www.pelion.com/docs/device-management-api/connect/) can + be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered type: string + system_suspended: + description: Is the device suspended by the system? + type: boolean updated_at: + description: The time this data object was updated. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string vendor_id: + description: The device vendor ID. + example: 00000000-0000-0000-0000-000000000000 type: string - type: object - DevicePage: + DeviceDataPostRequest: properties: - after: - description: An offset token for current page. - example: '01631667477600000000000100100374' - type: string - data: - items: - $ref: '#/definitions/DeviceData' - type: array - has_more: - description: Are there more results available. - example: false + auto_update: + description: 'DEPRECATED: Mark this device for automatic firmware update.' type: boolean - limit: - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. - example: 50 - maximum: 1000 - minimum: 2 - type: integer - object: - description: The type of this API object is a "list". - example: list + bootstrap_expiration_date: + description: The expiration date of the certificate used to connect to bootstrap + server. + example: '2017-05-22' + format: date type: string - order: - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. - example: DESC + x-nullable: true + ca_id: + description: The certificate issuer's ID. + example: '00000000000000000000000000000000' + maxLength: 500 type: string - total_count: - example: 1 - format: integer - type: integer - DeviceQuery: - properties: - created_at: - description: The timestamp of when the device was created in Device Directory. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + connector_expiration_date: + description: The expiration date of the certificate used to connect to the + LwM2M server. + example: '2017-05-22' + format: date type: string - etag: - description: The entity instance signature. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 5 + type: object + deployment: + description: 'DEPRECATED: The last deployment used on the device.' + example: '' type: string - id: - description: The ID of the query. - example: '00000000000000000000000000000000' + description: + description: The description of the device. + example: '' + maxLength: 2000 type: string - name: - description: The name of the query. - example: '00000000000000000000000000000000' + device_class: + description: An ID representing the model and hardware revision of the device. + maxLength: 32 type: string - object: - description: The API resource entity. - example: device-query + device_execution_mode: *id012 + device_key: + description: The fingerprint of the device certificate. + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 type: string - query: - description: The device query. - example: id=00000000000000000000000000000000 + endpoint_name: + description: The endpoint name given to the device. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 64 type: string - updated_at: - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + endpoint_type: + description: The endpoint type of the device. For example, the device is a + gateway. + example: '' + maxLength: 64 type: string - required: - - created_at - - etag - - id - - name - - object - - query - - updated_at - DeviceQueryEqNeqFilter: + host_gateway: + description: The ID of the host gateway, if appropriate. + example: '' + type: string + issuer_fingerprint: *id013 + manifest: + description: 'DEPRECATED: The URL for the current device manifest.' + example: '' + type: string + mechanism: + description: The ID of the channel used to communicate with the device. + enum: + - connector + - direct + type: string + mechanism_url: + description: The address of the connector to use. + example: '' + type: string + name: + description: The name of the device. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 + type: string + serial_number: + description: The serial number of the device. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 64 + type: string + state: + description: The current state of the device. + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered + type: string + vendor_id: + description: The device vendor ID. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 255 + type: string + DeviceDataPutRequest: + properties: + auto_update: + description: 'DEPRECATED: Mark this device for automatic firmware update.' + type: boolean + ca_id: + description: 'The certificate issuer''s ID. WARNING: This value comes from + the device, and should not be changed via the API.' + example: '00000000000000000000000000000000' + maxLength: 500 + type: string + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 5 + type: object + description: + description: The description of the device. + example: '' + maxLength: 2000 + type: string + device_key: + description: 'The fingerprint of the device certificate. WARNING: This value + comes from the device, and should not be changed via the API.' + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 + type: string + endpoint_name: + description: 'The endpoint name given to the device. WARNING: This value comes + from the device, and should not be changed via the API.' + example: 00000000-0000-0000-0000-000000000000 + maxLength: 64 + readOnly: true + type: string + endpoint_type: + description: The endpoint type of the device. For example, the device is a + gateway. + example: '' + maxLength: 64 + type: string + host_gateway: + description: The ID of the host gateway, if appropriate. + example: '' + type: string + name: + description: The name of the device. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 + type: string + DeviceEqNeqFilter: properties: + account_id: + type: string + auto_update: + type: boolean + bootstrap_expiration_date: + example: '2017-05-22' + format: date + type: string + bootstrapped_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + ca_id: + type: string + component_attributes: + additionalProperties: + type: string + type: object + connector_expiration_date: + example: '2017-05-22' + format: date + type: string created_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + custom_attributes: + additionalProperties: + type: string + type: object + deployed_state: + type: string + deployment: + type: string + description: + type: string + device_class: + type: string + device_execution_mode: + type: integer + device_key: + type: string + endpoint_name: + type: string + endpoint_type: + type: string + enrolment_list_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string etag: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + firmware_checksum: + type: string + host_gateway: + type: string id: type: string + manifest: + type: string + manifest_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + mechanism: + type: string + mechanism_url: + type: string name: type: string - query: + serial_number: + type: string + state: type: string updated_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - DeviceQueryGteLteFilter: + vendor_id: + type: string + type: object + DeviceEventData: properties: + changes: + additionalProperties: + type: object + example: {} + type: object + x-deprecation: + comment: This field is not used. + end_of_life_at: '2020-01-15T14:55:20+00:00' + issued_at: '2019-01-15T14:55:20+00:00' + links: [] created_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + data: + additionalProperties: + type: string + description: Additional data relevant to the event. + example: + campaign_id: '00000000000000000000000000000000' + type: object + date_time: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + description: + example: Device record created + type: string + device_id: + example: '00000000000000000000000000000000' + type: string etag: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - updated_at: + event_type: + description: Event code + example: UPD2_100 + maxLength: 100 + type: string + event_type_category: + description: Category code that groups the event type by a summary category. + example: FAIL_MANIFEST_REJECTED + type: string + event_type_description: + description: Generic description of the event. + example: FAIL + type: string + id: + example: '00000000000000000000000000000000' + type: string + object: + description: The API resource entity. + example: device-event + type: string + state_change: + type: boolean + required: + - date_time + - id + DeviceEventEqNeqFilter: + properties: + date_time: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - DeviceQueryInNinFilter: + description: + type: string + device_id: + type: string + event_type: + type: string + id: + type: string + state_change: + type: boolean + DeviceEventGteLteFilter: properties: - created_at: + date_time: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - etag: + DeviceEventInNinFilter: + properties: + date_time: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - id: + description: type: string - name: + device_id: type: string - query: + event_type: type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + id: type: string - DeviceQueryPage: + state_change: + type: boolean + DeviceEventPage: properties: after: example: null @@ -3177,14 +3689,13 @@ definitions: data: example: '[]' items: - $ref: '#/definitions/DeviceQuery' + $ref: '#/definitions/DeviceEventData' type: array has_more: example: false type: boolean limit: example: 1000 - format: integer type: integer object: example: list @@ -3194,571 +3705,317 @@ definitions: type: string total_count: example: 1 - format: integer type: integer - required: - - limit - - order - - object - - has_more - - total_count - - data - DeviceQueryPatchRequest: - properties: - name: - description: The name of the query. - maxLength: 200 - type: string - query: - description: The device query. - maxLength: 1000 - type: string - DeviceQueryPostPutRequest: - properties: - name: - description: The name of the query. - maxLength: 200 - type: string - query: - description: The device query. - maxLength: 1000 - type: string - required: - - name - - query - DeviceRequest: + DeviceGroup: properties: - accept: - description: The content type of an accepted response. - example: text/plain - type: string - content-type: - description: The content type of the payload. - example: text/plain + created_at: + description: The time the group was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - method: - description: The CoAP request method. Allowed values are GET, POST, PUT and - DELETE. - example: GET + custom_attributes: &id028 + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to ten custom key-value attributes. Keys cannot begin with + a number. Both key and value are limited to 128 characters. Updating this + field replaces existing contents. + example: + key: value + maxProperties: 10 + type: object + description: &id029 + description: The description of the group. + example: Devices on the factory floor. + maxLength: 1024 type: string - payload-b64: - description: The base64 encoded payload to send to the device. - example: dmFsdWUxCg== + devices_count: + description: The number of devices in this group. + example: 10 + type: integer + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - uri: - description: The URI path of the requested resource. - example: /5/0/1 + id: + description: The group ID. + example: 015c3029f6f7000000000001001000c3 type: string - required: - - method - - uri - type: object - EndpointData: - properties: - ep: - description: Unique Device Management device ID. - example: 015f3850a657000000000001001002ab + name: &id030 + description: Name of the group. + example: My devices + maxLength: 128 type: string - ept: - description: Endpoint type. - example: Light + object: + description: 'Entity name: always `device-group`.' + example: device-group type: string - original-ep: - description: If device registration is initiated with a self-provided endpoint - name, Device Management provides a new device ID for subsequent use. The - new platform-provided Device ID is forwarded as the 'ep' property and the - original self-provided one as the optional 'original-ep' property in a registration - notification. The name and ID can then be mapped accordingly. Device Management - saves the original endpoint name in the Device Directory for future device - registrations so you don't need to do mapping again. - example: my-device-123 + updated_at: + description: The time this object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - q: - description: Queue mode (default value is false). - example: false - type: boolean - resources: - items: - $ref: '#/definitions/ResourcesData' - type: array type: object - EnrollmentId: + DeviceGroupManipulation: properties: - enrollment_identity: - description: Enrollment identity. - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ + device_id: + example: '00000000000000000000000000000000' type: string required: - - enrollment_identity + - device_id type: object - EnrollmentIdentities: + DeviceGroupPage: properties: after: - description: ID - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} + description: An offset token for current page. + example: '01631667477600000000000100100374' type: string data: items: - $ref: '#/definitions/EnrollmentIdentity' + $ref: '#/definitions/DeviceGroup' type: array has_more: - example: true + description: More results are available. + example: false type: boolean limit: - description: Range 2-1000, or default. + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. example: 50 maximum: 1000 minimum: 2 type: integer object: - enum: - - list + description: The type of this API object is 'list'. example: list type: string order: - default: ASC - enum: - - ASC - - DESC - example: ASC + description: Record order based on creation time. + example: DESC type: string total_count: - example: 100 - format: int32 - minimum: 1 + example: 1 + format: integer type: integer - required: - - object - - limit - - after - - order - - has_more - - total_count - - data type: object - EnrollmentIdentity: + DeviceGteLteFilter: properties: - account_id: - description: ID - example: 00005a4e027f0a580a01081c00000000 + bootstrap_expiration_date: + example: '2017-05-22' + format: date type: string - claimed_at: - description: The time the device was claimed. + bootstrapped_timestamp: + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + connector_expiration_date: + example: '2017-05-22' + format: date + type: string created_at: - description: The time of the enrollment identity creation. + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - enrolled_device_id: - description: The ID of the device in the Device Directory once it is registered. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - type: string - enrollment_identity: - description: Enrollment identity. - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ + enrolment_list_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string etag: - example: 7642xfaxz - pattern: '[A-Za-z0-9]{1,256}' - type: string - expires_at: - description: The enrollment claim expiration time. If the device does not - connect to Device Management before expiration, the claim is removed without - separate notice. + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - id: - description: Enrollment identity. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} + manifest_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - object: - enum: - - enrollment - example: enrollment + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - required: - - object - - id - - etag - - account_id - - created_at - - expires_at - - claimed_at - - enrollment_identity - - enrolled_device_id type: object - ErrorObjectResponse: + DeviceInNinFilter: properties: - code: - description: Error code. Correlates with response status code. - format: int32 - type: integer - fields: - description: A list of request fields that failed validation. - items: - $ref: '#/definitions/FieldMessageEntry' - type: array - message: - description: Error message. + account_id: type: string - object: - description: 'Entity name: `error`.' + auto_update: + type: boolean + bootstrap_expiration_date: + example: '2017-05-22' + format: date type: string - request_id: - description: Request ID from JWT. + bootstrapped_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - type: - description: Error type. + ca_id: type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - ErrorResponse: - properties: - code: - description: HTTP response code - example: 400 - format: int32 - type: integer - fields: - description: Request fields which failed validation. - items: - properties: - message: - description: Message describing the error condition. - type: string - name: - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - message: - description: A human readable informative explanation - example: Validation error + component_attributes: + additionalProperties: + type: string + type: object + connector_expiration_date: + example: '2017-05-22' + format: date type: string - object: - description: Entity name, always `error`. - enum: - - error + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - request_id: - description: ID of the request. - example: 0161991d63150242ac12000600000000 + custom_attributes: + additionalProperties: + type: string + type: object + deployed_state: type: string - type: - description: Error type used to categorise the error. - example: validation_error + deployment: type: string - required: - - code - - message - - object - - request_id - - type - type: object - EventType: - properties: - campaign_id: - description: ID of the associated campaign. - example: '00000000000000000000000000000000' + description: type: string - count: - example: 10 + device_class: + type: string + device_execution_mode: type: integer - created_at: + device_key: + type: string + endpoint_name: + type: string + endpoint_type: + type: string + enrolment_list_timestamp: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - description: - example: Update error, nonspecific network error + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - event_type: - example: UPD4_FAIL_101 + firmware_checksum: + type: string + host_gateway: type: string id: - example: upd_fail_101 type: string - object: - example: event-type + manifest: type: string - summary_status: - example: FAIL + manifest_timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - summary_status_id: - example: fail + mechanism: + type: string + mechanism_url: + type: string + name: + type: string + serial_number: + type: string + state: + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + vendor_id: type: string type: object - EventTypeList: + DevicePage: properties: after: - description: The entity ID to fetch after the given one - example: 'null' + description: An offset token for current page. + example: '01631667477600000000000100100374' type: string data: items: - $ref: '#/definitions/EventType' + $ref: '#/definitions/DeviceData' type: array has_more: - description: A flag indicating whether there are more results - example: 'false' + description: Are there more results available. + example: false type: boolean limit: - description: 'The number of results to return, (range: 2-1000), or equals - to total_count' - example: '50' + description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to + the closest limit. + example: 50 + maximum: 1000 + minimum: 2 type: integer object: - description: 'The entity name: always ''list''' + description: The type of this API object is a "list". example: list type: string order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + description: The order of the records based on creation time, `ASC` or `DESC`; + by default `ASC`. + example: DESC type: string total_count: - description: The total number or records, if requested. It may be returned - also for small lists. - example: '1' + example: 1 + format: integer type: integer - type: object - EventTypeSummary: + DeviceQuery: properties: - campaign_id: - description: ID of the associated campaign. - example: '00000000000000000000000000000000' - type: string - count: - example: 10 - type: integer created_at: + description: The timestamp of when the query was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + description: The entity instance signature. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string id: - description: ID of the event type description - enum: - - fail - - success - - info - - skipped - example: fail + description: The ID of the query. + example: 015c30671894000000000001001001e9 + type: string + name: + description: The name of the query. + example: example-stored-device-query type: string object: - example: summary_status + description: The API resource entity. + example: device-query type: string - summary_status: - description: The event type description. - enum: - - FAIL - - SUCCESS - - INFO - - SKIPPED - example: FAIL + query: + description: The device query. + example: id=0158d38771f70000000000010010038c type: string - type: object - EventTypeSummaryList: + updated_at: + description: The time the object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + required: + - created_at + - etag + - id + - name + - object + - query + - updated_at + DeviceQueryEqNeqFilter: properties: - after: - description: The entity ID to fetch after the given one - example: 'null' + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - data: - items: - $ref: '#/definitions/EventTypeSummary' - type: array - has_more: - description: A flag indicating whether there are more results - example: 'false' - type: boolean - limit: - description: 'The number of results to return, (range: 2-1000), or equals - to total_count' - example: '50' - type: integer - object: - description: 'The entity name: always ''list''' - example: list + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + id: type: string - total_count: - description: The total number or records, if requested. It may be returned - also for small lists. - example: '1' - type: integer - type: object - FeaturePolicy: - description: Represents a feature policy. Either the feature or the resource must - be specified. - properties: - action: - description: Comma-separated list of actions, empty string represents all - actions. - example: GET + name: type: string - allow: - description: True or false controlling whether an action is allowed or not. - example: true - type: boolean - feature: - description: Feature name corresponding to this policy. - example: update-campaigns - type: string - inherited: - description: Flag indicating whether this feature is inherited or overwritten - specifically. - example: false - readOnly: true - type: boolean - inherited_from: - description: An ID indicating where this policy is inherited from. - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - type: string - inherited_type: - description: Indicates the type of entity this policy is inherited from. - enum: - - account - - template - - tier_template - example: account - readOnly: true - type: string - resource: - description: Resource that is protected by this policy. - example: /v3/update-campaign - type: string - type: object - Field: - properties: - message: - description: Message describing the erroneous situation. - type: string - name: - description: Name of the erroneous field. - type: string - required: - - message - - name - type: object - FieldMessageEntry: - properties: - field: - description: Field name. - type: string - message: - description: Error message related to the field. - type: string - type: object - FirmwareImage: - properties: - created_at: - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - datafile: - description: The firmware image file URL - example: http://example.com/00000000000000000000000000000000 - type: string - datafile_checksum: - description: The checksum (sha256) generated for the datafile - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - datafile_size: - description: The size of the datafile in bytes - format: int64 - type: integer - description: - description: The description of the object - example: '' - maxLength: 2000 - type: string - etag: - description: The entity instance signature - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - id: - description: The firmware image ID - example: '00000000000000000000000000000000' - type: string - name: - description: The firmware image name - example: '' - maxLength: 128 - type: string - object: - description: The API resource entity - example: firmware-image - type: string - updated_at: - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - required: - - created_at - - datafile - - datafile_checksum - - description - - etag - - id - - name - - object - - updated_at - FirmwareImageEqNeqFilter: - properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - datafile: - type: string - datafile_checksum: - type: string - datafile_size: - type: integer - description: - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - id: - type: string - name: + query: type: string updated_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - FirmwareImageGteLteFilter: + DeviceQueryGteLteFilter: properties: created_at: example: '2017-05-22T12:37:55.576563Z' @@ -3772,20 +4029,12 @@ definitions: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - FirmwareImageInNinFilter: + DeviceQueryInNinFilter: properties: created_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - datafile: - type: string - datafile_checksum: - type: string - datafile_size: - type: integer - description: - type: string etag: example: '2017-05-22T12:37:55.576563Z' format: date-time @@ -3794,11 +4043,13 @@ definitions: type: string name: type: string + query: + type: string updated_at: example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - FirmwareImagePage: + DeviceQueryPage: properties: after: example: null @@ -3806,623 +4057,1025 @@ definitions: data: example: '[]' items: - $ref: '#/definitions/FirmwareImage' + $ref: '#/definitions/DeviceQuery' type: array has_more: + example: false type: boolean limit: - format: int32 + example: 1000 + format: integer type: integer object: example: list type: string order: - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. - enum: - - ASC - - DESC - example: ASC + example: DESC type: string total_count: - format: int32 + example: 1 + format: integer type: integer - FirmwareManifest: + required: + - limit + - order + - object + - has_more + - total_count + - data + DeviceQueryPatchRequest: properties: - created_at: - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - datafile: - description: The URL of the firmware manifest binary - example: http://example.com/00000000000000000000000000000000 - type: string - datafile_size: - description: The size of the datafile in bytes - format: int64 - type: integer - description: - description: The description of the firmware manifest - example: '' - maxLength: 2000 + name: + description: The name of the query. + maxLength: 200 type: string - device_class: - description: The class of the device - example: 00000000-0000-0000-0000-000000000000 + query: + description: The device query. + maxLength: 1000 type: string - etag: - description: The entity instance signature - example: '2017-05-22T12:37:55.576563Z' - format: date-time + DeviceQueryPostPutRequest: + properties: + name: + description: The name of the query. + maxLength: 200 type: string - id: - description: The firmware manifest ID - example: '00000000000000000000000000000000' + query: + description: The device query to store. A query is made of key/value pairs + separated by ampersands (`&`). The key defines the field name to filter + by when applying the query. Refer to the endpoint documentation before applying + a filter, as supported fields vary between endpoints. + maxLength: 1000 type: string - key_table: - description: The key table of pre-shared keys for devices - example: http://example.com - format: uri + required: + - name + - query + DeviceRequest: + properties: + accept: + description: The content type of an accepted response. + example: text/plain type: string - name: - description: The name of the object - example: '' - maxLength: 128 + content-type: + description: The content type of the payload. + example: text/plain type: string - object: - description: The API resource entity - example: firmware-manifest + method: + description: The CoAP request method. Allowed values are GET, POST, PUT and + DELETE. + example: GET type: string - timestamp: - description: The firmware manifest version as a timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time + payload-b64: + description: The base64 encoded payload to send to the device. + example: dmFsdWUxCg== type: string - updated_at: - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time + uri: + description: The URI path of the requested resource. + example: /5/0/1 type: string required: - - created_at - - datafile - - description - - device_class - - etag - - id - - name - - object - - timestamp - - updated_at - FirmwareManifestEqNeqFilter: + - method + - uri + type: object + DeviceToPelionMessagesCounter: + description: The number of messages from the device to Device Management. + properties: + bootstrap_requests: + $ref: '#/definitions/BootstrapRequestsCounter' + est_requests: + $ref: '#/definitions/EstRequestsCounter' + observations: + $ref: '#/definitions/ObservationsCounter' + proxy_responses: + $ref: '#/definitions/ProxyResponsesCounter' + registration_deletes: + $ref: '#/definitions/RegistrationDeletesCounter' + registration_updates: + $ref: '#/definitions/RegistrationUpdatesCounter' + registrations: + $ref: '#/definitions/RegistrationsCounter' + total_count: + description: The number of all inbound requests from devices to Device Management. + format: int64 + minimum: 0 + type: integer + required: + - total_count + - registrations + - registration_updates + - registration_deletes + - observations + - est_requests + - proxy_responses + - bootstrap_requests + type: object + EchoDevice: + description: The Device Echo object representing the device. properties: created_at: - example: '2017-05-22T12:37:55.576563Z' + description: Response creation UTC time. + example: 2020-10-20 10:30:55.123000 format: date-time type: string - datafile: - type: string - datafile_size: - type: integer - description: + device_id: + description: The device ID. + example: 015f3850a657000000000001001002ab type: string - device_class: + endpoint_name: + description: The endpoint name. + example: Sensor3222454 type: string - etag: - example: '2017-05-22T12:37:55.576563Z' + last_desired_at: + description: The last time a write command was initiated on a resource. + example: 2019-10-20 10:30:55.123000 format: date-time type: string - id: - type: string - name: - type: string - timestamp: - example: '2017-05-22T12:37:55.576563Z' + last_reported_at: + description: The last time any resource's reported value was updated. + example: 2019-10-20 10:30:55.123000 format: date-time type: string + object: + description: API Resource name + example: device-echo + type: string + resources: + description: The list of device resources stored in Device Echo. + items: + $ref: '#/definitions/EchoResource' + type: array updated_at: - example: '2017-05-22T12:37:55.576563Z' + description: The time of last registration event of a Device Echo object. + example: 2019-10-20 10:30:55.123000 format: date-time type: string - FirmwareManifestGteLteFilter: + required: + - id + type: object + EchoResource: + description: The representation of a single resource of the device stored in Device + Echo. properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' + desired: + $ref: '#/definitions/EchoResourceDesired' + reported: + $ref: '#/definitions/EchoResourceReported' + resource_path: + description: The path of the resource. + example: /3/0/1 + type: string + subscribed: + description: System-level subscription status of the resource. If any of the + applications has placed a subscription, the status is true. Overlapping + subscriptions from multiple applications do not increase the load on the + device as the server handles the multiplexing. + type: boolean + type: object + EchoResourceDesired: + description: Resource value written, or queued to be written to the device. + properties: + desired_at: + description: The time of the latest value write was initiated. + example: 2019-10-20 10:30:55.123000 format: date-time type: string - timestamp: - example: '2017-05-22T12:37:55.576563Z' + status: + description: The status of the desired value. 0 = 'pending write', 1 = 'success', + 2 = 'failed'. + format: integer + type: number + status_updated_at: + description: The time of the last status update. + example: 2019-10-20 10:30:55.123000 format: date-time type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + value: + description: The desired value in base64 encoded format. + example: RGVzaXJlZCB2YWx1ZS4= + format: byte type: string - FirmwareManifestInNinFilter: + type: object + EchoResourceReported: + description: Reported single resource data received from the device. properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - datafile: - type: string - datafile_size: - type: integer - description: + content_type: + description: Content type of the reported resource value. + example: text/plain type: string - device_class: + expires_at: + description: The time after which the reported value is not valid, calculated + based on the max-age of the resource value the device reported. + example: 2019-10-20 10:30:55.123000 + format: date-time type: string - etag: - example: '2017-05-22T12:37:55.576563Z' + reported_at: + description: The time the last value was reported. format: date-time type: string - id: + value: + description: The reported value in base64 encoded format. + example: UmVwb3J0ZWQgdmFsdWUu + format: byte type: string - name: + type: object + EndpointData: + properties: + ep: + description: Unique Device Management device ID. + example: 015f3850a657000000000001001002ab type: string - timestamp: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + ept: + description: Endpoint type. + example: Light type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + original-ep: + description: If device registration is initiated with a self-provided endpoint + name, Device Management provides a new device ID for subsequent use. The + new platform-provided Device ID is forwarded as the 'ep' property and the + original self-provided one as the optional 'original-ep' property in a registration + notification. The name and ID can then be mapped accordingly. Device Management + saves the original endpoint name in the Device Directory for future device + registrations so you don't need to do mapping again. + example: my-device-123 type: string - FirmwareManifestPage: + q: + description: Queue mode (default value is false). + example: false + type: boolean + resources: + items: + $ref: '#/definitions/ResourcesData' + type: array + type: object + EnrollmentId: + properties: + enrollment_identity: + description: Enrollment identity. + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ + type: string + required: + - enrollment_identity + type: object + EnrollmentIdentities: properties: after: - example: null + description: ID + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} type: string data: - example: '[]' items: - $ref: '#/definitions/FirmwareManifest' + $ref: '#/definitions/EnrollmentIdentity' type: array has_more: + example: true type: boolean limit: - format: int32 + description: Range 2-1000, or default. + example: 50 + maximum: 1000 + minimum: 2 type: integer object: + enum: + - list example: list type: string order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' + default: ASC enum: - ASC - DESC example: ASC type: string total_count: + example: 100 format: int32 + minimum: 1 type: integer - ForbiddenErrorResponse: - description: 403 Forbidden. + required: + - object + - limit + - after + - order + - has_more + - total_count + - data + type: object + EnrollmentIdentity: properties: - code: - description: Response code. Always set to 403. + account_id: + description: ID + example: 00005a4e027f0a580a01081c00000000 + type: string + claimed_at: + description: The time the device was claimed. + format: date-time + type: string + created_at: + description: The time of the enrollment identity creation. + format: date-time + type: string + enrolled_device_id: + description: The ID of the device in the Device Directory once it is registered. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + enrollment_identity: + description: Enrollment identity. + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ + type: string + etag: + example: 7642xfaxz + pattern: '[A-Za-z0-9]{1,256}' + type: string + expires_at: + description: The enrollment claim expiration time. If the device does not + connect to Device Management before expiration, the claim is removed without + separate notice. + format: date-time + type: string + id: + description: Enrollment identity. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + object: enum: - - 403 + - enrollment + example: enrollment + type: string + required: + - object + - id + - etag + - account_id + - created_at + - expires_at + - claimed_at + - enrollment_identity + - enrolled_device_id + type: object + ErrorObjectResponse: + properties: + code: + description: Error code. Correlates with response status code. + format: int32 type: integer + fields: + description: A list of request fields that failed validation. + items: + $ref: '#/definitions/FieldMessageEntry' + type: array message: - description: A human-readable message with detailed info. + description: Error message. type: string object: - description: Always set to `error`. - enum: - - error + description: 'Entity name: `error`.' type: string request_id: - description: Request ID + description: Request ID from JWT. type: string type: - description: Error type. Always set to `forbidden`. - enum: - - forbidden + description: Error type. type: string required: - - object + - code + - fields - message + - object - request_id - type - - code type: object - GlobalSignCredentials: - description: 'Describes the credentials required to connect to the GlobalSign - account. - - The values should be taken from GlobalSign support upon account creation. - - ' + ErrorResponse: properties: - api_key: - description: 'Unique ID for API client (provided by GlobalSign). - - ' - example: e510e289e6cd8947 - maxLength: 1000 + code: + description: HTTP response code + example: 400 + format: int32 + type: integer + fields: + description: Request fields which failed validation. + items: + properties: + message: + description: Message describing the error condition. + type: string + name: + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + message: + description: A human readable informative explanation + example: Validation error type: string - api_secret: - description: 'API Secret matching the API key (provided by GlobalSign). - - ' - example: a477a8393d17a55ecb2ba6a61f58feb84770b621 - format: password - maxLength: 250 + object: + description: Entity name, always `error`. + enum: + - error type: string - client_certificate: - description: 'The client certificate provided by GlobalSign to allow HTTPS - connection over TLS/SSL. - - The certificate wraps a public key that matches a private key provided by - the customer. - - The certificate must be in PEM format. - - ' - example: '"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END - CERTIFICATE-----"' - maxLength: 3000 - type: string - passphrase: - description: 'The passphrase to decrypt the private key in case it is encrypted. - - Empty if the private key is not encrypted. - - ' - example: helloworld - format: password - maxLength: 1000 - type: string - private_key: - description: 'The private key that matches the client certificate to allow - HTTPS connection over TLS/SSL. - - The private key may be encrypted using a symmetric encryption key derived - from a passphrase. - - The private key must be in PEM format. - - ' - example: '"-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: - DES-EDE3-CBC,CCAC26A4133947CB\n\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\n-----END - RSA PRIVATE KEY-----"' - maxLength: 3000 + request_id: + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - required: - - api_key - - api_secret - - client_certificate - - private_key - type: object - GroupCreationInfo: - description: This object is used when creating new groups. - properties: - members: - $ref: '#/definitions/SubjectList' - description: The members of the group as arrays of user and API key IDs. - name: - description: The group name. - maxLength: 100 + type: + description: Error type used to categorise the error. + example: validation_error type: string required: - - name + - code + - message + - object + - request_id + - type type: object - GroupSummary: - description: This object contains basic information about groups. + EstRequestsCounter: + description: The number of certificate creation requests received from devices + during bootstrap. + format: int64 + minimum: 0 + type: integer + EventType: properties: - account_id: - description: The ID of the account this group belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + campaign_id: + description: ID of the associated campaign. + example: 016e652be671000000000001001001e5 type: string - apikey_count: - description: The number of API keys in this group. - example: 0 - format: int32 + count: + example: 10 type: integer created_at: - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - etag: - description: API resource entity version. - example: '1' + description: + example: Update error, nonspecific network error type: string - id: - description: The ID of the group. - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' + event_type: + example: UPD4_FAIL_101 type: string - name: - description: The name of the group. - example: Administrators - maxLength: 100 + id: + example: upd_fail_101 type: string object: - description: 'Entity name: always `group`.' - enum: - - group + description: 'Entity name: always ''event-type''.' + example: event-type type: string - updated_at: - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + summary_status: + example: FAIL + type: string + summary_status_id: + example: fail type: string - user_count: - description: The number of users in this group. - example: 1 - format: int32 - type: integer - required: - - account_id - - apikey_count - - etag - - id - - name - - object - - user_count type: object - GroupSummaryList: + EventTypeList: properties: after: description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + example: 'null' type: string data: - description: A list of entities. + enum: + - fail + - skipped + - info + - success items: - $ref: '#/definitions/GroupSummary' + $ref: '#/definitions/EventType' type: array has_more: - description: Flag indicating whether there are more results. - example: false + description: A flag indicating whether there are more results. + example: 'false' type: boolean limit: - description: The number of results to return (2-1000), or equal to `total_count`. - example: 50 - format: int32 + description: 'The number of results to return, (range: 2-1000), or equals + to total_count.' + example: '50' type: integer object: - description: 'Entity name: always `list`.' - enum: - - list + description: 'The entity name: always ''list''.' + example: list type: string order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' enum: - ASC - DESC + example: ASC type: string total_count: - description: The total number of records, if requested. - example: 20 - format: int32 + description: The total number or records, if requested. It may be returned + also for small lists. + example: '1' type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - GroupUpdateInfo: - description: This object is used when Update groups. - properties: - name: - description: The group name. - maxLength: 100 - type: string - required: - - name type: object - IdentityProviderCreationReq: - description: This object is used for creating new federated identity provider - module. + EventTypeSummary: properties: - description: - description: Description for the identity provider. - maxLength: 500 + campaign_id: + description: ID of the associated campaign. + example: 016e652be6710000000000010010013d type: string - name: - description: Name of the identity provider. - maxLength: 100 + count: + example: 10 + type: integer + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - oidc_attributes: - $ref: '#/definitions/OIDCInfo' - description: OIDC specific attributes. - saml2_attributes: - $ref: '#/definitions/SAML2Req' - description: SAML2 specific attributes. - status: - description: Status of the identity provider. + id: + description: ID of the event type description. enum: - - ACTIVE - - SUSPENDED + - fail + - success + - info + - skipped + example: fail type: string - type: - description: Identity provider type. + object: + description: 'Entity name: always ''summary_status''.' + example: summary_status + type: string + summary_status: + description: The event type description. enum: - - SAML2 + - FAIL + - SUCCESS + - INFO + - SKIPPED + example: FAIL type: string - required: - - name - - type type: object - IdentityProviderInfo: + EventTypeSummaryList: properties: - account_id: - description: The ID of the account the identity provider belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - created_at: - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time + after: + description: The entity ID to fetch after the given one. + example: 'null' type: string - description: - description: Description for the identity provider. - maxLength: 500 + data: + items: + $ref: '#/definitions/EventTypeSummary' + type: array + has_more: + description: A flag indicating whether there are more results. + example: 'false' + type: boolean + limit: + description: 'The number of results to return, (range: 2-1000), or equals + to total_count.' + example: '50' + type: integer + object: + description: 'The entity name: always ''list''.' + example: list type: string - etag: - description: API resource entity version. - example: '1' + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC + example: ASC type: string - id: - description: Entity ID. - example: 01619571d01d0242ac12000600000000 - pattern: '[a-f0-9]{32}' + total_count: + description: The total number or records, if requested. It may be returned + also for small lists. + example: '1' + type: integer + type: object + FeaturePolicy: + description: Represents a feature policy. Either the feature or the resource must + be specified. + properties: + action: + description: Comma-separated list of actions, empty string represents all + actions. + example: GET type: string - is_default: - description: Flag indicating whether this is the global default identity provider. + allow: + description: True or false controlling whether an action is allowed or not. + example: true + type: boolean + feature: + description: Feature name corresponding to this policy. + example: update-campaigns + type: string + inherited: + description: Flag indicating whether this feature is inherited or overwritten + specifically. + example: false readOnly: true type: boolean - name: - description: Name of the identity provider. - maxLength: 100 + inherited_from: + description: An ID indicating where this policy is inherited from. + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true type: string - object: - description: 'Entity name: always ''identity-provider''' + inherited_type: + description: Indicates the type of entity this policy is inherited from. enum: - - identity-provider + - account + - template + - tier_template + example: account + readOnly: true type: string - saml2_attributes: - $ref: '#/definitions/SAML2Info' - description: SAML2 specific attributes. - status: - description: Status of the identity provider. - enum: - - ACTIVE - - SUSPENDED + resource: + description: Resource that is protected by this policy. + example: /v3/update-campaign type: string - type: - description: Identity provider type. - enum: - - NATIVE - - MBED - - SAML2 - - OIDC + type: object + Field: + properties: + message: + description: Message describing the erroneous situation. type: string - updated_at: - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + name: + description: Name of the erroneous field. type: string required: - - etag - - id + - message - name - - object - - type type: object - IdentityProviderList: + FieldMessageEntry: + properties: + field: + description: Field name. + type: string + message: + description: Error message related to the field. + type: string + type: object + FirmwareImage: + properties: + created_at: *id014 + datafile: + description: The firmware image file URL. + example: http://bucket.com/myimage.elf + type: string + datafile_checksum: + description: The checksum (sha256) generated for the datafile. + example: e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e + type: string + datafile_size: + description: The size of the datafile in bytes. + format: int64 + type: integer + description: + description: The description of the object. + example: a description + format: free text + maxLength: 2000 + type: string + etag: *id015 + id: + description: The firmware image ID. + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + description: The firmware image name. + format: free text + maxLength: 128 + type: string + object: + description: 'Entity name: always ''firmware-image''.' + example: firmware-image + type: string + updated_at: *id016 + FirmwareImageEqNeqFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + datafile: + type: string + datafile_checksum: + type: string + datafile_size: + type: integer + description: + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + id: + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareImageGteLteFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareImageInNinFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + datafile: + type: string + datafile_checksum: + type: string + datafile_size: + type: integer + description: + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + id: + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareImagePage: properties: after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + example: null type: string data: - description: A list of entities. items: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/FirmwareImage' type: array has_more: - description: Flag indicating whether there are more results. - example: false type: boolean limit: - description: The number of results to return , or equal to `total_count`. - example: 50 format: int32 type: integer object: - description: 'Entity name: always `list`.' - enum: - - list + description: 'Entity name: always ''list''.' + example: list type: string order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' + description: The order of the records based on creation time, `ASC` or `DESC`; + by default `ASC`. enum: - ASC - DESC + example: ASC type: string total_count: - description: The total number of records, if requested. - example: 20 format: int32 type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - IdentityProviderUpdateReq: - description: Update existing federated identity provider module. + FirmwareManifest: properties: + created_at: *id014 + datafile: + description: The URL of the ASN.1 DER-encoded firmware manifest binary. + example: http://bucket.com/mymanifest.manifest + format: uri + type: string + datafile_size: + description: The size of the firmware manifest in bytes. + format: int64 + type: integer + delivered_payload_digest: + description: Digest (SHA256, hex-encoded) of the payload to deliver to the + device. + example: c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc + format: hex + type: string + delivered_payload_size: + description: The size in bytes of the payload to deliver to the device. + format: int64 + type: integer + delivered_payload_type: + description: Type of the payload to deliver to the device (full or delta image). + enum: + - full + - delta + type: string + delivered_payload_url: + description: The URL of the payload to deliver to the device. + example: http://bucket.com/myimage.elf + format: uri + type: string description: - description: Description for the identity provider. - maxLength: 500 + description: The description of the firmware manifest. + example: '' + format: free text + maxLength: 2000 type: string - name: - description: Name of the identity provider. - maxLength: 100 + device_class: + description: The device class ID. + example: 42c4d8de-704d-546e-b9d3-1ce1eb316167 + format: uuid type: string - oidc_attributes: - $ref: '#/definitions/OIDCInfo' - description: OIDC specific attributes. - saml2_attributes: - $ref: '#/definitions/SAML2Req' - description: SAML2 specific attributes. - status: - description: Status of the identity provider. - enum: - - ACTIVE - - SUSPENDED + device_vendor: + description: The device vendor ID. + example: 5d645eae-c231-5a89-9764-2e655cd94fa8 + format: uuid type: string - type: - description: Identity provider type. + etag: *id015 + id: + description: The firmware manifest ID. + example: '12345678901234567890123456789012' + pattern: '[A-Fa-f0-9]{32}' + type: string + key_table: + description: The key table of pre-shared keys for devices. + example: http://example.com/key-table + format: uri + type: string + manifest_schema_version: + description: Version of the manifest schema (1 or 3). enum: - - SAML2 + - '1' + - '3' type: string - required: - - name - - type - type: object - IdpPublicKey: - description: Represents provider's public key and key ID used to sign ID tokens. - PEM-encoded. + name: + description: The name of the manifest. + example: manifest_name + format: free text + maxLength: 128 + type: string + object: + description: 'Entity name: always ''firmware-manifest''.' + example: firmware-manifest + type: string + parsed_raw_manifest: + description: 'Raw manifest in JSON format, parsed from ASN.1 DER encoding. + + Fields may change. Backwards compatibility is not guaranteed. + + Recommended for debugging only. + + ' + type: object + precursor_payload_digest: + description: Digest (SHA256, hex-encoded) of the currently installed payload. + example: 54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f + type: string + timestamp: + description: The firmware manifest version as a timestamp. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + update_priority: + description: Update priority, passed to the application callback when an update + is performed. Allows the application to make application-specific decisions. + format: int64 + type: integer + updated_at: *id016 + FirmwareManifestEqNeqFilter: properties: - key: - description: The public key. + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - kid: - description: The public key ID. + datafile: type: string - type: object - Image: - format: binary - type: string - InternalServerErrorResponse: - description: 500 Internal server error response. + datafile_size: + type: integer + description: + type: string + device_class: + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + id: + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + format: free text + maxLength: 128 + type: string + timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareManifestGteLteFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareManifestInNinFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + datafile: + type: string + datafile_size: + type: integer + description: + type: string + device_class: + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + id: + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + format: free text + maxLength: 128 + type: string + timestamp: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + FirmwareManifestPage: + properties: + after: + example: null + type: string + data: + items: + $ref: '#/definitions/FirmwareManifest' + type: array + has_more: + type: boolean + limit: + format: int32 + type: integer + object: + description: 'Entity name: always ''list''.' + example: list + type: string + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC + example: ASC + type: string + total_count: + format: int32 + type: integer + FirmwareUpdatesCounter: + description: The total number of successful firmware update operations in the + requested time. + format: int64 + minimum: 0 + type: integer + ForbiddenErrorResponse: + description: 403 Forbidden. properties: code: - description: Response code. Always set to 500. + description: Response code. Always set to 403. enum: - - 500 + - 403 type: integer message: description: A human-readable message with detailed info. @@ -4436,9 +5089,9 @@ definitions: description: Request ID type: string type: - description: Error type. Always set to `internal_error`. + description: Error type. Always set to `forbidden`. enum: - - internal_error + - forbidden type: string required: - object @@ -4447,128 +5100,278 @@ definitions: - type - code type: object - ListOfPreSharedKeysWithoutSecret: + GetTrustAnchorsResponse: properties: after: - description: An offset token for current page. - example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 - type: string - continuation_marker: - description: An offset token for fetching the next page. Note that exactly - the same limit needs to be used on the request for fetching subsequent pages. - example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005 + description: An offset token for the current page. + example: '01631667477600000000000100100374' + pattern: '[A-Fa-f0-9]{32}' type: string data: - description: Array of the PSK entries. The array is empty if there are no - PSKs. + description: The list of trust anchors of the account. items: - $ref: '#/definitions/PreSharedKeyWithoutSecret' - minLength: 0 + $ref: '#/definitions/TrustAnchorResponse' type: array has_more: - description: More results are available. - example: true + description: Indicates whether additional results are available. + example: false type: boolean limit: - description: The value of limit query parameter from the request, or default - if not specified. - example: 50 + default: 50 + description: Indicates how many objects to retrieve in the page. The minimum + limit is 2 and the maximum is 1000. Limit values outside of this range are + set to the closest limit. + maximum: 1000 + minimum: 2 type: integer object: - description: The type of this API object is a "list". + description: The type of this API object is a `list`. example: list type: string order: - description: Record order based on creation time. + description: Indicates how to order the entries based on when they were created. + enum: + - ASC + - DESC example: DESC type: string - required: - - object - - limit - - order - - has_more - - data + total_count: + example: 1 + format: integer + type: integer type: object - LoginHistory: - description: Represents an entry in login history. + GlobalSignCredentials: + description: 'The credentials required to connect to the GlobalSign account. + + The values should be taken from GlobalSign support upon account creation.' properties: - date: - description: UTC time RFC3339 for this login attempt. - example: '2018-02-14T17:52:07Z' - format: date-time + api_key: + description: Unique ID for API client (provided by GlobalSign). + example: e510e289e6cd8947 + maxLength: 1000 type: string - ip_address: - description: IP address of the client. - example: 127.0.0.1 + api_secret: + description: API secret matching the API key (provided by GlobalSign). + example: a477a8393d17a55ecb2ba6a61f58feb84770b621 + format: password + maxLength: 250 type: string - success: - description: Flag indicating whether login attempt was successful or not. - example: true - type: boolean - user_agent: - description: User Agent header from the login request. - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + client_certificate: + description: 'The client certificate provided by GlobalSign to allow HTTPS + connection over TLS/SSL. + + The certificate wraps a public key that matches a private key provided by + the customer. + + The certificate must be in PEM format.' + example: '"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END + CERTIFICATE-----"' + maxLength: 3000 + type: string + passphrase: + description: 'The passphrase to decrypt the private key in case it is encrypted. + + Empty if the private key is not encrypted.' + example: helloworld + format: password + maxLength: 1000 + type: string + private_key: + description: 'The private key that matches the client certificate to allow + HTTPS connection over TLS/SSL. + + The private key may be encrypted using a symmetric encryption key derived + from a passphrase. + + The private key must be in PEM format.' + example: '"-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: + DES-EDE3-CBC,CCAC26A4133947CB\n\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\n-----END + RSA PRIVATE KEY-----"' + maxLength: 3000 type: string required: - - date - - ip_address - - success - - user_agent + - api_key + - api_secret + - client_certificate + - private_key type: object - LoginProfile: - description: Represents a user login profile in Device Management. + GroupCreationInfo: + description: This object is used when creating new groups. properties: - id: - description: ID of the identity provider. + members: + $ref: '#/definitions/SubjectList' + description: The members of the group as arrays of user and API key IDs. + name: + description: The group name. + maxLength: 100 + type: string + required: + - name + type: object + GroupIdList: + items: + example: 01705c6383f6c85b76f92f4e00000000 + type: string + type: array + GroupSummary: + description: This object contains basic information about groups. + properties: + account_id: + description: The ID of the account this group belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + apikey_count: + description: The number of API keys in this group. + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + application_count: + description: The number of applications in this group. + example: 0 + format: int32 + type: integer + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + etag: + description: API resource entity version. + example: '1' + type: string + id: + description: The ID of the group. + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string name: - description: Name of the identity provider. - readOnly: true + description: The name of the group. + example: Administrators + maxLength: 100 type: string - type: - description: Identity provider type. + object: + description: 'Entity name: always `group`.' enum: - - NATIVE - - MBED - - SAML2 - - OIDC - readOnly: true + - group + type: string + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string + user_count: + description: The number of users in this group. + example: 1 + format: int32 + type: integer required: + - account_id + - apikey_count + - etag - id + - name + - object + - user_count type: object - NotificationData: + GroupSummaryList: properties: - ct: - description: Content type. - example: text/plain + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - ep: - description: Device Management Device ID. - example: 015f3850a657000000000001001002ab + data: + description: A list of entities. + items: + $ref: '#/definitions/GroupSummary' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return (2-1000), or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' + enum: + - list type: string - max-age: - description: 'Max age value is an integer number of seconds between 0 and - 2^32-1, but the actual maximum cache time is limited to 3 days. - - Default 60.' - example: 60 + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC type: string - path: - description: URI path. - example: /sen/light + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + GroupUpdateInfo: + description: This object is used when Update groups. + properties: + name: + description: The group name. + maxLength: 100 type: string - payload: - description: Base64 encoded payload. - example: My4zMQ== + required: + - name + type: object + IdentityProviderCreationReq: + description: This object is used for creating new federated identity provider + module. + properties: + description: + description: Description for the identity provider. + maxLength: 500 + type: string + name: + description: Name of the identity provider. + maxLength: 100 + type: string + oidc_attributes: + $ref: '#/definitions/OIDCInfo' + description: OIDC specific attributes. + saml2_attributes: + $ref: '#/definitions/SAML2Req' + description: SAML2 specific attributes. + status: + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED + type: string + type: + description: Identity provider type. + enum: + - SAML2 + - OIDC type: string + required: + - name + - type type: object - NotificationEntry: - description: Represents an account notification entry. + IdentityProviderInfo: properties: account_id: - description: The ID of the account. + description: The ID of the account the identity provider belongs to. example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string @@ -4577,10 +5380,9 @@ definitions: example: '2018-02-13T09:35:20Z' format: date-time type: string - error_msg: - description: The error message if there was an error while transmitting the - account notification. - example: Connection error. + description: + description: Description for the identity provider. + maxLength: 500 type: string etag: description: API resource entity version. @@ -4591,55 +5393,69 @@ definitions: example: 01619571d01d0242ac12000600000000 pattern: '[a-f0-9]{32}' type: string - message: - description: The message contained in this account notification entry. - example: User limit has been reached. + is_default: + description: Flag indicating whether this is the global default identity provider. + readOnly: true + type: boolean + name: + description: Name of the identity provider. + maxLength: 100 type: string object: - description: 'Entity name: always ''notification-entry''' + description: 'Entity name: always ''identity-provider''' enum: - - notification-entry - type: string - receiver: - description: The receiver this account notification entry. - example: example@email-receiver.test - pattern: ^(?=.{3,254}$).+\@.+ + - identity-provider type: string - subject: - description: The subject of this account notification entry. - example: Account locked. + oidc_attributes: + $ref: '#/definitions/OIDCInfo' + description: OIDC specific attributes. + saml2_attributes: + $ref: '#/definitions/SAML2Info' + description: SAML2 specific attributes. + status: + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED type: string - success: - description: A flag indiciating whether the sending of this account notification - entry was successful, true or false. - type: boolean type: - description: The type of this account notification entry. - example: email + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - etag - id + - name - object + - type type: object - NotificationEntryList: + IdentityProviderList: properties: after: - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' type: string data: description: A list of entities. items: - $ref: '#/definitions/NotificationEntry' + $ref: '#/definitions/IdentityProviderInfo' type: array has_more: description: Flag indicating whether there are more results. example: false type: boolean limit: - description: The number of results to return, or equal to `total_count`. + description: The number of results to return , or equal to `total_count`. example: 50 format: int32 type: integer @@ -4667,832 +5483,752 @@ definitions: - object - total_count type: object - NotificationMessage: + IdentityProviderUpdateReq: + description: Update existing federated identity provider module. properties: - async-responses: - items: - $ref: '#/definitions/AsyncIDResponse' - type: array - de-registrations: - items: - description: The device ID. - example: 015f3850a657000000000001001002ab - type: string - type: array - notifications: - items: - $ref: '#/definitions/NotificationData' - type: array - reg-updates: - items: - $ref: '#/definitions/EndpointData' - type: array - registrations: - items: - $ref: '#/definitions/EndpointData' - type: array - registrations-expired: - items: - description: The device ID. - example: 015f3850a657000000000001001002ab - type: string - type: array - type: object - OIDCClaimMapping: - description: Mapping for non-standard OIDC claim names. - properties: - email: - description: Custom claim name for 'email'. - example: email_address - type: string - x-nullable: true - email_verified: - description: Custom claim name for 'email_verified'. - type: string - x-nullable: true - family_name: - description: Custom claim name for 'family_name'. - type: string - x-nullable: true - given_name: - description: Custom claim name for 'given_name'. + description: + description: Description for the identity provider. + maxLength: 500 type: string - x-nullable: true name: - description: Custom claim name for 'name'. + description: Name of the identity provider. + maxLength: 100 type: string - x-nullable: true - phone_number: - description: Custom claim name for 'phone_number'. + oidc_attributes: + $ref: '#/definitions/OIDCInfo' + description: OIDC specific attributes. + saml2_attributes: + $ref: '#/definitions/SAML2Req' + description: SAML2 specific attributes. + status: + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED type: string - x-nullable: true - sub: - description: Custom claim name for 'sub'. + type: + description: Identity provider type. + enum: + - SAML2 + - OIDC type: string - x-nullable: true - updated_at: - description: Custom claim name for 'updated_at'. + required: + - name + - type + type: object + IdpPublicKey: + description: Represents provider's public key and key ID used to sign ID tokens. + PEM-encoded. + properties: + key: + description: The public key. type: string - x-nullable: true - updated_at_pattern: - description: Custom pattern for claim 'updated_at' as defined by the Java - SimpleDateFormat class. - example: yyyy-MM-dd'T'HH:mm:ssXXX + kid: + description: The public key ID. type: string - x-nullable: true type: object - OIDCInfo: - description: Represents OIDC specific attributes. + Image: + format: binary + type: string + InternalServerErrorResponse: + description: 500 Internal server error response. properties: - authorization_endpoint: - description: URL of the OAuth 2.0 authorization endpoint. + code: + description: Response code. Always set to 500. + enum: + - 500 + type: integer + message: + description: A human-readable message with detailed info. type: string - x-nullable: true - auto_enrollment: - description: For future use. - type: boolean - x-nullable: true - claim_mapping: - $ref: '#/definitions/OIDCClaimMapping' - description: Mapping table for supporting custom OIDC claims. - x-nullable: true - client_id: - description: Client ID needed to authenticate and gain access to identity - provider's API. + object: + description: Always set to `error`. + enum: + - error type: string - x-nullable: true - client_secret: - description: Client secret needed to authenticate and gain access to identity - provider's API. + request_id: + description: Request ID type: string - x-nullable: true - end_session_endpoint: - description: URL of the provider's end session endpoint. + type: + description: Error type. Always set to `internal_error`. + enum: + - internal_error type: string - x-nullable: true - issuer: - description: Issuer of the identity provider. + required: + - object + - message + - request_id + - type + - code + type: object + KeyValue: + properties: + key: type: string - jwks_uri: - description: URL of the provider's JSON web key set document. + value: type: string - x-nullable: true - keys: - description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + required: + - key + - value + ListOfPreSharedKeysWithoutSecret: + properties: + after: + description: An offset token for current page. + example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 + type: string + continuation_marker: + description: An offset token for fetching the next page. Note that exactly + the same limit needs to be used on the request for fetching subsequent pages. + example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005 + type: string + data: + description: Array of the PSK entries. The array is empty if there are no + PSKs. items: - $ref: '#/definitions/IdpPublicKey' + $ref: '#/definitions/PreSharedKeyWithoutSecret' + minLength: 0 type: array - x-nullable: true - redirect_uri: - description: The URI needed to authenticate and gain access to identity provider's - API. Leave this empty to use the default redirect URI. + has_more: + description: More results are available. + example: true + type: boolean + limit: + description: The value of limit query parameter from the request, or default + if not specified. + example: 50 + type: integer + object: + description: The type of this API object is a "list". + example: list type: string - x-nullable: true - revocation_endpoint: - description: URL of the provider's token revocation endpoint. + order: + description: Record order based on creation time. + example: DESC type: string - x-nullable: true - scopes: - description: Space-separated list of scopes sent in the authentication request. - When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). - example: openid email + required: + - object + - limit + - order + - has_more + - data + type: object + Log: + properties: + account_id: + description: The ID of the account associated with the device. + example: 0168e7bff4f2263cf4be560700000000 type: string - token_endpoint: - description: URL of the OAuth 2.0 authorization endpoint. + app_name: + description: A tag indicating which application or software module produced + the log message. + example: modbus type: string - x-nullable: true - token_request_mode: - default: POST - description: One way to obtain the access token. Since the request results - in the transmission of clear-text credentials, the client must use the POST - mode. - enum: - - POST - - GET + created_at: + description: RFC 3339 UTC timestamp indicating when the resource entity was + created. + example: '2017-07-21T17:32:28Z' + format: date-time type: string - token_response_path: - description: Path to the standard data in the token response. Levels in the - JSON structure must be separated by '.' (dot) characters. - example: oidc.data + device_id: + description: Device ID. + example: 00005a4e027f0a580a01081c00000000 type: string - userinfo_endpoint: - description: URL of the OAuth 2.0 UserInfo endpoint. + etag: + description: Entity instance signature, or Unix timestamp of last customer + update. + example: stdout type: string - x-nullable: true - required: - - issuer - type: object - ParentAccountInfo: - description: Represents parent account contact details in responses. - properties: - admin_email: - description: The email address of the admin user who is the contact person - of the parent account. - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + id: + description: mUUID Entity ID. Each device log has a unique ID. + example: 2d238a89038b4ddb84699dd36a901063 + pattern: /^[(0-9)(a-f)]{32}$/ type: string - admin_name: - description: The name of the admin user who is the contact person of the parent - account. - example: J. Doe - maxLength: 100 + level: + description: Log entry severity level. + enum: + - DEBUG + - TRACE + - INFO + - WARNING + - ERROR + - CRITICAL + example: ERROR type: string - id: - description: The ID of the parent account. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + message: + description: Log message body. + example: 'ModbusRTU Driver: Failed to start undefined' type: string - type: object - PasswordPolicy: - properties: - minimum_length: - description: Minimum length for the password. - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: - - minimum_length - type: object - PendingServicePackage: - description: A pending service package. - properties: - created: - description: Service package creation time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + object: + description: Device log resource name. + example: device-log type: string - expires: - description: Service package expiration time in RFC3339 date-time with millisecond - accuracy and UTC time zone. + timestamp: + description: RFC 3339 UTC timestamp indicating indicating the device time + the message was printed. + example: '2017-07-21T17:40:28Z' format: date-time type: string - firmware_update_count: - description: Size of firmware update quota of this service package. - format: int32 - type: integer - id: - description: ID of this service package. + type: + description: Device log type. + example: syslog type: string - modified: - description: Service package latest modified time in RFC3339 date-time with - millisecond accuracy and UTC time zone. + type: object + LoginHistory: + description: Represents an entry in login history. + properties: + date: + description: UTC time RFC3339 for this login attempt. + example: '2018-02-14T17:52:07Z' format: date-time type: string - previous_id: - description: Previous service package ID. + ip_address: + description: IP address of the client. + example: 127.0.0.1 type: string - start_time: - description: Service package start time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + success: + description: Flag indicating whether login attempt was successful or not. + example: true + type: boolean + user_agent: + description: User Agent header from the login request. + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 type: string required: - - id - - previous_id - - created - - modified - - start_time - - expires - - firmware_update_count + - date + - ip_address + - success + - user_agent type: object - PreSharedKey: + LoginProfile: + description: Represents a user login profile in Device Management. properties: - endpoint_name: - description: The unique endpoint identifier that this PSK applies to. 16-64 - [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) - ASCII characters. - example: my-endpoint-0001 - pattern: ^[ -~]{16,64}$ + foreign_id: + description: The ID of the user in the identity provider's service. + example: fed/user_007 + readOnly: true type: string - secret_hex: - description: The secret of the PSK in hexadecimal. It is not case sensitive; - 4a is same as 4A, and it is allowed with or without 0x in the beginning. - The minimum length of the secret is 128 bits and maximum 256 bits. - example: 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a - pattern: ^(0[xX])?[0-9a-fA-F]{32,64}$ + id: + description: ID of the identity provider. + example: 01619571f3c00242ac12000600000000 + type: string + name: + description: Name of the identity provider. + example: Pelion + readOnly: true + type: string + type: + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + example: NATIVE + readOnly: true type: string required: - - endpoint_name - - secret_hex + - id type: object - PreSharedKeyWithoutSecret: + LogsPage: properties: - created_at: - description: The date-time (RFC3339) when this PSK was uploaded to Device - Management. - example: '2017-07-21T17:32:28.012Z' - format: date-time + after: + description: An offset token for current page. type: string - endpoint_name: - description: The unique endpoint identifier that this PSK applies to. 16-64 - [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) - ASCII characters. - example: my-endpoint-0001 - pattern: ^[ -~]{16,64}$ + x-nullable: true + data: + items: + $ref: '#/definitions/Log' + type: array + has_more: + description: Indicates whether more results are available. + example: false + type: boolean + limit: + description: Limit applied on number of device log resource objects retrieved + in the page (2-1000). + example: 100 + maximum: 1000 + minimum: 2 + type: integer + object: + description: Always `list`. + example: list type: string - required: - - endpoint_name + order: + description: Entry order based on creation time. + example: DESC + type: string + total_count: + example: 1 + format: integer + type: integer type: object - Presubscription: + NotificationData: properties: - endpoint-name: - description: The device ID. + ct: + description: Content type. + example: text/plain + type: string + ep: + description: Device Management Device ID. example: 015f3850a657000000000001001002ab type: string - endpoint-type: - example: Light + max-age: + description: 'Max age value is an integer number of seconds between 0 and + 2^32-1, but the actual maximum cache time is limited to 3 days. + + Default 60.' + example: 60 + type: string + path: + description: URI path. + example: /sen/light + type: string + payload: + description: Base64 encoded payload. + example: My4zMQ== type: string - resource-path: - items: - description: A resource URI. - example: /sen/light - type: string - minItems: 1 - type: array type: object - PresubscriptionArray: - items: - $ref: '#/definitions/Presubscription' - type: array - PreviousServicePackage: - description: Previously active service package. + NotificationEntry: + description: Represents an account notification entry. properties: - created: - description: Service package creation time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + account_id: + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - end_time: - description: Service package end time in RFC3339 date-time with millisecond - accuracy and UTC time zone. + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' format: date-time type: string - expires: - description: Service package expiration time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + error_msg: + description: The error message if there was an error while transmitting the + account notification. + example: Connection error. + type: string + etag: + description: API resource entity version. + example: '1' type: string - firmware_update_count: - description: Size of firmware update quota of this service package. - format: int32 - type: integer id: - description: ID of this service package. + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - modified: - description: Service package latest modified time in RFC3339 date-time with - millisecond accuracy and UTC time zone. - format: date-time + message: + description: The message contained in this account notification entry. + example: User limit has been reached. type: string - next_id: - description: Next service package ID if this service package has a pending - renewal or null. + object: + description: 'Entity name: always ''notification-entry''' + enum: + - notification-entry type: string - previous_id: - description: Previous service package ID. + receiver: + description: The receiver this account notification entry. + example: example@email-receiver.test + pattern: ^(?=.{3,254}$).+\@.+ type: string - reason: - description: Reason the service package was ended. - enum: - - renewed - - terminated + subject: + description: The subject of this account notification entry. + example: Account locked. type: string - start_time: - description: Service package start time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + success: + description: A flag indiciating whether the sending of this account notification + entry was successful, true or false. + type: boolean + type: + description: The type of this account notification entry. + example: email type: string required: + - etag - id - - start_time - - created - - modified - - expires - - end_time - - firmware_update_count - - reason + - object type: object - QuotaUsageReport: - description: Account quota usage entry for queried month. + NotificationEntryList: properties: - amount: - description: Amount of quota usage entry. Negative if quota consumption. - format: int64 - type: integer - campaign_name: - description: 'Campaign name of quota usage entry. - - Null if quota usage entry type is not `reservation` or `reservation release`.' + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - time: - description: Added time of quota usage entry in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + data: + description: A list of entities. + items: + $ref: '#/definitions/NotificationEntry' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return, or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' + enum: + - list type: string - type: - description: Type of quota usage entry. + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' enum: - - reservation - - reservation_release - - reservation_termination - - package_renewal - - package_creation - - package_termination + - ASC + - DESC type: string + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer required: - - amount - - type - - time + - data + - has_more + - limit + - object + - total_count type: object - ReportAccountContactInfo: - description: Account contact information. + NotificationMessage: properties: - address_line1: - type: string - address_line2: - type: string - city: - type: string - company: + async-responses: + items: + $ref: '#/definitions/AsyncIDResponse' + type: array + de-registrations: + items: + description: The device ID. + example: 015f3850a657000000000001001002ab + type: string + type: array + notifications: + items: + $ref: '#/definitions/NotificationData' + type: array + reg-updates: + items: + $ref: '#/definitions/EndpointData' + type: array + registrations: + items: + $ref: '#/definitions/EndpointData' + type: array + registrations-expired: + items: + description: The device ID. + example: 015f3850a657000000000001001002ab + type: string + type: array + type: object + OIDCClaimMapping: + description: Mapping for non-standard OIDC claim names. + properties: + email: + description: Custom claim name for 'email'. + example: email_address type: string - contact: + x-nullable: true + email_verified: + description: Custom claim name for 'email_verified'. + example: email_verified type: string - country: + x-nullable: true + family_name: + description: Custom claim name for 'family_name'. + example: family_name type: string - email: + x-nullable: true + given_name: + description: Custom claim name for 'given_name'. + example: given_name type: string - id: - description: Account ID. + x-nullable: true + name: + description: Custom claim name for 'name'. + example: name type: string + x-nullable: true phone_number: + description: Custom claim name for 'phone_number'. + example: phone_number type: string - postal_code: - type: string - state: - type: string - required: - - id - - company - type: object - ReportBillingData: - properties: - active_devices: - format: int64 - minimum: 0 - type: integer - firmware_updates: - format: int64 - minimum: 0 - type: integer - generated: - description: Billing report generated time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + x-nullable: true + sub: + description: Custom claim name for 'sub'. + example: sub type: string - period_end: - description: Billing report end time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + x-nullable: true + updated_at: + description: Custom claim name for 'updated_at'. + example: updated_at type: string - period_start: - description: Billing report start time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time + x-nullable: true + updated_at_pattern: + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX type: string - sda_tokens: - format: int64 - minimum: 0 - type: integer - required: - - generated - - period_start - - period_end - - active_devices - - firmware_updates - - sda_tokens + x-nullable: true type: object - ReportNotFoundErrorResponse: - description: 404 Not found response. + OIDCInfo: + description: Represents OIDC specific attributes. properties: - code: - description: Response code. Always set to 404. - enum: - - 404 - type: integer - message: - description: A human-readable message with detailed info. + authorization_endpoint: + description: URL of the OAuth 2.0 authorization endpoint. type: string - object: - description: Always set to `error`. - enum: - - error + x-nullable: true + auto_enrollment: + description: For future use. + type: boolean + x-nullable: true + claim_mapping: + $ref: '#/definitions/OIDCClaimMapping' + description: Mapping table for supporting custom OIDC claims. + x-nullable: true + client_id: + description: Client ID needed to authenticate and gain access to identity + provider's API. type: string - request_id: - description: Request ID + x-nullable: true + client_secret: + description: Client secret needed to authenticate and gain access to identity + provider's API. type: string - type: - description: Error type. Always set to `report_not_found`. - enum: - - report_not_found + x-nullable: true + end_session_endpoint: + description: URL of the provider's end session endpoint. type: string - required: - - object - - message - - request_id - - type - - code - type: object - ReportResponse: - description: Billing report response. - properties: - account: - $ref: '#/definitions/ReportAccountContactInfo' - description: Account contact information. - aggregated: - $ref: '#/definitions/ReportBillingData' - description: Aggregated report billing data including all subtenant accounts, - if any. - billing_data: - $ref: '#/definitions/ReportBillingData' - description: Report billing data. - id: - description: Billing report ID. + x-nullable: true + issuer: + description: Issuer of the identity provider. type: string - month: - description: Month of requested billing report. - pattern: ^\d{4}-\d{2}$ - type: string - object: - description: Billing report response object. Always set to `billing-report`. - enum: - - billing-report - type: string - service_package: - $ref: '#/definitions/ServicePackageReport' - description: Report service package. - subtenants: - description: List of billing reports for subtenant accounts. Empty list if - account does not have any subtenant account. - items: - $ref: '#/definitions/SubtenantAccountReport' - type: array - required: - - id - - object - - account - - billing_data - - subtenants - - aggregated - - month - type: object - Resource: - properties: - obs: - description: '''Determines whether you can subscribe to changes for this resource. - It can have values `true` or `false`.''' - example: true - type: boolean - rt: - description: Application-specific resource type that describes this resource. - It is created by the [client side application](../connecting/resource-setup-in-device-management-client.html). - Not meant to be a human-readable name for the resource. Multiple resource - types may be included, separated by a space. - example: light_sensor - type: string - type: - description: 'The content type of the resource. - - - We recommend you use the **resource types** listed in the [LwM2M specification](http://technical.openmobilealliance.org/Technical/technical-information/omna/lightweight-m2m-lwm2m-object-registry).' - example: text/plain - type: string - uri: - description: The resource URL. - example: /sen/light - type: string - required: - - uri - type: object - ResourcePath: - description: A resource URI. - example: /sen/light - type: string - ResourcesData: - properties: - ct: - description: Content type. - example: text/plain - type: string - if: - description: Interface description that defines a name or URI that indicates - how to interact with the target resource. It describes a generic interface - type, such as a 'sensor'. - example: sensor - type: string - obs: - description: Whether the resource is observable (true/false). - example: true - type: boolean - path: - description: Resource's URI path. - example: /sen/light - type: string - rt: - description: 'Application-specific resource type that describes this resource. - It is created by the [client side application](../connecting/resource-setup-in-device-management-client.html). - - Not meant to be a human-readable name for the resource. Multiple resource - types may be included, separated by a space.' - example: light_sensor - type: string - type: object - SAML2Info: - description: Represents SAML2 specific attributes in responses. - properties: - assertion_endpoint: - description: URL of the service provider's assertion endpoint. Leave this - empty to use the default assertion endpoint. - type: string - x-nullable: true - idp_entity_id: - description: Entity ID of the identity provider. + jwks_uri: + description: URL of the provider's JSON web key set document. type: string x-nullable: true - idp_x509_certs: - description: List of public X509 certificates of the identity provider in - PEM format. + keys: + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. items: - type: string + $ref: '#/definitions/IdpPublicKey' type: array x-nullable: true - slo_endpoint: - description: URL of the identity provider's SLO endpoint. + redirect_uri: + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. type: string x-nullable: true - sp_entity_id: - description: Entity ID of the service provider. + revocation_endpoint: + description: URL of the provider's token revocation endpoint. type: string x-nullable: true - sp_x509_cert: - description: Public X509 certificate of the service provider in PEM format. - This is a read-only attribute, see API documentation about how to generate - a new one or how to delete it. - readOnly: true + scopes: + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email type: string - x-nullable: true - sso_endpoint: - description: URL of the identity provider's SSO endpoint. + token_endpoint: + description: URL of the OAuth 2.0 authorization endpoint. type: string x-nullable: true - type: object - SAML2Req: - properties: - entity_descriptor: - description: Contains an entity descriptor document for the identity provider. - Can be used as an alternative method to provide the identity provider's - attributes. - format: byte - maxLength: 65535 - type: string - idp_entity_id: - description: Entity ID of the identity provider. - type: string - idp_x509_certs: - description: List of public X509 certificates of the identity provider. Certificates - must be in PEM format. - items: - type: string - type: array - slo_endpoint: - description: URL of the identity provider's SLO endpoint. + token_request_mode: + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the POST + mode. + enum: + - POST + - GET type: string - sp_entity_id: - description: Entity ID of the service provider. We recommend that you leave - it empty and let the system generate it. + token_response_path: + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data type: string - sso_endpoint: - description: URL of the identity provider's SSO endpoint. + userinfo_endpoint: + description: URL of the OAuth 2.0 UserInfo endpoint. type: string + x-nullable: true + required: + - issuer type: object - ServerCredentialsResponseData: + ObservationsCounter: + description: The number of resource observation event requests received from devices. + format: int64 + minimum: 0 + type: integer + ParentAccountInfo: + description: Represents parent account contact details in responses. properties: - created_at: - description: Creation UTC time RFC3339. - format: date-time + admin_email: + description: The email address of the admin user who is the contact person + of the parent account. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ type: string - etag: - description: API resource entity version. + admin_name: + description: The name of the admin user who is the contact person of the parent + account. + example: J. Doe + maxLength: 100 type: string id: - description: Unique entity ID. - type: string - object: - description: 'Entity name: always `server-credentials`.' - type: string - server_certificate: - description: PEM-format X.509 server certificate used to validate the server - certificate received during the TLS/DTLS handshake. - type: string - server_uri: - description: Server URI that the client connects to. + description: The ID of the parent account. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string type: object - ServicePackageMetadata: - description: Account's service package metadata. Value is `null` if service package - has expired. + PasswordPolicy: properties: - end_time: - description: Service package end time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string - remaining_quota: - description: Current available service package quota. - format: int64 - minimum: 0 - type: integer - reserved_quota: - description: Sum of all open reservations for this account. - format: int64 - minimum: 0 + minimum_length: + description: Minimum length for the password. + example: '8' + maximum: 512 + minimum: 8 type: integer - start_time: - description: Service package start time in RFC3339 date-time with millisecond - accuracy and UTC time zone. - format: date-time - type: string required: - - start_time - - end_time - - remaining_quota - - reserved_quota + - minimum_length type: object - ServicePackageQuota: - description: Quota of the service package. + PelionToDeviceMessagesCounter: + description: The number of messages from Device Management to the device. properties: - object: - description: Always set to `service-package-quota`. - enum: - - service-package-quota - type: string - quota: - description: Available quota for the service package. + proxy_requests: + $ref: '#/definitions/ProxyRequestsCounter' + subscriptions: + $ref: '#/definitions/SubscriptionsCounter' + total_count: + description: The number of all outbound requests sent to devices. format: int64 minimum: 0 type: integer required: - - object - - quota + - total_count + - proxy_requests + - subscriptions type: object - ServicePackageQuotaHistoryItem: - description: Quota history item. + PelionToWebappNotificationsCounter: + description: The number of notifications from Device Management to the web application + or portal. + format: int64 + minimum: 0 + type: integer + PendingServicePackage: + description: A pending service package. properties: - added: - description: Added time of quota history entry in RFC3339 date-time with millisecond + created: + description: Service package creation time in RFC3339 date-time with millisecond accuracy and UTC time zone. format: date-time type: string - amount: - description: Negative or positive quota usage. - format: int64 + expires: + description: Service package expiration time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + firmware_update_count: + description: Size of firmware update quota of this service package. + format: int32 type: integer id: - description: Service package quota history ID. - maxLength: 32 - minLength: 32 + description: ID of this service package. type: string - reason: - description: Type of quota usage entry. - enum: - - reservation - - reservation_release - - reservation_termination - - package_creation - - package_renewal - - package_termination + modified: + description: Service package latest modified time in RFC3339 date-time with + millisecond accuracy and UTC time zone. + format: date-time + type: string + previous_id: + description: Previous service package ID. + type: string + start_time: + description: Service package start time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time type: string - reservation: - $ref: '#/definitions/ServicePackageQuotaHistoryReservation' - description: Reservation details if reason is `reservation`, `reservation_releasem` - or `reservation_termination`. - type: object - service_package: - $ref: '#/definitions/ServicePackageQuotaHistoryServicePackage' - description: Service package details if reason is `package_creation`, `package_renewal` - or `package_termination`. - type: object required: - id - - added - - amount - - reason + - previous_id + - created + - modified + - start_time + - expires + - firmware_update_count type: object - ServicePackageQuotaHistoryReservation: - description: Service package quota history reservation object. + PreSharedKey: properties: - account_id: - description: Account ID. - maxLength: 250 - minLength: 1 + endpoint_name: + description: The unique endpoint identifier that this PSK applies to. 16-64 + [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) + ASCII characters. + example: my-endpoint-0001 + pattern: ^[ -~]{16,64}$ type: string - campaign_name: - description: Campaign name for this reservation. - maxLength: 250 - minLength: 1 + secret_hex: + description: The secret of the PSK in hexadecimal. It is not case sensitive; + 4a is same as 4A, and it is allowed with or without 0x in the beginning. + The minimum length of the secret is 128 bits and maximum 256 bits. + example: 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a + pattern: ^(0[xX])?[0-9a-fA-F]{32,64}$ type: string - id: - description: Reservation ID. - maxLength: 250 - minLength: 1 + required: + - endpoint_name + - secret_hex + type: object + PreSharedKeyWithoutSecret: + properties: + created_at: + description: The date-time (RFC3339) when this PSK was uploaded to Device + Management. + example: '2017-07-21T17:32:28.012Z' + format: date-time + type: string + endpoint_name: + description: The unique endpoint identifier that this PSK applies to. 16-64 + [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) + ASCII characters. + example: my-endpoint-0001 + pattern: ^[ -~]{16,64}$ type: string required: - - id - - account_id - - campaign_name - ServicePackageQuotaHistoryResponse: - description: Quota history of the service package. + - endpoint_name + type: object + Presubscription: properties: - after: - description: ID after which to fetch quota history. - maxLength: 32 - minLength: 32 + endpoint-name: + description: Device Management device ID. + example: 015f3850a657000000000001001002ab type: string - data: - description: List of history items. Empty list if no entries are available. + endpoint-type: + example: Light + type: string + resource-path: items: - $ref: '#/definitions/ServicePackageQuotaHistoryItem' + description: A resource URI. + example: /sen/light + type: string + minItems: 1 type: array - has_more: - description: If there is next available quota history paged response to fetch. - type: boolean - limit: - description: Maximum number of quota history entries contained in one paged - response. - format: int32 - maximum: 1000 - minimum: 2 - type: integer - object: - description: Always set to `service-package-quota-history`. - enum: - - service-package-quota-history - type: string - total_count: - description: Sum of all quota history entries that should be returned. - format: int32 - minimum: 0 - type: integer - required: - - object - - data - - has_more - - limit - - total_count type: object - ServicePackageQuotaHistoryServicePackage: - description: Service package quota history service package object. + PresubscriptionArray: + items: + $ref: '#/definitions/Presubscription' + type: array + PreviousServicePackage: + description: Previously active service package. properties: + created: + description: Service package creation time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + end_time: + description: Service package end time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string expires: description: Service package expiration time in RFC3339 date-time with millisecond accuracy and UTC time zone. @@ -5505,8 +6241,23 @@ definitions: id: description: ID of this service package. type: string + modified: + description: Service package latest modified time in RFC3339 date-time with + millisecond accuracy and UTC time zone. + format: date-time + type: string + next_id: + description: Next service package ID if this service package has a pending + renewal or null. + type: string previous_id: - description: Previous service package ID, or null. + description: Previous service package ID. + type: string + reason: + description: Reason the service package was ended. + enum: + - renewed + - terminated type: string start_time: description: Service package start time in RFC3339 date-time with millisecond @@ -5516,95 +6267,92 @@ definitions: required: - id - start_time + - created + - modified - expires + - end_time - firmware_update_count - ServicePackageReport: - description: Account's current service package data included in reporting. - properties: - aggregated_quota_usage: - items: - $ref: '#/definitions/AggregatedQuotaUsageReport' - type: array - metadata: - $ref: '#/definitions/ServicePackageMetadata' - description: '`Null` if service package has expired.' - x-nullable: true - quota_usage: - items: - $ref: '#/definitions/QuotaUsageReport' - type: array - required: - - metadata - - quota_usage - - aggregated_quota_usage + - reason type: object - ServicePackagesResponse: - description: Contains service package information for currently active service - package, currently pending service package, and all previous service packages - associated with the account. + ProxyRequestsCounter: + description: The number of device command requests sent to devices. + format: int64 + minimum: 0 + type: integer + ProxyResponsesCounter: + description: The number of device command responses received from devices. + format: int64 + minimum: 0 + type: integer + QuotaUsageReport: + description: Account quota usage entry for queried month. properties: - active: - $ref: '#/definitions/ActiveServicePackage' - description: Currently active service package. Can be null. - type: object - object: - description: Always set to `service-packages`. + amount: + description: Amount of quota usage entry. Negative if quota consumption. + format: int64 + type: integer + campaign_name: + description: 'Campaign name of quota usage entry. + + Null if quota usage entry type is not `reservation` or `reservation release`.' + type: string + time: + description: Added time of quota usage entry in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + type: + description: Type of quota usage entry. enum: - - service-packages + - reservation + - reservation_release + - reservation_termination + - package_renewal + - package_creation + - package_termination + - package_tokens_edit type: string - pending: - $ref: '#/definitions/PendingServicePackage' - description: Current pending service package. Can be null. - type: object - previous: - description: List of previous service packages. - items: - $ref: '#/definitions/PreviousServicePackage' - type: array required: - - object - - previous - SubjectList: - description: Represents arrays of user and API key IDs. + - amount + - type + - time + type: object + RegisterWebsocketChannel: properties: - apikeys: - description: An array of API key IDs. - items: - type: string - type: array - users: - description: An array of user IDs. - items: - type: string - type: array + serialization: + $ref: '#/definitions/SerializationConfigData' type: object - SubscriptionsList: - description: A list of resource URIs, one per line. - example: /sen/light - type: string - SubtenantAccountReport: - description: Billing report for subtenant account. - properties: - account: - $ref: '#/definitions/SubtenantReportAccountContactInfo' - description: Subtenant account contact information. - billing_data: - $ref: '#/definitions/ReportBillingData' - description: Report billing data. - service_package: - $ref: '#/definitions/SubtenantServicePackageReport' - description: Report service package for subtenant account. - required: - - account - - billing_data - type: object - SubtenantReportAccountContactInfo: - description: Subtenant account contact information. + RegistrationDeletesCounter: + description: The number of deregistration requests received from devices. + format: int64 + minimum: 0 + type: integer + RegistrationUpdatesCounter: + description: The number of device registration update requests received from devices. + format: int64 + minimum: 0 + type: integer + RegistrationsCounter: + description: The number of full device registration requests received from devices. + format: int64 + minimum: 0 + type: integer + ReportAccountContactInfo: + description: Account contact information. properties: address_line1: type: string address_line2: type: string + alias: + type: string + business_model: + description: The business model selected for the account to generate the billing + reports. + enum: + - active_device_business_model + - api_calls_1_business_model + type: string city: type: string company: @@ -5614,7 +6362,7 @@ definitions: country: type: string customer_subtenant_id: - description: Account subtenant ID, if a subtenant. + description: Account tenant ID, valid only for tenants. type: string email: type: string @@ -5630,1010 +6378,1156 @@ definitions: required: - id - company - - customer_subtenant_id type: object - SubtenantServicePackageReport: + ReportBillingData: properties: - quota_usage: - items: - $ref: '#/definitions/QuotaUsageReport' - type: array + active_devices: + $ref: '#/definitions/ActiveDevicesCounter' + device_to_pelion_messages: + $ref: '#/definitions/DeviceToPelionMessagesCounter' + firmware_updates: + $ref: '#/definitions/FirmwareUpdatesCounter' + generated: + description: Billing report generated time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + pelion_to_device_messages: + $ref: '#/definitions/PelionToDeviceMessagesCounter' + pelion_to_webapp_notifications: + $ref: '#/definitions/PelionToWebappNotificationsCounter' + period_end: + description: Billing report end time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + period_start: + description: Billing report start time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time + type: string + rest_api_requests_with_api_key_token: + $ref: '#/definitions/RestApiRequestsWithApiKeyTokenCounter' + rest_api_requests_with_user_token: + $ref: '#/definitions/RestApiRequestsWithUserTokenCounter' + sda_tokens: + $ref: '#/definitions/SdaTokensCounter' required: - - quota_usage + - generated + - period_start + - period_end + - active_devices + - firmware_updates + - sda_tokens type: object - TrustedCertificateReq: - description: Represents a trusted certificate in upload requests. + ReportNotFoundErrorResponse: + description: 404 Not found response. properties: - certificate: - description: A chain of X509.v3 trusted certificates in PEM format. The chain - must contain all certificates from root to leaf. Otherwise, the signature - parameter is required. + code: + description: Response code. Always set to 404. + enum: + - 404 + type: integer + message: + description: A human-readable message with detailed info. type: string - description: - description: Human readable description of this certificate. - maxLength: 500 + object: + description: Always set to `error`. + enum: + - error type: string - x-nullable: true - enrollment_mode: - description: Certificate is used in enrollment mode. Default value is false. - type: boolean - name: - description: Certificate name. - maxLength: 100 + request_id: + description: Request ID type: string - service: - description: Service name where the certificate must be used. + type: + description: Error type. Always set to `report_not_found`. enum: - - lwm2m - - bootstrap + - report_not_found type: string - signature: - description: 'DEPRECATED: Base64 encoded signature of the account ID signed - by the certificate to upload. The signature must be hashed with SHA256.' + required: + - object + - message + - request_id + - type + - code + type: object + ReportResponse: + description: Billing report response. + properties: + account: + $ref: '#/definitions/ReportAccountContactInfo' + description: Account contact information. + aggregated: + $ref: '#/definitions/ReportBillingData' + description: Aggregated report billing data including all tenant accounts, + if any. + billing_data: + $ref: '#/definitions/ReportBillingData' + description: Report billing data. + id: + description: Billing report ID. type: string - status: - description: Status of the certificate. + month: + description: Month of requested billing report. + pattern: ^\d{4}-\d{2}$ + type: string + object: + description: Billing report response object. Always set to `billing-report`. enum: - - ACTIVE - - INACTIVE + - billing-report type: string + service_package: + $ref: '#/definitions/ServicePackageReport' + description: Service package report. + subtenants: + description: List of billing reports for tenant accounts. Empty list if account + does not have any tenant account. + items: + $ref: '#/definitions/SubtenantAccountReport' + type: array required: - - certificate - - name - - service + - id + - object + - account + - billing_data + - month type: object - TrustedCertificateResp: - description: Represents a trusted certificate in responses. + Resource: properties: - account_id: - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + obs: + description: '''Determines whether you can subscribe to changes for this resource. + It can have values `true` or `false`.''' + example: true + type: boolean + rt: + description: Application-specific resource type that describes this resource, + created by the [client application](https://www.pelion.com/docs/device-management/current/resources/resource-setup-in-device-management-client.html). + Not meant to be a human-readable name for the resource. Multiple resource + types may be included, separated by a space. + example: light_sensor type: string - certificate: - description: X509.v3 trusted certificate in PEM format. - example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' + type: + description: 'The content type of the resource. + + + We recommend you use the content types listed in the [LwM2M specification](http://www.openmobilealliance.org/wp/omna/lwm2m/lwm2mregistry.html).' + example: text/plain type: string - certificate_fingerprint: - description: A SHA-256 fingerprint of the certificate. - example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 + uri: + description: 'The resource URL. This can be the path to: + + + - An object; for example, `3303`. + + - An object instance; for example `3303/0`. + + - A resource; for example `3303/0/5602`. + + + For more information about the Device Management resource model, please + see the [Device Management documentation](https://www.pelion.com/docs/device-management/current/resources/resource-model.html).' + example: /sen/light type: string - created_at: - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time + required: + - uri + type: object + ResourceArray: + items: + $ref: '#/definitions/Resource' + type: array + ResourcePath: + description: A resource URI. + example: /sen/light + type: string + ResourcesData: + properties: + ct: + description: Content type. + example: text/plain type: string - description: - description: Human readable description of this certificate. - example: Certificate created by me. - maxLength: 500 + if: + description: Interface description that defines a name or URI that indicates + how to interact with the target resource. It describes a generic interface + type, such as a 'sensor'. + example: sensor type: string - x-nullable: true - device_execution_mode: - description: Device execution mode where 1 means a developer certificate. - example: 1 - format: int32 - type: integer - enrollment_mode: - description: If true, signature is not required. Default value false. - example: false + obs: + description: Whether the resource is observable (true/false). + example: true type: boolean - etag: - description: API resource entity version. - example: '1' - type: string - id: - description: Entity ID. - example: 01619571d01d0242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - issuer: - description: Issuer of the certificate. - example: CN=issuer + path: + description: Resource's URI path. + example: /sen/light type: string - name: - description: Certificate name. - example: My certificate - maxLength: 100 + rt: + description: 'Application-specific resource type that describes this resource. + It is created by the [client side application](https://www.pelion.com/docs/device-management/current/resources/resource-setup-in-device-management-client.html). + + Not meant to be a human-readable name for the resource. Multiple resource + types may be included, separated by a space.' + example: light_sensor type: string - object: - description: 'Entity name: always ''trusted-cert''' - enum: - - trusted-cert + type: object + RestApiRequestsWithApiKeyTokenCounter: + description: The number of REST API requests made with access keys in web applications + or other service integrations. + format: int64 + minimum: 0 + type: integer + RestApiRequestsWithUserTokenCounter: + description: The number of REST API requests from user sessions in Device Management + Portal. + format: int64 + minimum: 0 + type: integer + SAML2Info: + description: Represents SAML2 specific attributes in responses. + properties: + assertion_endpoint: + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. type: string - owner_id: - description: The ID of the owner. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + x-nullable: true + idp_entity_id: + description: Entity ID of the identity provider. type: string x-nullable: true - service: - description: Service name where the certificate is used. - enum: - - lwm2m - - bootstrap - type: string - status: - description: Status of the certificate. - enum: - - ACTIVE - - INACTIVE - example: ACTIVE - type: string - subject: - description: Subject of the certificate. - example: CN=subject + idp_x509_certs: + description: List of public X509 certificates of the identity provider in + PEM format. + items: + type: string + type: array + x-nullable: true + slo_endpoint: + description: URL of the identity provider's SLO endpoint. type: string - updated_at: - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + x-nullable: true + sp_entity_id: + description: Entity ID of the service provider. type: string - valid: - description: This read-only flag indicates whether the certificate is valid - or not. - example: true + x-nullable: true + sp_x509_cert: + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. readOnly: true - type: boolean - validity: - description: Expiration time in UTC formatted as RFC3339. - example: '2038-02-14T15:24:14Z' - format: date-time - type: string - required: - - account_id - - certificate - - certificate_fingerprint - - etag - - id - - issuer - - name - - object - - service - - subject - - validity - type: object - TrustedCertificateRespList: - properties: - after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' type: string - data: - description: A list of entities. - items: - $ref: '#/definitions/TrustedCertificateResp' - type: array - has_more: - description: Flag indicating whether there are more results. - example: false - type: boolean - limit: - description: The number of results to return (2-1000), or equal to `total_count`. - example: 50 - format: int32 - type: integer - object: - description: 'Entity name: always `list`.' - enum: - - list - type: string - order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' - enum: - - ASC - - DESC + x-nullable: true + sso_endpoint: + description: URL of the identity provider's SSO endpoint. type: string - total_count: - description: The total number of records, if requested. - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count + x-nullable: true type: object - TrustedCertificateUpdateReq: - description: Represents a trusted certificate in update requests. + SAML2Req: properties: - certificate: - description: A chain of X509.v3 trusted certificates in PEM format. The chain - must contain all certificates from root to leaf. Otherwise, the signature - parameter is required. - type: string - description: - description: Human readable description of this certificate. - maxLength: 500 + entity_descriptor: + description: Contains an entity descriptor document for the identity provider. + Can be used as an alternative method to provide the identity provider's + attributes. + format: byte + maxLength: 65535 type: string - x-nullable: true - enrollment_mode: - description: Certificate is used in enrollment mode. Default value is false. - type: boolean - name: - description: Certificate name. - maxLength: 100 + idp_entity_id: + description: Entity ID of the identity provider. type: string - service: - description: Service name where the certificate must be used. - enum: - - lwm2m - - bootstrap + idp_x509_certs: + description: List of public X509 certificates of the identity provider. Certificates + must be in PEM format. + items: + type: string + type: array + slo_endpoint: + description: URL of the identity provider's SLO endpoint. type: string - signature: - description: 'DEPRECATED: Base64 encoded signature of the account ID signed - by the certificate to be uploaded. The signature must be hashed with SHA256.' + sp_entity_id: + description: Entity ID of the service provider. We recommend that you leave + it empty and let the system generate it. type: string - status: - description: Status of the certificate. - enum: - - ACTIVE - - INACTIVE + sso_endpoint: + description: URL of the identity provider's SSO endpoint. type: string type: object - UnauthorizedErrorResponse: - description: 401 Unauthorized response. + SdaTokensCounter: + description: The total number of devices included in the Secure Device Access + tokens used in the requested time. A single Secure Device Access token can be + linked to multiple endpoint names. + format: int64 + minimum: 0 + type: integer + SerializationConfigData: + description: Serialization configuration for a channel. properties: - code: - description: Response code. Always set to 401. - enum: - - 401 + cfg: + $ref: '#/definitions/SerializationConfigObjectV2' + max_chunk_size: + description: Maximum number of messages in NotificationMessage container delivered + in one request. Default is 10000. Using a very low value for high troughput + applications may cause lag in notification delivery, as a new chunk is sent + only after the previous one has been acknowledged. Using a high value is + recommended and safe, as chunks are sent quickly after notifications are + received from devices. See [notification sending logic](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html#notification-sending-logic) + for more details. + example: '500' + maximum: 10000 + minimum: 100 type: integer - message: - description: A human-readable message with detailed info. - type: string - object: - description: Always set to `error`. - enum: - - error - type: string - request_id: - description: Request ID - type: string type: - description: Error type. Always set to `unauthorized`. + default: v2 + description: 'Serialization type: v2 - specified in NotificationMessage.' enum: - - unauthorized + - v2 + example: v2 type: string required: - - object - - message - - request_id - type - - code type: object - UpdateCampaign: + SerializationConfigObjectV2: + description: Serialization configuration object according to configuration type. + properties: + deregistrations_as_object: + default: false + description: 'Defines serialization format for ''de-registrations'' and ''registrations-expired''. + If set to true, + + de-registration and registration-expired messages will be represented as + json objects and can have + + additional fields: ''uid'', ''timestamp'', ''original-ep'', together with + the ''ep'' field. If set to false, + + (default) - de-registration and ''registration-expired'' will be represented + by a string, + + containing only data from ''ep'' field. + + ' + example: 'true' + type: boolean + include_original_ep: + default: false + description: 'Include ''original-ep'' message field in serialized objects. + This is the endpoint_name from the device. + + ' + example: 'true' + type: boolean + include_timestamp: + default: false + description: 'Include ''timestamp'' message field in serialized objects. The + timestamp represents the time that the notification service receives the + message and sorts it into the queue. Timestamp provides information of queue + length (web-app current time - timestamp = delay). + + ' + example: 'true' + type: boolean + include_uid: + default: false + description: 'Include ''uid'' message field to serialized objects. This is + message ID, and can be used for duplicate detection. + + ' + example: 'true' + type: boolean + type: object + ServerCredentialsResponseData: properties: - autostop_reason: - description: Text description of why a campaign failed to start or why a campaign - stopped. - example: Insufficient billing credit. - type: string created_at: - description: The time the update campaign was created - example: '2017-05-22T12:37:55.576563Z' + description: Creation UTC time RFC3339. format: date-time type: string - description: - description: An optional description of the campaign - example: '' - maxLength: 2000 - type: string - device_filter: - description: The filter for the devices the campaign is targeting at - example: id__eq=00000000000000000000000000000000 - type: string etag: - description: The entity instance signature - example: '2017-05-22T12:37:58.753425Z' - type: string - finished: - description: The campaign finish timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time + description: API resource entity version. type: string id: - description: The campaign ID - example: '00000000000000000000000000000000' - type: string - name: - description: The campaign name - example: campaign - maxLength: 128 + description: Unique entity ID. type: string object: - description: The API resource entity - example: update-campaign - type: string - phase: - description: The current phase of the campaign. - readOnly: true + description: 'Entity name: always `server-credentials`.' type: string - root_manifest_id: - example: '00000000000000000000000000000000' + server_certificate: + description: PEM-format X.509 server certificate used to validate the server + certificate received during the TLS/DTLS handshake. type: string - root_manifest_url: - example: http://example.com/00000000000000000000000000000000 + server_uri: + description: Server URI that the client connects to. type: string - started_at: - example: '2017-05-22T12:37:55.576563Z' + type: object + ServicePackageMetadata: + description: Account's service package metadata. Value is `null` if service package + has expired. + properties: + end_time: + description: Service package end time in RFC3339 date-time with millisecond + accuracy and UTC time zone. format: date-time type: string - state: - description: 'DEPRECATED: The state of the campaign (use phase instead).' - enum: - - draft - - scheduled - - allocatingquota - - allocatedquota - - quotaallocationfailed - - checkingmanifest - - checkedmanifest - - devicefetch - - devicecopy - - devicecheck - - publishing - - deploying - - deployed - - manifestremoved - - expired - - stopping - - autostopped - - userstopped - - conflict - type: string - x-deprecation: - comment: Use phase instead - end_of_life_at: '2020-03-18T14:55:20+00:00' - issued_at: '2019-03-18T14:55:20+00:00' - links: [] - updated_at: - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - when: - description: The scheduled start time for the campaign. The campaign will - start within 1 minute when then start time has elapsed. - example: '2017-05-22T12:37:55.576563Z' + remaining_quota: + description: Current available service package quota. + format: int64 + minimum: 0 + type: integer + reserved_quota: + description: Sum of all open reservations for this account. + format: int64 + minimum: 0 + type: integer + start_time: + description: Service package start time in RFC3339 date-time with millisecond + accuracy and UTC time zone. format: date-time type: string - x-nullable: true - UpdateCampaignEqNeqFilter: + required: + - start_time + - end_time + - remaining_quota + - reserved_quota + type: object + ServicePackageQuota: + description: Quota of the service package. properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - description: - type: string - device_filter: - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - finished: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - id: - type: string - name: - type: string - root_manifest_id: - type: string - started_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - state: - type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - when: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + object: + description: Always set to `service-package-quota`. + enum: + - service-package-quota type: string - UpdateCampaignGteLteFilter: + quota: + description: Available quota for the service package. + format: int64 + minimum: 0 + type: integer + required: + - object + - quota + type: object + ServicePackageQuotaHistoryItem: + description: Quota history item. properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - finished: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - started_at: - example: '2017-05-22T12:37:55.576563Z' + added: + description: Added time of quota history entry in RFC3339 date-time with millisecond + accuracy and UTC time zone. format: date-time type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + amount: + description: Negative or positive quota usage. + format: int64 + type: integer + id: + description: Service package quota history ID. + maxLength: 32 + minLength: 32 type: string - when: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + reason: + description: Type of quota usage entry. + enum: + - reservation + - reservation_release + - reservation_termination + - package_creation + - package_renewal + - package_termination + - package_tokens_edit type: string - x-nullable: true - UpdateCampaignInNinFilter: + reservation: + $ref: '#/definitions/ServicePackageQuotaHistoryReservation' + description: Reservation details if reason is `reservation`, `reservation_release` + or `reservation_termination`. + type: object + service_package: + $ref: '#/definitions/ServicePackageQuotaHistoryServicePackage' + description: Service package details if reason is `package_creation`, `package_renewal`, + `package_termination`, or `package_tokens_edit`. + type: object + required: + - id + - added + - amount + - reason + type: object + ServicePackageQuotaHistoryReservation: + description: Service package quota history reservation object. properties: - created_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - description: - type: string - device_filter: - type: string - etag: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + account_id: + description: Account ID. + maxLength: 250 + minLength: 1 type: string - finished: - example: '2017-05-22T12:37:55.576563Z' - format: date-time + campaign_name: + description: Campaign name for this reservation. + maxLength: 250 + minLength: 1 type: string id: + description: Reservation ID. + maxLength: 250 + minLength: 1 type: string - name: - type: string - root_manifest_id: - type: string - started_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - state: - type: string - updated_at: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - when: - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - UpdateCampaignPage: + required: + - id + - account_id + - campaign_name + ServicePackageQuotaHistoryResponse: + description: Quota history of the service package. properties: after: - example: null + description: ID after which to fetch quota history. + maxLength: 32 + minLength: 32 type: string data: - example: '[]' + description: List of history items. Empty list if no entries are available. items: - $ref: '#/definitions/UpdateCampaign' + $ref: '#/definitions/ServicePackageQuotaHistoryItem' type: array has_more: + description: If there is next available quota history paged response to fetch. type: boolean limit: + description: Maximum number of quota history entries in one paged response. + format: int32 + maximum: 1000 + minimum: 2 type: integer object: - example: list + description: Always set to `service-package-quota-history`. + enum: + - service-package-quota-history type: string order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + description: History item record order based on creation time. type: string total_count: + description: Sum of all quota history entries that should be returned. + format: int32 + minimum: 0 type: integer - UpdateCampaignPostRequest: + required: + - object + - data + - has_more + - limit + - total_count + - order + type: object + ServicePackageQuotaHistoryServicePackage: + description: Service package quota history service package object. properties: - description: - description: An optional description of the campaign - example: '' - maxLength: 2000 - type: string - device_filter: - description: The filter for the devices the campaign is targeting at - example: id__eq=00000000000000000000000000000000 + expires: + description: Service package expiration time in RFC3339 date-time with millisecond + accuracy and UTC time zone. + format: date-time type: string - name: - description: The name for this campaign - example: campaign - maxLength: 128 - type: string - object: - description: The API resource entity - example: update-campaign - type: string - root_manifest_id: - example: '00000000000000000000000000000000' - maxLength: 32 + firmware_update_count: + description: Size of firmware update quota of this service package. + format: int32 + type: integer + id: + description: ID of this service package. type: string - state: - description: 'DEPRECATED: The state of the campaign (use phase instead)' - enum: - - draft - - scheduled + previous_id: + description: Previous service package ID, or null. type: string - x-deprecation: - comment: Use phase instead - end_of_life_at: '2020-03-18T14:55:20+00:00' - issued_at: '2019-03-18T14:55:20+00:00' - links: [] - when: - description: The scheduled start time for the update campaign. Not in use. - example: '2017-05-22T12:37:55.576563Z' + start_time: + description: Service package start time in RFC3339 date-time with millisecond + accuracy and UTC time zone. format: date-time type: string - x-nullable: true required: - - device_filter - UpdateCampaignPutRequest: + - id + - start_time + - expires + - firmware_update_count + ServicePackageReport: + description: Account's current service package data included in reporting. properties: - description: - description: An optional description of the campaign - example: '' - maxLength: 2000 - type: string - device_filter: - description: The filter for the devices the campaign is targeting at - example: id__eq=00000000000000000000000000000000 - type: string - name: - description: The campaign's name - example: campaign - maxLength: 128 - type: string - object: - description: The API resource entity - example: update-campaign - type: string - root_manifest_id: - example: '00000000000000000000000000000000' - maxLength: 32 - type: string - state: - description: 'DEPRECATED: The state of the campaign (use phase instead).' - enum: - - draft - - scheduled - - allocatingquota - - allocatedquota - - quotaallocationfailed - - checkingmanifest - - checkedmanifest - - devicefetch - - devicecopy - - devicecheck - - publishing - - deploying - - deployed - - manifestremoved - - expired - - stopping - - autostopped - - userstopped - - conflict - type: string - x-deprecation: - comment: Use phase instead - end_of_life_at: '2020-03-18T14:55:20+00:00' - issued_at: '2019-03-18T14:55:20+00:00' - links: [] - when: - description: The scheduled start time for the update campaign. Not in use. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string + aggregated_quota_usage: + items: + $ref: '#/definitions/AggregatedQuotaUsageReport' + type: array + metadata: + $ref: '#/definitions/ServicePackageMetadata' + description: '`Null` if service package has expired.' x-nullable: true - UpdatedResponse: - description: Represents a response to an update request. + quota_usage: + items: + $ref: '#/definitions/QuotaUsageReport' + type: array + required: + - quota_usage + type: object + ServicePackagesResponse: + description: Contains service package information for currently active service + package, currently pending service package, and all previous service packages + associated with the account. properties: - code: - description: Response code. - example: 200 - format: int32 - type: integer - id: - description: Entity ID. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - message: - description: A human readable message with detailed info. - example: success - type: string + active: + $ref: '#/definitions/ActiveServicePackage' + description: Currently active service package. Can be null. + type: object object: - description: 'Entity name: ''user'', ''api-key'', ''group'', ''policy'' or - ''account''.' - enum: - - user - - api-key - - group - - policy - - account - type: string - request_id: - description: Request ID. - example: 0161991d63150242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - type: - description: 'Response type: success.' + description: Always set to `service-packages`. enum: - - success + - service-packages type: string + pending: + $ref: '#/definitions/PendingServicePackage' + description: Current pending service package. Can be null. + type: object + previous: + description: List of previous service packages. + items: + $ref: '#/definitions/PreviousServicePackage' + type: array required: - - code - - id - - message - object - - request_id - - type - type: object - UploadChunkInfo: - properties: - created_at: &id013 - description: The time the entity was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: &id014 - description: API resource entity version - example: '2017-05-22T12:37:58.753425Z' - type: string - hash: - description: The hash of the chunk. The default hash is MD5. If no Content-MD5 - header is supplied as part of uploading the chunk then this will be empty. - type: string - id: - description: The chunk number - example: 1 - type: integer - length: - description: The length of the chunk - example: 1234 - type: integer - object: - description: 'Entity name: always ''upload-info''' - example: upload-info - type: string - updated_at: &id015 - description: The time the entity was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - upload_job_id: - description: The upload job ID. - example: '00000000000000000000000000000000' - type: string - type: object - UploadChunkInfoPage: + - previous + StatisticsReportListResponse: properties: after: - example: null + description: An offset token for the current page. + example: '01631667477600000000000100100374' type: string data: + description: List of manufacturing statistics. items: - $ref: '#/definitions/UploadChunkInfo' + $ref: '#/definitions/StatisticsReportResponse' type: array + end: + example: '2020-03-30T07:30:00.000' + format: date-time + type: string has_more: + description: Indicates whether additional results are available. + example: false type: boolean limit: - format: int32 + description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. + example: 50 + maximum: 1000 + minimum: 2 type: integer object: + description: The API object type. The object type of this API is "list". example: list type: string order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + description: Record order based on record identifier. + example: DESC + type: string + start: + example: '2020-03-29T07:30:00.000' + format: date-time type: string total_count: - format: int32 + example: 100 + format: integer type: integer - UploadJob: + type: object + StatisticsReportResponse: properties: - complete: - description: A flag that indicates job completion - example: false - type: boolean - created_at: *id013 - description: &id027 - description: Human-readable description - example: New Linux update for my devices - maxLength: 2000 - type: string - etag: *id014 - firmware_image_id: - description: ID of the firmware image - empty until the Upload Job is complete - example: '00000000000000000000000000000000' + avg_provisioning_time_sec: + description: Average provisioning time in seconds. + example: '2.5' + type: number + device_count: + description: Number of manufactured devices. + example: '103' + type: integer + factory_id: + description: Factory ID. + example: '164' + type: integer + factory_name: + description: Factory name. + example: factory 1 type: string id: - description: The upload job ID - example: '00000000000000000000000000000000' + description: Unique row identifier. + example: 01612df56f3b0a580a010fc700000000 + format: uuid + pattern: '[a-fA-F0-9]{32}' + type: string + max_provisioning_time_sec: + description: Maximum provisioning time in seconds. + example: '3.1' + type: number + min_provisioning_time_sec: + description: Minimum provisioning time in seconds. + example: '2.2' + type: number + workstation: + description: Workstation. + example: ws_1 type: string - name: &id028 - description: Human-readable name - example: New Linux update - maxLength: 128 + type: object + StatisticsSeriesRecord: + description: Statistics view record. + properties: + active_devices: + $ref: '#/definitions/ActiveDevicesCounter' + device_to_pelion_messages: + $ref: '#/definitions/DeviceToPelionMessagesCounter' + firmware_updates: + $ref: '#/definitions/FirmwareUpdatesCounter' + id: + description: Metric ID. + pattern: '[0-9a-fA-F]{32}' type: string object: - description: 'Entity name: always ''upload-job''' - example: upload-job - type: string - status: - description: Status of the upload job - example: in_progress + description: Always `billing-statistics`. + enum: + - billing-statistics + type: string + pelion_to_device_messages: + $ref: '#/definitions/PelionToDeviceMessagesCounter' + pelion_to_webapp_notifications: + $ref: '#/definitions/PelionToWebappNotificationsCounter' + rest_api_requests_with_api_key_token: + $ref: '#/definitions/RestApiRequestsWithApiKeyTokenCounter' + rest_api_requests_with_user_token: + $ref: '#/definitions/RestApiRequestsWithUserTokenCounter' + sda_tokens: + $ref: '#/definitions/SdaTokensCounter' + timestamp: + description: 'The start of the interval for which the data is aggregated, + in RFC3339 date-time format with millisecond accuracy and UTC time zone. + + Each interval includes data for the time greater than or equal to the timestamp + and less than the next interval''s starting.' + format: date-time type: string - updated_at: *id015 + required: + - object + - id + - timestamp + - active_devices + - firmware_updates + - sda_tokens type: object - UploadJobPage: + StatisticsViewResponse: + description: Contains the statistics view of Device Management usage information. properties: after: - example: null + description: The ID after which to fetch the statistics view. + pattern: '[0-9a-fA-F]{32}' type: string data: + description: List of statistics view records. Empty list if no records are + available. items: - $ref: '#/definitions/UploadJob' + $ref: '#/definitions/StatisticsSeriesRecord' type: array has_more: + description: Indicates whether a new statistics view response is available. type: boolean limit: + default: 50 + description: Maximum number of statistics view records on a page. format: int32 + maximum: 1000 + minimum: 2 type: integer object: - example: list + description: Always `list`. + enum: + - list type: string order: - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - enum: - - ASC - - DESC - example: ASC + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' type: string total_count: - format: int32 + description: Sum of all statistics view records to return. Included in the + response when you use the query parameter include=total_count. + format: int64 + minimum: 0 type: integer - UserInfoReq: - description: Represents a user in requests towards Device Management. + required: + - object + - data + - has_more + - limit + - order + type: object + SubjectList: + description: Represents arrays of user and API key IDs. properties: - address: - description: Address. - maxLength: 100 + apikeys: + description: An array of API key IDs. + items: + type: string + type: array + x-deprecation: + comment: This field is deprecated, use 'applications' + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + applications: + description: An array of applicationIDs. + items: + type: string + type: array + users: + description: An array of user IDs. + items: + type: string + type: array + type: object + SubscriptionsCounter: + description: The number of subscription requests sent to devices. + format: int64 + minimum: 0 + type: integer + SubscriptionsList: + description: A list of resource URIs, one per line. + example: /sen/light + type: string + SubtenantAccountReport: + description: Billing report for tenant account. + properties: + account: + $ref: '#/definitions/SubtenantReportAccountContactInfo' + description: Tenant account contact information. + billing_data: + $ref: '#/definitions/ReportBillingData' + description: Report billing data. + service_package: + $ref: '#/definitions/SubtenantServicePackageReport' + description: service package report for the tenant. + required: + - account + - billing_data + type: object + SubtenantReportAccountContactInfo: + description: Tenant account contact information. + properties: + address_line1: + type: string + address_line2: + type: string + alias: + type: string + business_model: + description: The business model selected for the account to generate the billing + reports. + enum: + - active_device_business_model + - api_calls_1_business_model + type: string + city: + type: string + company: + type: string + contact: + type: string + country: + type: string + customer_subtenant_id: + description: Account tenant ID, valid only for tenants. type: string - x-nullable: true email: - description: The email address. - pattern: ^(?=.{3,254}$).+\@.+ type: string - full_name: - description: The full name of the user. - maxLength: 100 + id: + description: Account ID. type: string - x-nullable: true - groups: - description: A list of IDs of the groups this user belongs to. + phone_number: + type: string + postal_code: + type: string + state: + type: string + required: + - id + - company + - customer_subtenant_id + type: object + SubtenantServicePackageReport: + properties: + quota_usage: items: - type: string + $ref: '#/definitions/QuotaUsageReport' type: array - is_gtc_accepted: - description: A flag indicating that the user has accepted General Terms and - Conditions. - type: boolean - is_marketing_accepted: - description: A flag indicating that the user has consented to receive marketing - information. - type: boolean - login_profiles: - description: A list of login profiles for the user. Specified as the identity - providers the user should be associated with. Only the ID attribute of the - login profile should be set in the request object. + required: + - quota_usage + type: object + TierHistory: + properties: + tier: + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + updatedAt: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + TokenRequest: + properties: + aud: + description: 'Array of \:\ tuples representing devices for + which access is being requested. There must be at least one id/ep tuple.
+ \ ::= id|ep
\::=[a-zA-Z0-9+/=- ]+
\ + :== \ ":" \
\ can be up to 60 characters + long, and can contain spaces.
+ + The audience array can contain up to 50 tuples. If IAM does not authorize + even one item in the list, Secure Device Access does not authorize the whole + request and does not return an access token (access denied).' items: - $ref: '#/definitions/LoginProfile' + $ref: '#/definitions/AudienceItem' + maxItems: 50 + minItems: 1 type: array - password: - description: The password for a new user. Generated when not present in the - request. + cnf: + description: The Android application proof-of-possession public key. + format: The public key in PEM format. + type: string + grant_type: + description: Hardcoded - can only be "client_credentials". + type: string + scope: + description: The space-delimited list of operations that user is requesting + permission for. The array must contain at least one scope item. A scope + item can have up to 60 characters. A scope list can hold up to 20 scope + items.
\::=[a-zA-Z][a-zA-Z0-9-]*
\::= \ + | \ " " | \ " " \
The scope being requested + must match the action that the Android application eventually performs on + the IoT device. The device matches the scope in the access token to the + action requested in the operation bundle. + format: scope-item scope-item ... + type: string + required: + - grant_type + - aud + - scope + - cnf + type: object + TokenResponse: + properties: + access_token: + description: The generated CWT (CBOR Web Token) access token as a Base64 string. + format: byte + type: string + granted_until: + description: Grant expiration UTC time RFC3339. + format: date-time + type: string + type: object + TransactionsCounter: + description: A transaction is a data block of 512 bytes processed by Device Management. + It can be sent either by the device (device --> Device Management) or received + by the device (Device Management --> device). A transaction does not include + IP, TCP or UDP, TLS or DTLS packet overhead. It only contains the packet payload + (full CoAP packet including CoAP headers). + format: int64 + minimum: 0 + type: integer + TrustAnchorResponse: + properties: + created_at: *id017 + description: + description: The updated notes about the trust anchor. + format: free text + maxLength: 256 + minLength: 1 + type: string + etag: *id018 + fingerprint: + description: The SHA256 of the trust anchor public key; the prefix 'mbed.ta.' + followed by the trust anchor public key as a SHA256 hash in Base64-encoded + DER format. + format: byte + type: string + id: *id019 + object: *id020 + public_key: + description: The trust anchor public key in PEM format. + format: byte + type: string + public_key_der: + description: The generated trust anchor public key in Base64-encoded DER format. + format: byte + type: string + updated_at: *id021 + type: object + TrustedCertificateReq: + description: Represents a trusted certificate in upload requests. + properties: + certificate: + description: A chain of X509.v3 trusted certificates in PEM format. The chain + must contain all certificates from root to leaf. Otherwise, the signature + parameter is required. + type: string + description: + description: Human readable description of this certificate. + maxLength: 500 type: string x-nullable: true - phone_number: - description: Phone number. + enrollment_mode: + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' + type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] + name: + description: Certificate name. maxLength: 100 type: string - x-nullable: true - username: - description: A username. - pattern: '[\w\-,._@+=]{4,30}' + service: + description: Service name where the certificate must be used. + enum: + - lwm2m + - bootstrap + type: string + signature: + description: 'DEPRECATED: Base64 encoded signature of the account ID signed + by the certificate to upload. The signature must be hashed with SHA256.' + type: string + status: + description: Status of the certificate. + enum: + - ACTIVE + - INACTIVE type: string - x-nullable: true required: - - email + - certificate + - name + - service type: object - UserInfoResp: - description: Represents a user in Device Management. + TrustedCertificateResp: + description: Represents a trusted certificate in responses. properties: account_id: description: The ID of the account. example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string - active_sessions: - description: List of active user sessions. - items: - $ref: '#/definitions/ActiveSession' - type: array - address: - description: Address. - example: 110 Fulbourn Rd, Cambridge, United Kingdom + certificate: + description: X509.v3 trusted certificate in PEM format. + example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' + type: string + certificate_fingerprint: + description: A SHA-256 fingerprint of the certificate. + example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 type: string - x-nullable: true created_at: description: Creation UTC time RFC3339. example: '2018-02-13T09:35:20Z' format: date-time type: string - creation_time: - description: A timestamp of the user creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - type: integer - custom_fields: - additionalProperties: - type: string - description: User's account-specific custom properties. The value is a string. - type: object - x-nullable: true - email: - description: The email address. - example: user@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + description: + description: Human readable description of this certificate. + example: Certificate created by me. + maxLength: 500 type: string - email_verified: - description: A flag indicating whether the user's email address has been verified - or not. - example: true + x-nullable: true + device_execution_mode: + description: Device execution mode where 1 means a developer certificate. + example: 1 + format: int32 + type: integer + enrollment_mode: + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' + example: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] etag: description: API resource entity version. example: '1' type: string - full_name: - description: The full name of the user. - example: User Doe - maxLength: 100 + id: + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - x-nullable: true - groups: - description: A list of IDs of the groups this user belongs to. - items: - type: string - type: array - id: - description: The ID of the user. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + issuer: + description: Issuer of the certificate. + example: CN=issuer + type: string + name: + description: Certificate name. + example: My certificate + maxLength: 100 type: string - is_gtc_accepted: - description: A flag indicating that the user has accepted General Terms and - Conditions. - example: true - type: boolean - is_marketing_accepted: - description: A flag indicating that the user has consented to receive marketing - information. - example: true - type: boolean - is_totp_enabled: - description: A flag indicating whether two-factor authentication (TOTP) has - been enabled. - example: true - type: boolean - last_login_time: - description: A timestamp of the latest login of the user, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - login_history: - description: Timestamps, succeedings, IP addresses and user agent information - of the last five logins of the user, with timestamps in RFC3339 format. - items: - $ref: '#/definitions/LoginHistory' - maxItems: 5 - type: array - login_profiles: - description: A list of login profiles for the user. Specified as the identity - providers the user is associated with. - items: - $ref: '#/definitions/LoginProfile' - type: array - x-nullable: true object: - description: 'Entity name: always `user`.' + description: 'Entity name: always ''trusted-cert''' enum: - - user + - trusted-cert type: string - password: - description: The password when creating a new user. It will be generated when - not present in the request. - example: PZf9eEUH43DAPE9ULINFeuj + owner_id: + description: The ID of the owner. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string x-nullable: true - password_changed_time: - description: A timestamp of the latest change of the user password, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - phone_number: - description: Phone number. - example: +44 (1223) 400 400 - maxLength: 100 + service: + description: Service name where the certificate is used. + enum: + - lwm2m + - bootstrap type: string - x-nullable: true status: - description: The status of the user. ENROLLING state indicates that the user - is in the middle of the enrollment process. INVITED means that the user - has not accepted the invitation request. RESET means that the password must - be changed immediately. INACTIVE users are locked out and not permitted - to use the system. + description: Status of the certificate. enum: - - ENROLLING - - INVITED - ACTIVE - - RESET - INACTIVE example: ACTIVE type: string - totp_scratch_codes: - description: A list of scratch codes for the two-factor authentication. Visible - only when 2FA is requested to be enabled or the codes regenerated. - items: - type: string - type: array - x-nullable: true + subject: + description: Subject of the certificate. + example: CN=subject + type: string updated_at: description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' format: date-time type: string - username: - description: A username. - example: admin - pattern: '[\w\-,._@+=]{4,30}' + valid: + description: This read-only flag indicates whether the certificate is valid + or not. + example: true + readOnly: true + type: boolean + validity: + description: Expiration time in UTC formatted as RFC3339. + example: '2038-02-14T15:24:14Z' + format: date-time type: string - x-nullable: true required: - account_id - - email + - certificate + - certificate_fingerprint - etag - id + - issuer + - name - object - - status + - service + - subject + - validity type: object - UserInfoRespList: + TrustedCertificateRespList: properties: after: - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' type: string data: description: A list of entities. items: - $ref: '#/definitions/UserInfoResp' + $ref: '#/definitions/TrustedCertificateResp' type: array has_more: description: Flag indicating whether there are more results. @@ -6668,2146 +7562,6660 @@ definitions: - object - total_count type: object - UserInvitationReq: - description: Represents a user invitation in requests towards Device Management. + TrustedCertificateUpdateReq: + description: Represents a trusted certificate in update requests. properties: - email: - description: The email address. - pattern: ^(?=.{3,254}$).+\@.+ + certificate: + description: A chain of X509.v3 trusted certificates in PEM format. The chain + must contain all certificates from root to leaf. Otherwise, the signature + parameter is required. type: string - groups: - description: A list of IDs of the groups this user has been invited to. - items: - type: string - type: array - login_profiles: - description: A list of login profiles for the user. Specified as the identity - providers the user should be associated with. Only the ID attribute of the - login profile should be set in the request object. - items: - $ref: '#/definitions/LoginProfile' - type: array - valid_for_days: - default: 30 - description: Specifies how many days the invitation will be valid for. - format: int32 - maximum: 100 - minimum: 1 - type: integer - required: - - email - type: object - UserInvitationResp: - description: Represents an user invitation in responses. - properties: - account_id: - description: The ID of the account the user is invited to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + description: + description: Human readable description of this certificate. + maxLength: 500 type: string - created_at: - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time + x-nullable: true + enrollment_mode: + description: Certificate is used in enrollment mode. Default value is false. + type: boolean + name: + description: Certificate name. + maxLength: 100 type: string - email: - description: Email address of the invited user. - example: friend@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + service: + description: Service name where the certificate must be used. Service cannot + be updated for developer certificates. + enum: + - lwm2m + - bootstrap type: string - etag: - description: API resource entity version. - example: '1' + signature: + description: 'DEPRECATED: Base64 encoded signature of the account ID signed + by the certificate to be uploaded. The signature must be hashed with SHA256.' type: string - expiration: - description: Invitation expiration as UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + status: + description: Status of the certificate. + enum: + - ACTIVE + - INACTIVE type: string - groups: - description: A list of IDs of the groups the user is invited to. - items: - type: string - type: array - id: - description: The ID of the invitation. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + type: object + UnauthorizedErrorResponse: + description: 401 Unauthorized response. + properties: + code: + description: Response code. Always set to 401. + enum: + - 401 + type: integer + message: + description: A human-readable message with detailed info. type: string - login_profiles: - description: A list of login profiles for the user. Specified as the identity - providers the user is associated with. - items: - $ref: '#/definitions/LoginProfile' - type: array - x-nullable: true object: - description: 'Entity name: always ''user-invitation''' + description: Always set to `error`. enum: - - user-invitation + - error type: string - updated_at: - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + request_id: + description: Request ID type: string - user_id: - description: The ID of the invited user. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + type: + description: Error type. Always set to `unauthorized`. + enum: + - unauthorized type: string required: - - account_id - - email - - etag - - id - object - - user_id - type: object - UserInvitationRespList: + - message + - request_id + - type + - code + type: object + UpdateCampaign: properties: - after: - description: The entity ID to fetch after the given one. - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + active_at: + description: The time the campaign entered the active state. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - data: - description: A list of entities. - items: - $ref: '#/definitions/UserInvitationResp' - type: array - has_more: - description: Flag indicating whether there are more results. - example: false + approval_required: + description: Flag indicating whether approval is needed to start the campaign. + example: 'false' type: boolean - limit: - description: The number of results to return (2-1000), or equal to `total_count`. - example: 50 - format: int32 - type: integer - object: - description: 'Entity name: always `list`.' - enum: - - list + archived_at: + description: The time the campaign was archived. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - order: - description: 'The order of the records to return based on creation time. Available - values: ASC, DESC; by default ASC.' + autostop: + description: Flag indicating whether the campaign should be auto-stopped on + reaching a threshold. + example: 'false' + type: boolean + autostop_reason: + description: Text description of why a campaign failed to start or why a campaign + stopped. + example: Insufficient billing credit. + type: string + autostop_success_percent: + description: Percent of successful device updates to auto stop the campaign. + example: '85.00' + format: double + type: number + campaign_strategy: &id022 + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not + add new devices after it has started. A `continuous` campaign means that + devices may be added to the campaign after it has started. The default is + `one-shot`. enum: - - ASC - - DESC + - one-shot + - continuous type: string - total_count: - description: The total number of records, if requested. - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - UserUpdateReq: - description: Represents a user in requests towards Device Management. - properties: - address: - description: Address. - maxLength: 100 + created_at: *id014 + description: + description: An optional description of the campaign. + example: This campaign updates Class XX devices to version 1.34 + maxLength: 2000 type: string - x-nullable: true - email: - description: The email address. Not allowed to update other user's email address. - pattern: ^(?=.{3,254}$).+\@.+ + device_filter: + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. + example: state__eq=registered type: string - x-nullable: true - full_name: - description: The full name of the user. - maxLength: 100 + etag: *id015 + finished: + description: The time the campaign finished. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - x-nullable: true - groups: - description: A list of group IDs this user belongs to. Can be updated by the - Account Admin only. - items: - type: string - type: array - x-nullable: true - is_gtc_accepted: - description: A flag indicating that the user has accepted General Terms and - Conditions. - type: boolean - x-nullable: true - is_marketing_accepted: - description: A flag indicating that the user has consented to receive marketing - information. - type: boolean - x-nullable: true - is_totp_enabled: - description: A flag indicating whether mandatory two-factor authentication - (TOTP) is enabled. - type: boolean - x-nullable: true - login_profiles: - description: '''A list of login profiles for the user, specified as identity - providers associated with the user. Only the ID attribute of the login profile - should be set in the request object. The list cannot be empty. Only an account - admin may update login profiles.''' - items: - $ref: '#/definitions/LoginProfile' - type: array - x-nullable: true - phone_number: - description: Phone number. - maxLength: 100 + id: + description: The campaign ID. + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' type: string - x-nullable: true - status: - description: The status of the user. ENROLLING indicates that the user is - in the middle of the enrollment process. INVITED means that the user has - not accepted the invitation request. RESET means that the password must - be changed immediately. INACTIVE users are locked out and not permitted - to use the system. Can be changed by the Aggregator Admin only. + name: + description: The campaign name. + example: campaign + maxLength: 128 + type: string + object: + description: 'Entity name: always ''update-campaign''.' + example: update-campaign + type: string + phase: + description: The phase of the campaign. enum: - - ENROLLING - - INVITED - - ACTIVE - - RESET - - INACTIVE - example: ACTIVE + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived type: string - x-nullable: true - username: - description: A username. - pattern: '[\w\-,._@+=]{4,30}' + root_manifest_id: + description: The ID of the manifest that will be sent to the device as part + of the campaign. + example: 016e83dce36a00000000000100100102 type: string - x-nullable: true - type: object - Webhook: - properties: - headers: - additionalProperties: - type: string - description: The headers (key/value) sent with the notification. Optional. - example: '{"authorization" : "f4b93d6e-4652-4874-82e4-41a3ced0cd56"}' - type: object - url: - description: The URL to which the notifications are sent. We recommend that - you serve this URL over HTTPS. - example: https://www.example.com/my-webhook + root_manifest_url: + description: The URL for the manifest that will be sent to the device as part + of the campaign. + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 type: string - required: - - url - type: object - WebsocketChannel: - properties: - queue_size: - default: 0 - description: Number of events in the channel's event queue waiting to be delivered. - example: 0 - type: integer - status: - default: disconnected - description: Channel status is 'connected' when the channel has an active - WebSocket bound to it. The state is 'disconnected' when either the channel - or the WebSocket bound to it is closed. + started_at: + description: The time the campaign was started. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + starting_at: + description: The time the campaign will be started. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + state: + description: The state of the campaign. enum: - - connected - - disconnected - example: disconnected + - draft + - scheduled + - allocatingquota + - allocatedquota + - quotaallocationfailed + - checkingmanifest + - checkedmanifest + - devicefetch + - devicecopy + - devicecheck + - publishing + - deploying + - deployed + - manifestremoved + - expired + - stopping + - autostopped + - userstopped + - conflict type: string - type: object - error-response: + x-deprecation: + comment: Use phase instead + end_of_life_at: '2020-03-18T14:55:20+00:00' + issued_at: '2019-03-18T14:55:20+00:00' + links: [] + stopped_at: + description: The time the campaign was stopped. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + stopping_at: + description: The time the campaign will be stopped. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: *id016 + when: + description: The scheduled start time for the campaign. The campaign will + start within 1 minute when then start time has elapsed. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + x-nullable: true + UpdateCampaignEqNeqFilter: properties: - code: - description: HTTP response code. - format: int32 - type: integer - fields: - description: Details of the error fields. - items: - $ref: '#/definitions/fields' - type: array - message: - description: Description of the error. + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - object: - description: Response type, always "error". + description: type: string - request_id: - description: Request ID. + device_filter: type: string - type: - description: Type of error. + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - type: object - fields: - properties: - message: - description: Error description. + finished: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + id: + pattern: '[A-Fa-f0-9]{32}' type: string name: - description: The field name in the request for which the validation has failed. type: string - type: object - metric: + root_manifest_id: + pattern: '[A-Fa-f0-9]{32}' + type: string + started_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + state: + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + when: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + UpdateCampaignGteLteFilter: properties: - bootstraps_failed: - description: The number of failed bootstraps the account has performed. Bootstrap - is the process of provisioning a Lightweight Machine to Machine Client to - a state where it can initiate a management session to a new Lightweight - Machine to Machine Server. - format: int64 - type: integer - bootstraps_pending: - description: The number of pending bootstraps the account has performed. Bootstrap - is the process of provisioning a Lightweight Machine to Machine Client to - a state where it can initiate a management session to a new Lightweight - Machine to Machine Server. - format: int64 - type: integer - bootstraps_successful: - description: The number of successful bootstraps the account has performed. - Bootstrap is the process of provisioning a Lightweight Machine to Machine - Client to a state where it can initiate a management session to a new Lightweight - Machine to Machine Server. - format: int64 - type: integer - connect_rest_api_error: - description: The number of failed [Connect API](/docs/current/service-api-references/device-management-connect.html) - requests that have been performed using the account. This metric does not - consider the response from the device, it includes only the responses to - the HTTP requests used to manage the device. This metric includes only messages - handled by the Connect service, it does not include any HTTP errors returned - by firewall as result of malformed messages. - format: int64 - type: integer - connect_rest_api_success: - description: The number of successful [Connect API](/docs/current/service-api-references/device-management-connect.html) - requests that have been performed using the account. This metric does not - consider the response from the device, it includes only the responses to - the HTTP requests used to manage the device. - format: int64 - type: integer - deleted_registrations: - description: The number of deleted registrations (deregistrations) linked - to the account. Deregistration is the process of removing the device registration - from the Device Management Connect registry. The deregistration is usually - initiated by the device. Device Management Connect no longer handles requests - for a deregistered device. - format: int64 - type: integer - device_observations: - description: '**(Beta)** The number of notifications received by the Device - Management Connect service from the devices linked to the account. The device - pushes notifications to Device Management Connect when you have successfully - subscribed to the device resources using [Connect API](/docs/current/service-api-references/device-management-connect.html) - endpoints. - - ' - format: int64 - type: integer - device_proxy_request_error: - description: '**(Beta)** The number of failed proxy requests from the Device - Management Connect service to devices linked to the account. Device Management - Connect makes proxy requests to devices when you try to read or write values - to device resources using [Connect API](/docs/current/service-api-references/device-management-connect.html) - endpoints. - - ' - format: int64 - type: integer - device_proxy_request_success: - description: '**(Beta)** The number of successful proxy requests from the - Device Management Connect service to devices linked to the account. Device - Management Connect makes proxy requests to devices when you try to read - or write values to device resources using [Connect API](/docs/current/service-api-references/device-management-connect.html) - endpoints. - - ' - format: int64 - type: integer - device_subscription_request_error: - description: '**(Beta)** The number of failed subscription requests from the - Device Management Connect service to devices linked to the account. Device - Management Connect makes subscription requests to devices when you try to - subscribe to a resource path using [Connect API](/docs/current/service-api-references/device-management-connect.html) - endpoints. - - ' - format: int64 - type: integer - device_subscription_request_success: - description: '**(Beta)** The number of successful subscription requests from - the Device Management Connect service to devices linked to the account. - Device Management Connect makes subscription requests to devices when you - try to subscribe to a resource path using [Connect API](/docs/current/service-api-references/device-management-connect.html) - endpoints. - - ' - format: int64 - type: integer - expired_registrations: - description: The number of expired registrations linked to the account. Device - Management Connect removes the device registrations when the devices cannot - update their registration before the expiry of the lifetime. Device Management - Connect no longer handles requests for a device whose registration has expired - already. - format: int64 - type: integer - full_registrations: - description: The number of full registrations linked to the account. Full - registration is the process of registering a device with Device Management - Connect by providing its lifetime and capabilities such as the resource - structure.The registered status of the device does not guarantee that the - device is active and accessible from Device Management Connect at any point - of time. - format: int64 - type: integer - handshakes_successful: - description: The number of successful TLS handshakes the account has performed. - The SSL or TLS handshake enables the SSL or TLS client and server to establish - the secret keys with which they communicate. A successful TLS handshake - is required for establishing a connection with Device Management Connect - for any operaton such as registration, registration update and deregistration. - format: int64 - type: integer + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + finished: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + started_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + when: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + x-nullable: true + UpdateCampaignInNinFilter: + properties: + created_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + description: + type: string + device_filter: + type: string + etag: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + finished: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string id: - description: A unique metric ID. + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' type: string - registration_updates: - description: The number of registration updates linked to the account. Registration - update is the process of updating the registration status with Device Management - Connect to update or extend the lifetime of the device. - format: int64 - type: integer - timestamp: - description: UTC time in RFC3339 format. The timestamp is the starting point - of the interval for which the data is aggregated. Each interval includes - data for the time greater than or equal to the timestamp and less than the - next interval's starting point. + name: + type: string + root_manifest_id: + example: 015c6029f6f9000000000001001000f4 + pattern: '[A-Fa-f0-9]{32}' + type: string + started_at: + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - transactions: - description: The number of transaction events from or to devices linked to - the account. A transaction is a 512-byte block of data processed by Device - Management. It can be either sent by the device (device --> Device Management) - or received by the device (Device Management --> device). A transaction - does not include IP, TCP or UDP, TLS or DTLS packet overhead. It only contains - the packet payload (full CoAP packet including CoAP headers). - format: int64 - type: integer - type: object - successful-response: + state: + type: string + updated_at: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + when: + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + UpdateCampaignPage: properties: after: - description: The metric ID included in the request or null. + example: null type: string data: items: - $ref: '#/definitions/metric' + $ref: '#/definitions/UpdateCampaign' type: array has_more: - description: Indicates whether there are more results for you to fetch in - the next page. type: boolean limit: - description: The limit used in the request to retrieve the results. type: integer object: - description: API resource name. + description: 'Entity name: always ''list''.' + example: list + type: string + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC + example: ASC type: string total_count: - description: The total number of records available. type: integer - type: object -host: api.us-east-1.mbedcloud.com -info: - description: Pelion Device Management API build from the publicly defined API definitions. - title: Pelion Device Management API - version: '3' -paths: - /v2/device-requests/{device-id}: - post: - consumes: - - application/json - description: 'This API provides an interface to asynchronously call methods - on a device. - - - The `async-id` is provided by the client, enabling the client to track the - end-to-end flow with an identifier - - that is relevant to the end application. For example, a web application''s - session ID along with the device ID - - and the resource path could be used as the `async-id`. This also avoids any - race conditions with - - [the notification channel](/docs/current/integrate-web-app/event-notification.html). - All responses are sent through the - - currently configured notification channel as an **AsyncIDResponse**. - - - For `GET` methods, values may be fetched from an internal cache, instead of - contacting the device. - - - The server queues requests if it cannot reach the device at the time of the - request. The queue is limited to 20 - - requests. The queueing behaviour is affected by the `retry` and the `expiry-seconds` - parameters. If the device - - is not reached, or the device fails to respond when the request is made, the - server queues the request - - and retries within the given expiry period the next time the device contacts - the server. The requests from + UpdateCampaignPostRequest: + properties: + approval_required: + default: false + type: boolean + autostop: + default: true + type: boolean + autostop_success_percent: + default: 100.0 + type: number + campaign_strategy: *id022 + description: + description: An optional description of the campaign. + example: a description + maxLength: 2000 + type: string + device_filter: + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. + example: state__eq=registered + type: string + name: + default: default_object_name + description: The name for this campaign. + maxLength: 128 + type: string + root_manifest_id: + example: 016e83b46477000000000001001001f3 + pattern: '[A-Fa-f0-9]{32}' + type: string + state: + description: 'DEPRECATED: The state of the campaign (use phase instead)' + enum: + - draft + - scheduled + type: string + x-deprecation: + comment: Use phase instead + end_of_life_at: '2020-03-18T14:55:20+00:00' + issued_at: '2019-03-18T14:55:20+00:00' + links: [] + when: + description: The scheduled start time for the update campaign. Not in use. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + x-nullable: true + required: + - device_filter + UpdateCampaignPutRequest: + properties: + approval_required: + default: false + type: boolean + autostop: + default: true + type: boolean + autostop_success_percent: + default: 100.0 + type: number + description: + description: An optional description of the campaign. + example: description + format: free text + maxLength: 2000 + type: string + device_filter: + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. + example: state__eq=registered + type: string + name: + description: The campaign's name. + example: campaign + format: free text + maxLength: 128 + type: string + root_manifest_id: + example: 016e83dce36a00000000000100100201 + pattern: '[A-Fa-f0-9]{32}' + type: string + state: + description: 'DEPRECATED: The state of the campaign (use phase instead).' + enum: + - draft + - scheduled + - allocatingquota + - allocatedquota + - quotaallocationfailed + - checkingmanifest + - checkedmanifest + - devicefetch + - devicecopy + - devicecheck + - publishing + - deploying + - deployed + - manifestremoved + - expired + - stopping + - autostopped + - userstopped + - conflict + type: string + x-deprecation: + comment: Use phase instead + end_of_life_at: '2020-03-18T14:55:20+00:00' + issued_at: '2019-03-18T14:55:20+00:00' + links: [] + when: + description: The scheduled start time for the update campaign. Not in use. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + x-nullable: true + UpdateTrustAnchorRequest: + properties: + description: + description: The new description for the trust anchor. + format: free text + maxLength: 256 + minLength: 1 + type: string + required: + - description + type: object + UpdateTrustAnchorResponse: + properties: + created_at: *id017 + description: + description: The updated notes about the trust anchor. + format: free text + maxLength: 256 + minLength: 1 + type: string + etag: *id018 + fingerprint: + description: The SHA256 of the trust anchor public key; the prefix 'mbed.ta.' + followed by the trust anchor public key as a SHA256 hash in Base64-encoded + DER format. + format: byte + type: string + id: *id019 + object: *id020 + public_key: + description: The trust anchor public key in PEM format. + format: byte + type: string + public_key_der: + description: The generated trust anchor public key in Base64-encoded DER format. + format: byte + type: string + updated_at: *id021 + type: object + UploadChunkInfo: + properties: + created_at: *id014 + etag: *id015 + hash: + description: The hash of the chunk. The default hash is MD5. If no Content-MD5 + header is supplied as part of uploading the chunk then this will be empty. + type: string + id: + description: The chunk number. + example: 1 + type: integer + length: + description: The length of the chunk. + example: 1234 + type: integer + object: + description: 'Entity name: always ''upload-info''.' + example: upload-info + type: string + updated_at: *id016 + upload_job_id: + description: The upload job ID. + example: '00000000000000000000000000000000' + type: string + type: object + UploadChunkInfoPage: + properties: + after: + example: null + type: string + data: + items: + $ref: '#/definitions/UploadChunkInfo' + type: array + has_more: + type: boolean + limit: + format: int32 + type: integer + object: + description: 'Entity name: always ''list''.' + example: list + type: string + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC + example: ASC + type: string + total_count: + format: int32 + type: integer + UploadJob: + properties: + complete: + description: A flag that indicates job completion. + example: false + type: boolean + created_at: *id014 + description: &id035 + description: Human-readable description. + example: New Linux update for my devices + maxLength: 2000 + type: string + etag: *id015 + firmware_image_id: + description: ID of the firmware image - empty until the upload job is complete. + example: 016e652be671000000000001001001a8 + pattern: '[A-Fa-f0-9]{32}' + type: string + id: + description: The upload job ID. + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: &id036 + description: Human-readable name. + example: New Linux update + maxLength: 128 + type: string + object: + description: 'Entity name: always ''upload-job''.' + example: upload-job + type: string + status: + description: Status of the upload job. + example: in_progress + type: string + updated_at: *id016 + type: object + UploadJobPage: + properties: + after: + example: null + type: string + data: + items: + $ref: '#/definitions/UploadJob' + type: array + has_more: + type: boolean + limit: + format: int32 + type: integer + object: + description: 'Entity name: always ''list''.' + example: list + type: string + order: + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + enum: + - ASC + - DESC + example: ASC + type: string + total_count: + format: int32 + type: integer + UserInfoReq: + description: Represents a user in requests towards Device Management. + properties: + address: + description: Address. + maxLength: 100 + type: string + x-nullable: true + email: + description: The email address. + pattern: ^(?=.{3,254}$).+\@.+ + type: string + full_name: + description: The full name of the user. + maxLength: 100 + type: string + x-nullable: true + groups: + description: A list of IDs of the groups this user belongs to. + items: + type: string + type: array + is_gtc_accepted: + description: A flag indicating that the user has accepted General Terms and + Conditions. + type: boolean + is_marketing_accepted: + description: A flag indicating that the user has consented to receive marketing + information. + type: boolean + login_profiles: + description: A list of login profiles for the user. Specified as the identity + providers the user should be associated with. Only the ID attribute of the + login profile should be set in the request object. + items: + $ref: '#/definitions/LoginProfile' + type: array + password: + description: The password for a new user. Generated when not present in the + request. + type: string + x-nullable: true + phone_number: + description: Phone number. + maxLength: 100 + type: string + x-nullable: true + username: + description: A username. + pattern: '[\w\-,._@+=]{4,30}' + type: string + x-nullable: true + required: + - email + type: object + UserInfoResp: + description: Represents a user in Device Management. + properties: + account_id: + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + active_sessions: + description: List of active user sessions. + items: + $ref: '#/definitions/ActiveSession' + type: array + address: + description: Address. + example: 110 Fulbourn Rd, Cambridge, United Kingdom + type: string + x-nullable: true + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + creation_time: + description: A timestamp of the user creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + type: integer + custom_fields: + additionalProperties: + type: string + description: User's account-specific custom properties. The value is a string. + type: object + x-nullable: true + email: + description: The email address. + example: user@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + email_verified: + description: A flag indicating whether the user's email address has been verified + or not. + example: true + type: boolean + etag: + description: API resource entity version. + example: '1' + type: string + full_name: + description: The full name of the user. + example: User Doe + maxLength: 100 + type: string + x-nullable: true + groups: + description: A list of IDs of the groups this user belongs to. + items: + type: string + type: array + id: + description: The ID of the user. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + is_gtc_accepted: + description: A flag indicating that the user has accepted General Terms and + Conditions. + example: true + type: boolean + is_marketing_accepted: + description: A flag indicating that the user has consented to receive marketing + information. + example: true + type: boolean + is_totp_enabled: + description: A flag indicating whether two-factor authentication (TOTP) has + been enabled. + example: true + type: boolean + last_login_time: + description: A timestamp of the latest login of the user, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + login_history: + description: Timestamps, succeedings, IP addresses and user agent information + of the last five logins of the user, with timestamps in RFC3339 format. + items: + $ref: '#/definitions/LoginHistory' + maxItems: 5 + type: array + login_profiles: + description: A list of login profiles for the user. Specified as the identity + providers the user is associated with. + items: + $ref: '#/definitions/LoginProfile' + type: array + x-nullable: true + object: + description: 'Entity name: always `user`.' + enum: + - user + type: string + password: + description: The password when creating a new user. It will be generated when + not present in the request. + example: PZf9eEUH43DAPE9ULINFeuj + type: string + x-nullable: true + password_changed_time: + description: A timestamp of the latest change of the user password, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + phone_number: + description: Phone number. + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + status: + description: The status of the user. ENROLLING state indicates that the user + is in the middle of the enrollment process. INVITED means that the user + has not accepted the invitation request. RESET means that the password must + be changed immediately. INACTIVE users are locked out and not permitted + to use the system. + enum: + - ENROLLING + - INVITED + - ACTIVE + - RESET + - INACTIVE + example: ACTIVE + type: string + totp_scratch_codes: + description: A list of scratch codes for the two-factor authentication. Visible + only when 2FA is requested to be enabled or the codes regenerated. + items: + type: string + type: array + x-nullable: true + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + username: + description: A username. + example: admin + pattern: '[\w\-,._@+=]{4,30}' + type: string + x-nullable: true + required: + - account_id + - email + - etag + - id + - object + - status + type: object + UserInfoRespList: + properties: + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + data: + description: A list of entities. + items: + $ref: '#/definitions/UserInfoResp' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return (2-1000), or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' + enum: + - list + type: string + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC + type: string + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + UserInvitationReq: + description: Represents a user invitation in requests towards Device Management. + properties: + email: + description: The email address. + pattern: ^(?=.{3,254}$).+\@.+ + type: string + groups: + description: A list of IDs of the groups this user has been invited to. + items: + type: string + type: array + login_profiles: + description: A list of login profiles for the user. Specified as the identity + providers the user should be associated with. Only the ID attribute of the + login profile should be set in the request object. + items: + $ref: '#/definitions/LoginProfile' + type: array + valid_for_days: + default: 30 + description: Specifies how many days the invitation will be valid for. + format: int32 + maximum: 100 + minimum: 1 + type: integer + required: + - email + type: object + UserInvitationResp: + description: Represents an user invitation in responses. + properties: + account_id: + description: The ID of the account the user is invited to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + created_at: + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + email: + description: Email address of the invited user. + example: friend@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + etag: + description: API resource entity version. + example: '1' + type: string + expiration: + description: Invitation expiration as UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + groups: + description: A list of IDs of the groups the user is invited to. + items: + type: string + type: array + id: + description: The ID of the invitation. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + login_profiles: + description: A list of login profiles for the user. Specified as the identity + providers the user is associated with. + items: + $ref: '#/definitions/LoginProfile' + type: array + x-nullable: true + object: + description: 'Entity name: always ''user-invitation''' + enum: + - user-invitation + type: string + updated_at: + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + user_id: + description: The ID of the invited user. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + required: + - account_id + - email + - etag + - id + - object + - user_id + type: object + UserInvitationRespList: + properties: + after: + description: The entity ID to retrieve after the given one. + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + data: + description: A list of entities. + items: + $ref: '#/definitions/UserInvitationResp' + type: array + has_more: + description: Flag indicating whether there are more results. + example: false + type: boolean + limit: + description: The number of results to return (2-1000), or equal to `total_count`. + example: 50 + format: int32 + type: integer + object: + description: 'Entity name: always `list`.' + enum: + - list + type: string + order: + description: 'The order of the records to return based on creation time. Available + values: ASC, DESC; by default ASC.' + enum: + - ASC + - DESC + type: string + total_count: + description: The total number of records, if requested. + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + UserUpdateReq: + description: Represents a user in requests towards Device Management. + properties: + address: + description: Address. + maxLength: 100 + type: string + x-nullable: true + email: + description: The email address. Not allowed to update other user's email address. + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + full_name: + description: The full name of the user. + maxLength: 100 + type: string + x-nullable: true + groups: + description: A list of group IDs this user belongs to. Can be updated by the + Account Admin only. + items: + type: string + type: array + x-nullable: true + is_gtc_accepted: + description: A flag indicating that the user has accepted General Terms and + Conditions. + type: boolean + x-nullable: true + is_marketing_accepted: + description: A flag indicating that the user has consented to receive marketing + information. + type: boolean + x-nullable: true + is_totp_enabled: + description: A flag indicating whether two-factor authentication (TOTP) is + enabled. An account administrator can disable it, but cannot enable it for + other users. + type: boolean + x-nullable: true + login_profiles: + description: '''A list of login profiles for the user, specified as identity + providers associated with the user. Only the ID attribute of the login profile + should be set in the request object. The list cannot be empty. Only an account + admin may update login profiles.''' + items: + $ref: '#/definitions/LoginProfile' + type: array + x-nullable: true + phone_number: + description: Phone number. + maxLength: 100 + type: string + x-nullable: true + status: + description: The status of the user. ENROLLING indicates that the user is + in the middle of the enrollment process. INVITED means that the user has + not accepted the invitation request. RESET means that the password must + be changed immediately. INACTIVE users are locked out and not permitted + to use the system. Can be changed by the Aggregator Admin only. + enum: + - ENROLLING + - INVITED + - ACTIVE + - RESET + - INACTIVE + example: ACTIVE + type: string + x-nullable: true + username: + description: A username. + pattern: '[\w\-,._@+=]{4,30}' + type: string + x-nullable: true + type: object + Webhook: + properties: + headers: + additionalProperties: + type: string + description: The headers (key/value) sent with the notification. Optional. + example: '{"authorization" : "f4b93d6e-4652-4874-82e4-41a3ced0cd56"}' + type: object + serialization: + $ref: '#/definitions/SerializationConfigData' + url: + description: The URL to which the notifications are sent. We recommend that + you serve this URL over HTTPS. + example: https://www.example.com/my-webhook + type: string + required: + - url + type: object + WebsocketChannel: + properties: + queue_size: + default: 0 + description: Number of events in the channel's event queue waiting to be delivered. + If the server cannot determine the queue size the value will be set to `-1`. + example: 0 + type: integer + serialization: + $ref: '#/definitions/SerializationConfigData' + status: + default: disconnected + description: Channel status is 'connected' when the channel has an active + WebSocket bound to it. The status is 'disconnected' when either the channel + or the WebSocket bound to it is closed and 'unknown' when the server cannot + determine it. + enum: + - connected + - disconnected + - unknown + example: disconnected + type: string + type: object + error-response: + properties: + code: + description: HTTP response code. + format: int32 + type: integer + fields: + description: Details of the error fields. + items: + $ref: '#/definitions/fields' + type: array + message: + description: Description of the error. + type: string + object: + description: Response type, always "error". + type: string + request_id: + description: Request ID. + type: string + type: + description: Type of error. + type: string + type: object + fields: + properties: + message: + description: Error description. + type: string + name: + description: The field name in the request for which the validation has failed. + type: string + type: object + metric: + properties: + bootstraps_failed: + description: The number of failed bootstraps the account has performed. Bootstrap + is the process of provisioning a Lightweight Machine to Machine Client to + a state where it can initiate a management session to a new Lightweight + Machine to Machine Server. + format: int64 + type: integer + bootstraps_pending: + description: The number of pending bootstraps the account has performed. Bootstrap + is the process of provisioning a Lightweight Machine to Machine Client to + a state where it can initiate a management session to a new Lightweight + Machine to Machine Server. + format: int64 + type: integer + bootstraps_successful: + description: The number of successful bootstraps the account has performed. + Bootstrap is the process of provisioning a Lightweight Machine to Machine + Client to a state where it can initiate a management session to a new Lightweight + Machine to Machine Server. + format: int64 + type: integer + connect_rest_api_error: + description: The number of failed [Connect API](/docs/current/service-api-references/device-management-connect.html) + requests that have been performed using the account. This metric does not + consider the response from the device, it includes only the responses to + the HTTP requests used to manage the device. This metric includes only messages + handled by the Connect service, it does not include any HTTP errors returned + by firewall as result of malformed messages. The number of failed [Connect + API](https://www.pelion.com/docs/device-management-api/connect/) requests + that have been performed using the account. This metric does not consider + the response from the device, it includes only the responses to the HTTP + requests used to manage the device. This metric includes only messages handled + by the Connect service, not any HTTP errors returned by the firewall as + a result of incorrect messages. + format: int64 + type: integer + connect_rest_api_success: + description: The number of successful [Connect API](/docs/current/service-api-references/device-management-connect.html) + requests that have been performed using the account. This metric does not + consider the response from the device, it includes only the responses to + the HTTP requests used to manage the device. The number of successful [Connect + API](https://www.pelion.com/docs/device-management-api/connect/) requests + that have been performed using the account. This metric does not consider + the response from the device, only the responses to the HTTP requests used + to manage the device. + format: int64 + type: integer + deleted_registrations: + description: The number of deleted registrations (deregistrations) linked + to the account. Deregistration is the process of removing the device registration + from the Device Management Connect registry. The deregistration is usually + initiated by the device. Device Management Connect no longer handles requests + for a deregistered device. + format: int64 + type: integer + device_observations: + description: '**(Beta)** The number of notifications received by the Device + Management Connect service from the devices linked to the account. The device + pushes notifications to Device Management Connect when you have successfully + subscribed to the device resources using [Connect API](https://www.pelion.com/docs/device-management-api/connect/) + endpoints. + + ' + format: int64 + type: integer + device_proxy_request_error: + description: '**(Beta)** The number of failed proxy requests from the Device + Management Connect service to devices linked to the account. Device Management + Connect makes proxy requests to devices when you try to read or write values + to device resources using [Connect API](https://www.pelion.com/docs/device-management-api/connect/) + endpoints. + + ' + format: int64 + type: integer + device_proxy_request_success: + description: '**(Beta)** The number of successful proxy requests from the + Device Management Connect service to devices linked to the account. Device + Management Connect makes proxy requests to devices when you try to read + or write values to device resources using [Connect API](https://www.pelion.com/docs/device-management-api/connect/) + endpoints. + + ' + format: int64 + type: integer + device_subscription_request_error: + description: '**(Beta)** The number of failed subscription requests from the + Device Management Connect service to devices linked to the account. Device + Management Connect makes subscription requests to devices when you try to + subscribe to a resource path using [Connect API](https://www.pelion.com/docs/device-management-api/connect/) + endpoints. + + ' + format: int64 + type: integer + device_subscription_request_success: + description: '**(Beta)** The number of successful subscription requests from + the Device Management Connect service to devices linked to the account. + Device Management Connect makes subscription requests to devices when you + try to subscribe to a resource path using [Connect API](https://www.pelion.com/docs/device-management-api/connect/) + endpoints. + + ' + format: int64 + type: integer + expired_registrations: + description: The number of expired registrations linked to the account. Device + Management Connect removes the device registrations when the devices cannot + update their registration before the expiry of the lifetime. Device Management + Connect no longer handles requests for a device whose registration has expired + already. + format: int64 + type: integer + full_registrations: + description: The number of full registrations linked to the account. Full + registration is the process of registering a device with Device Management + Connect by providing its lifetime and capabilities such as the resource + structure.The registered status of the device does not guarantee that the + device is active and accessible from Device Management Connect at any point + of time. + format: int64 + type: integer + handshakes_successful: + description: The number of successful TLS handshakes the account has performed. + The SSL or TLS handshake enables the SSL or TLS client and server to establish + the secret keys with which they communicate. A successful TLS handshake + is required for establishing a connection with Device Management Connect + for any operaton such as registration, registration update and deregistration. + format: int64 + type: integer + id: + description: A unique metric ID. + type: string + registration_updates: + description: The number of registration updates linked to the account. Registration + update is the process of updating the registration status with Device Management + Connect to update or extend the lifetime of the device. + format: int64 + type: integer + timestamp: + description: UTC time in RFC3339 format. The timestamp is the starting point + of the interval for which the data is aggregated. Each interval includes + data for the time greater than or equal to the timestamp and less than the + next interval's starting point. + format: date-time + type: string + transactions: + description: The number of transaction events from or to devices linked to + the account. A transaction is a 512-byte block of data processed by Device + Management. It can be either sent by the device (device --> Device Management) + or received by the device (Device Management --> device). A transaction + does not include IP, TCP or UDP, TLS or DTLS packet overhead. It only contains + the packet payload (full CoAP packet including CoAP headers). + format: int64 + type: integer + type: object + successful-response: + properties: + after: + description: The metric ID included in the request or null. + type: string + data: + items: + $ref: '#/definitions/metric' + type: array + has_more: + description: Indicates whether there are more results for you to fetch in + the next page. + type: boolean + limit: + description: The limit used in the request to retrieve the results. + type: integer + object: + description: API resource name. + type: string + total_count: + description: The total number of records available. + type: integer + type: object +host: api.us-east-1.mbedcloud.com +info: + description: Pelion Device Management API build from the publicly defined API definitions. + title: Pelion Device Management API + version: '3' +paths: + //ace-auth/token: + post: + description: "Generate a signed CWT (CBOR Web Token). The SDA Android SDK uses\ + \ this API to gain access to perform actions on the devices specified in the\ + \ audience (aud).\n
\nAuthorized for roles: Service, ServiceAdministrator\n\ +
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/ace-auth/token\ + \ \\\n-H 'Authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"grant_type\":\"client_credentials\",\n \"aud\":[\"id:f90b1017e52f4c70ad92684e802c9249\"\ + ,\"ep:dev1\"],\n \"scope\":\"turn-led-on\",\n \"cnf\":\"-----BEGIN PUBLIC\ + \ KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ...XwIDAQAB-----END PUBLIC KEY-----\"\ + \n}'\n```\n" + operationId: createAceAuthToken + parameters: + - description: Create access token request. + in: body + name: body + required: true + schema: + $ref: '#/definitions/TokenRequest' + responses: + '200': + description: A signed CWT (CBOR Web Token) access token. + schema: + $ref: '#/definitions/TokenResponse' + '400': + description: 'Bad request. Returns the standard error object detailing the + error message and, optionally, the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: 'Authentication failure. The provided header is invalid or + missing. + + Returns the standard error object detailing the error message and, optionally, + the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get an access token to use with a device. + tags: + - Security and identity - secure device access + x-origin: /home/circleci/project/sda-service/public/sda.yaml + //v3/trust-anchors: + get: + description: 'Get all trust anchors that match the account ID specified in the + JWT. + +
+ + Authorized for roles: Service, ServiceAdministrator + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/trust-anchors \ + + -H ''Authorization: '' + + ``` + + ' + operationId: getTrustAnchors + parameters: + - description: Indicates how many objects to retrieve in the page. The minimum + limit is 2 and the maximum is 1000. Limit values outside of this range are + set to the closest limit. + in: query + maximum: 1000 + minimum: 2 + name: limit + type: integer + - description: Indicates how to order the entries based on when they were created. + `ASC` by default. + enum: + - ASC + - DESC + in: query + name: order + type: string + - description: The ID of the item after which to retrieve the next page. + in: query + name: after + pattern: '[A-Fa-f0-9]{32}' + type: string + - description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + in: query + name: include + type: string + responses: + '200': + description: 'Returns the list of trust anchors associated to the account_id + specified in the access token. + + ' + schema: + $ref: '#/definitions/GetTrustAnchorsResponse' + '400': + description: 'Bad request. Returns the standard error object detailing the + error message and, optionally, the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: 'Authentication failure. The provided header is invalid or + missing. + + Returns the standard error object detailing the error message and, optionally, + the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get the account's trust anchor used to sign the access token. + tags: + - Security and identity - secure device access + x-origin: /home/circleci/project/sda-service/public/sda.yaml + post: + description: "Create a trust anchor key pair and return the public key and creation\ + \ time.\nEach account can have one trust anchor only. This API fails if a\ + \ trust anchor already exists for the account.\n
\nAuthorized for roles:\ + \ Service, ServiceAdministrator\n
\n**Usage example:**\n```\ncurl -X POST\ + \ https://api.us-east-1.mbedcloud.com/v3/trust-anchors \\\n-H 'Authorization:\ + \ ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n\ + -d '{\n \"description\": \"Trust anchor for room lighting controller.\"\n\ + }'\n```\n" + operationId: createTrustAnchor + parameters: + - description: Request a new trust anchor. + in: body + name: body + required: true + schema: + $ref: '#/definitions/CreateTrustAnchorRequest' + responses: + '201': + description: Trust anchor created. + schema: + $ref: '#/definitions/CreateTrustAnchorResponse' + '400': + description: 'Bad request. Returns the standard error object detailing the + error message and, optionally, the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: 'Authentication failure. The provided header is invalid or + missing. + + Returns the standard error object detailing the error message and, optionally, + the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: 'Account limit exceeded. There is already a trust anchor defined + for the account. + + Returns the standard error object detailing the error message. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new trust anchor for the account. + tags: + - Security and identity - secure device access + x-origin: /home/circleci/project/sda-service/public/sda.yaml + //v3/trust-anchors/{trust_anchor_id}: + delete: + description: 'Delete the specified trust anchor. Unrecoverable. + +
+ + Authorized for roles: Service, ServiceAdministrator + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trust-anchors/8e0a9494cc95b750ec6c81464eb06725 + \ + + -H ''Authorization: '' \ + + ``` + + ' + operationId: deleteTrustAnchor + parameters: + - description: The id of the trust anchor to be deleted + in: path + name: trust_anchor_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + responses: + '204': + description: Trust anchor deleted. + '400': + description: 'Bad request. Returns the standard error object detailing the + error message and, optionally, the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: 'Authentication failure. The provided header is invalid or + missing. + + Returns the standard error object detailing the error message and, optionally, + the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: The trust anchor to be deleted was not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete a trust anchor. + tags: + - Security and identity - secure device access + x-origin: /home/circleci/project/sda-service/public/sda.yaml + put: + description: "Updates a trust anchor description attribute.\n
\nAuthorized\ + \ for roles: Service, ServiceAdministrator\n
\n**Usage example:**\n```\n\ + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/trust-anchors/8e0a9494cc95b750ec6c81464eb06725\ + \ \\\n-H 'Authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"description\": \"Trust anchor for ambient light module\"\n\ + }'\n```\n" + operationId: updateTrustAnchor + parameters: + - description: The id of the trust anchor to be updated + in: path + name: trust_anchor_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + - description: Update trust anchor request. + in: body + name: body + required: true + schema: + $ref: '#/definitions/UpdateTrustAnchorRequest' + responses: + '200': + description: Trust anchor updated. + schema: + $ref: '#/definitions/UpdateTrustAnchorResponse' + '400': + description: 'Bad request. Returns the standard error object detailing the + error message and, optionally, the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: 'Authentication failure. The provided header is invalid or + missing. + + Returns the standard error object detailing the error message and, optionally, + the invalid fields. + + ' + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: The trust anchor to be updated was not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update trust anchor attributes (description). + tags: + - Security and identity - secure device access + x-origin: /home/circleci/project/sda-service/public/sda.yaml + /downloads/fcu/factory_configurator_utility.zip: + get: + description: 'Downloads the Factory Configurator Utility (FCU) archive .zip + file for the account ID associated with the access token. + +
+ + **Example:** + +
+ + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/downloads/fcu/factory_configurator_utility.zip + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: downloadFactoryTool + produces: + - application/zip + responses: + '200': + description: The archive file was downloaded successfully. + '400': + description: Validation error or bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Access denied. + schema: + $ref: '#/definitions/ErrorResponse' + '500': + description: Internal server error. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Download the Factory Configurator Utility archive. + tags: + - Manufacturing - Factory Configurator Utility (FCU) + x-origin: /home/circleci/project/factory-tool-download/public/swagger.yaml + /downloads/fcu/info: + get: + description: "Returns information about the Factory Configurator Utility (FCU)\ + \ archive.\n
\n**Example:**\n
\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/downloads/fcu/inf\ + \ \\\n-H 'Authorization: Bearer ' \n```\n" + operationId: getFactoryToolInfo + produces: + - application/json + responses: + '200': + description: Successful response of the archive information. + schema: + $ref: '#/definitions/ArchiveInfoResponse' + '400': + description: Validation error or bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Access denied. + schema: + $ref: '#/definitions/ErrorResponse' + '500': + description: Internal server error. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Download information about the Factory Configurator Utility archive. + tags: + - Manufacturing - Factory Configurator Utility (FCU) + x-origin: /home/circleci/project/factory-tool-download/public/swagger.yaml + /downloads/fcu/release_notes: + get: + description: 'Downloads the Factory Configurator Utility (FCU) release notes. + +
+ + **Example:** + +
+ + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/downloads/fcu/release_notes + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: getFactoryToolReleaseNotes + produces: + - text/markdown ; charset=UTF-8 + - application/json + responses: + '200': + description: The release notes were downloaded successfully. + '400': + description: Validation error or bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Access denied. + schema: + $ref: '#/definitions/ErrorResponse' + '500': + description: Internal server error. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Download Factory Configurator Utility release notes. + tags: + - Manufacturing - Factory Configurator Utility (FCU) + x-origin: /home/circleci/project/factory-tool-download/public/swagger.yaml + /v2/device-requests/{device-id}: + post: + consumes: + - application/json + description: "This API provides an interface to call CoAP (Constrained Application\ + \ Protocol) methods on a device and send commands to device resources.\n\n\ + As part of the request body, you must specify the CoAP method you want to\ + \ call on the device:\n\n- Use the GET method to read resource values.\n\n\ + \ For example, to read the value of resource `/3200/0/5501`, use:\n\n \ + \ ```\n curl -X POST https://api.us-east-1.mbedcloud.com/v2/device-requests/{device_id}?async-id={async-response-id}\ + \ \\\n -H 'Authorization: Bearer {access_key}' \\\n -H 'content-type:\ + \ application/json' \\\n -d '{\"method\": \"GET\", \"uri\": \"/3200/0/5501\"\ + }'\n ```\n\n> For `GET` methods, the API may fetch values from an internal\ + \ cache, instead of contacting the device.\n> If the value is not in the cache,\ + \ the read command goes all the way to the device.\n\n\n- Use the PUT method\ + \ to write [notification rules](https://www.pelion.com/docs/device-management/current/resources/resource-change-webapp.html)\ + \ or resource values for a resource.\n\n Example payload to write a notification\ + \ rule:\n\n ```\n { \"method\": \"PUT\", \"uri\": \"/5/0/1?lt=10>=60&pmax=120\"\ + \ }\n ```\n\n- Example payload to write a value to resource `/5/0/1`:\n\ + \n ```\n { \"method\": \"PUT\", \"uri\": \"/5/0/1?k1=v1&k2=v2\", \"\ + accept\": \"text/plain\", \"content-type\": \"text/plain\", \"payload-b64\"\ + : \"dmFsdWUxCg==\" }\n ```\n\n- Use the POST method to execute or create\ + \ a resource on a LWM2M supporting device.\n\n When you create a resource,\ + \ `uri` must refer to an object, and `payload-b64` must be in LWM2M TLV format\ + \ for example:\n\n ```\n { \"method\": \"POST\", \"uri\": \"/123\",\ + \ \"content-type\": \"application/vnd.oma.lwm2m+tlv\", \"payload-b64\": \"\ + BwHFAnZhbHVl\" }\n ```\n\n- Use the POST method to execute resource on\ + \ a LWM2M supporting device.\n\n Example payload to execute LWM2M resource\ + \ `/123/1/1`:\n\n ```\n { \"method\": \"POST\", \"uri\": \"/123/1/1\"\ + \ }\n ```\n\n- Device Management sends responses through the currently\ + \ configured notification channel as `AsyncIDResponse`.\n\n Example `AsyncIDResponse`\ + \ delivered through the notification channel:\n\n ```\n { \"async-responses\"\ + : [ { \"id\": \"123e4567-e89b-12d3-a456-426655440000\", \"status\": 200, \"\ + payload\": \"dmFsdWUxCg==\", \"ct\": \"text/plain\", \"max-age\": 600 } ]\ + \ }\n ```\n\n ```\n { \"async-responses\": [ { \"id\": \"123e4567-e89b-12d3-a456-426655440000\"\ + , \"status\": 504, \"error\": \"TIMEOUT\" } ] }\n ```\n\n> If it cannot\ + \ reach the device at the time of the request, Device Management puts the\ + \ requests in a queue.\n\n**Queueing behavior**\n\nIf Device Management does\ + \ not reach the device, or the device fails to respond, the server queues\ + \ the request and retries the delivery, for the period of time defined by\ + \ `expiry-seconds`, the next time the device contacts the server.\n\nThe queue\ + \ is limited to 20 requests.\n\nDevice Management delivers requests from the\ + \ queue in the order of insertion, one at a time, and not concurrently.\n\n\ + Delivery attempts follow protocol-specific retransmission logic. There can\ + \ be multiple transmissions, depending on the protocol. For CoAP, the retransmissions\ + \ have an exponential backoff of 2, 4, 8, 16, and up to 64 seconds, taking\ + \ in total over two minutes.\nIf the device does not respond within this two-minute\ + \ period, the delivery fails, Device Management performs one retry and then\ + \ puts the request back into the queue until the retry count reaches its limit.\n\ + \nDevice Management attempts to redeliver the request when the device next\ + \ contacts the server.\n\nWhen Device Management reaches the `retry` or `expiry-seconds`\ + \ limit, the server discards the request and sends an error in `AsyncIDResponse`.\n\ + \nFor example:\n\n- Retries could be exhausted if the device periodically\ + \ contacts the server and receives the request from the queue, but then fails\ + \ to respond to the server.\n\n- The device may lose its network connectivity,\ + \ and the requests in the queue may expire and get discarded before the device\ + \ regains connectivity. When Device Management delivers the request to the\ + \ device, the status code in `AsyncIDResponse` is *2xx* or *4xx*, based on\ + \ the device's response. If Device Management could not deliver the request,\ + \ the server generates a status code of *429* or *5xx*." + operationId: createAsyncRequest + parameters: + - description: The device ID generated by Device Management. + format: uuid, 32 hexadecimal characters + in: path + name: device-id + required: true + type: string + - description: A client-generated ID that lets the REST client track the end-to-end + flow and prevents race conditions with the notification channel. The `async-id` + can be, for example, a UUID or the web application session ID along with + the device ID and the resource. + format: 1-40 alphanumeric characters and dashes. + in: query + name: async-id + pattern: ^[\w\-]{1,40}$ + required: true + type: string + - description: The number of attempts to deliver the request to the device after + the first delivery attempt. For example, two retries sums up to the total + of three delivery attempts. When retries are exhausted, Device Management + discards the request and delivers an error in the AsyncIDResponse. The default + number of retries for a non-queue mode device is `0`. The default number + of retries for a queue-mode device is `2`. + in: query + maximum: 10 + minimum: 0 + name: retry + required: false + type: integer + - description: The time period during which the delivery is attempted, in seconds. + If the device is not reachable within this period, Device Management discards + the request and delivers an error in the AsyncIDResponse. The default time + period during which the delivery is attempted is two hours for a non-queue + mode device and three days for a queue-mode device. + in: query + maximum: 2592000 + minimum: 60 + name: expiry-seconds + required: false + type: integer + - description: 'Device request to send. The body element has `method`, `uri`, + `accept`, `content-type` and `payload-b64` fields. + + - The `method` is one of `GET`, `PUT`, `POST`, `DELETE`. + + - The `uri` field is the path to the LwM2M object and can include query + parameters. This can include key-value pairs, for example, `/5/0/1?key1=value1;key2=value2`. + + - The `accept` field defines the content type that the requesting client + will accept. + + - The `content-type` describes the content type of the base-64 encoded `payload-b64` + field. + + - The `payload-b64` is the payload to send to the device in base-64 encoded + form.' + in: body + name: body + required: true + schema: + $ref: '#/definitions/DeviceRequest' + produces: + - application/json + responses: + 202: + description: Accepted. + 400: + description: 'Bad request. Contains one of the errors RESOURCE_NOT_FOUND, + DEVICE_NOT_CONNECTED, MALFORMED_JSON_CONTENT, + + MALFORMED_ASYNC_ID and QUEUE_IS_FULL' + schema: + type: string + 401: + description: Authentication failure. + 404: + description: "Contains one of the following errors:\n\n \n\ + \ \n \n \n\ + \ \n \n \n \n \n\ + \ \n\ + \ \n \n \n\ + \ \n \n \n
Error messageDescription
DEVICE_NOT_FOUNDThe device is not in the device registry. It has either requested\ + \ for register delete\n or it has not connected in time and is expired.
URI_PATH_DOES_NOT_EXISTSThe device does not have requested resource. Check the resource\ + \ path is correct.
" + schema: + type: string + summary: Send an asynchronous request to read, write or post to a device resource. + tags: + - Device data - requests + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v2/device-shared-keys: + get: + consumes: + - application/json + description: 'Retrieve pre-shared keys (PSKs) with pagination. Default page + size of 50 entries. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \ + + -H "Authorization: Bearer " + + ```' + operationId: listPreSharedKeys + parameters: + - default: 50 + description: The number of objects to retrieve on a page (2-1000). Values + outside the range are set to the closest limit. + in: query + maximum: 1000 + minimum: 2 + name: limit + required: false + type: integer + - description: An offset token for fetching a specific page. Provided by the + server. + in: query + name: after + required: false + type: string + produces: + - application/json + responses: + 200: + description: List of PSKs. + schema: + $ref: '#/definitions/ListOfPreSharedKeysWithoutSecret' + 400: + description: Bad request. Contains the error as a string, either TOKEN_NOT_FOUND + or INVALID_LIMIT. + summary: List PSKs. + tags: + - Security and identity - pre-shared keys + x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml + post: + consumes: + - application/json + description: "Upload a PSK for an endpoint to allow it to bootstrap. The existing\ + \ key cannot be overwritten, but needs\nto be deleted first in the case of\ + \ re-setting a PSK for an endpoint.\n\n**Note**: The PSK APIs are available\ + \ only to accounts that have this feature enabled.\n\n**Example:**\n```\n\ + curl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n\ + -H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\"\ + \ \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\"\ + : \"4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```" + operationId: uploadPreSharedKey + parameters: + - description: PSK to upload. + in: body + name: body + required: true + schema: + $ref: '#/definitions/PreSharedKey' + produces: + - application/json + responses: + 201: + description: Successfully created. + 400: + description: Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, + INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT. + schema: + type: string + 401: + description: Authentication failure. + 403: + description: Forbidden. You need to read and accept the PSK license in Device + Management Portal. + 409: + description: Conflict. The PSK for the endpoint already exists and cannot + be overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT. + schema: + type: string + summary: Upload a PSK to Pelion Device Management. + tags: + - Security and identity - pre-shared keys + x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml + /v2/device-shared-keys/{endpoint_name}: + delete: + description: 'Remove a PSK. + + + **Example:** + + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + \ + + -H "Authorization: Bearer " + + ```' + operationId: deletePreSharedKey + parameters: + - description: The unique endpoint identifier that this PSK applies to. [Reserved + characters](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters) + must be percent-encoded. + in: path + name: endpoint_name + required: true + type: string + responses: + 204: + description: Successfully deleted. Responds even if the endpoint does not + have an associated PSK. + 400: + description: Bad request. Endpoint name validation failed. Contains error + INVALID_ENDPOINT_NAME. + schema: + type: string + 401: + description: Authentication failure. + summary: Remove a PSK. + tags: + - Security and identity - pre-shared keys + x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml + get: + description: 'Check if a PSK for an endpoint exists or not. The response does + not contain the secret itself. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + \ + + -H "Authorization: Bearer " + + ```' + operationId: getPreSharedKey + parameters: + - description: The unique endpoint identifier that this PSK applies to. [Reserved + characters](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters) + must be percent-encoded. + in: path + name: endpoint_name + required: true + type: string + responses: + 200: + description: Pre-shared key for the device (does not contain secret). + schema: + $ref: '#/definitions/PreSharedKeyWithoutSecret' + 400: + description: Bad request. Endpoint name validation failed. Contains error + INVALID_ENDPOINT_NAME. + schema: + type: string + 401: + description: Authentication failure. + 404: + description: The PSK does not exist. + summary: Get a PSK. + tags: + - Security and identity - pre-shared keys + x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml + /v2/endpoints/{device-id}: + get: + description: 'Retrieves information about the resource structure for a device + from Device Management. This call does not reach the device. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id} \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getEndpointResources + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + produces: + - application/json + responses: + 200: + description: Successful response with an array of resources. + schema: + $ref: '#/definitions/ResourceArray' + 404: + description: Endpoint not found. + summary: List the resources on a device. + tags: + - Device data - resources + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v2/endpoints/{device-id}/{resourcePath}: + delete: + deprecated: true + description: '(DEPRECATED) A request to delete a resource path must be handled + by both Device Management Client and Device Management + + Connect. + + + All resource APIs are asynchronous. These APIs respond only if the device + is on and connected to Device Management Connect, and there is an active notification + channel. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/{resourcePath} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteResourcePath + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: The resource URL. + in: path + name: resourcePath + required: true + type: string + - description: 'If you make a request with `noResp=true`, Device Management + Connect makes a CoAP non-confirmable request to the device. Such requests + are not guaranteed to arrive at the device, and do not return an async-response-id. + + + When calls with this parameter enabled succeed, they return with the status + code `204 No Content`. If the underlying protocol does not support non-confirmable + requests, or if the endpoint is registered in queue mode, the response is + status code `409 Conflict`.' + in: query + name: noResp + required: false + type: boolean + responses: + 202: + description: Accepted. Returns an asynchronous response ID. + schema: + $ref: '#/definitions/AsyncID' + 400: + description: Bad request. + 404: + description: "Requested endpoint\u2019s resource is not found." + 409: + description: Conflict. If `noResp=true`, the non-confirmable request is + not supported by the used protocol. + 410: + description: Gone. Endpoint not found. + 429: + description: 'Cannot accept the request at the moment: the queue is full.' + 502: + description: TCP or TLS connection to endpoint cannot be established. + summary: (DEPRECATED) Delete a resource path. + tags: + - Device data - resources + x-deprecation: + comment: /v2/endpoints/{device-id}/{resourcePath} is replaced by /v2/device-requests/{device-id}. + end_of_life_at: '2020-05-17T00:00:00+00:00' + issued_at: '2019-05-17T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management-api/connect/ + x-origin: /home/circleci/project/device-server/public/swagger.yaml + get: + deprecated: true + description: '(DEPRECATED) Requests the resource value either from the device + or cache. If the value is not in the cache, the request goes all the + + way to the device. When the response is available, an `AsyncIDResponse` JSON + object is received in the notification channel. + + The resource values can also be in cache based on `max_age` defined by the + device. The value found from the cache is returned + + immediately in the response. + + + The preferred way to get resource values is to use the **subscribe** and **callback** + methods. + + + All resource APIs are asynchronous. These APIs only respond if the device + is on and connected to Device Management. + + + See also how [resource caching](https://www.pelion.com/docs/device-management/current/connecting/device-guidelines.html#resource-cache) + works. + + + Please see the [Lightweight Machine to Machine Technical specification](http://www.openmobilealliance.org/release/LightweightM2M/V1_0-20170208-A/OMA-TS-LightweightM2M-V1_0-20170208-A.pdf) + for more information. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/{resourcePath} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getResourceValue + parameters: + - description: Unique Device Management device ID for the endpoint. The ID must + be an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: The resource URL. + in: path + name: resourcePath + required: true + type: string + - description: 'If true, the response comes only from the cache. Default: false. + Device Management Connect caches the received resource values for the time + of [max_age](https://www.pelion.com/docs/device-management/current/resources/working-with-the-resources.html) + defined in the client.' + in: query + name: cacheOnly + required: false + type: boolean + - description: 'If a request is made with `noResp=true`, Device Management Connect + makes a CoAP non-confirmable request to the device. Such requests are not + guaranteed to arrive on the device, and no `async-response-id` returns. + + + Successful calls return with the status code `204 No Content`. If the underlying + protocol does not support non-confirmable requests, or if the endpoint is + registered in queue mode, the response is status code `409 Conflict`.' + in: query + name: noResp + required: false + type: boolean + responses: + 200: + description: Resource value found in cache. Returns the string value of + the resource. + 202: + description: Accepted. Returns an asynchronous response ID. + schema: + $ref: '#/definitions/AsyncID' + 205: + description: No cache available for the resource. + 400: + description: Bad request. + 404: + description: "Requested endpoint\u2019s resource is not found." + 409: + description: Conflict. If `noResp=true`, the non-confirmable request is + not supported by the used protocol. + 410: + description: Gone. Endpoint not found. + 429: + description: 'Cannot accept the request at the moment: the queue is full.' + 502: + description: TCP or TLS connection to endpoint cannot be established. + summary: (DEPRECATED) Read from a resource. + tags: + - Device data - resources + x-deprecation: + comment: /v2/endpoints/{device-id}/{resourcePath} is replaced by /v2/device-requests/{device-id}. + The /v2/device-requests/{device-id} endpoint lets you use your own async-id, + and simplifies integration by returning all resource values, cached and + non-cached, through the event notification channel. + end_of_life_at: '2020-05-17T00:00:00+00:00' + issued_at: '2019-05-17T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management-api/connect/ + x-origin: /home/circleci/project/device-server/public/swagger.yaml + post: + consumes: + - text/plain + - application/xml + - application/octet-stream + - application/exi + - application/json + - application/link-format + - application/senml+json + - application/nanoservice-tlv + - application/vnd.oma.lwm2m+text + - application/vnd.oma.lwm2m+opaq + - application/vnd.oma.lwm2m+tlv + - application/vnd.oma.lwm2m+json + deprecated: true + description: '(DEPRECATED) [Execute a function](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html#the-execute-operation) + on an existing resource and create a new Object instance on the device. The + resource path does not have to exist; you can set it with the call. The maximum + length of the resource path is 255 characters. + + + All resource APIs are asynchronous. These APIs respond only if the device + is on and connected to Device Management Connect, and there is an active notification + channel. + + + Supported content types depend on the device and its resource. Device Management + translates HTTP to the equivalent CoAP content type. + + + **Example:** + + + This example resets the min and max values of the [temperature sensor](http://www.openmobilealliance.org/tech/profiles/lwm2m/3303.xml) + instance 0 by executing Resource 5605 ''Reset Min and Max Measured Values''. + + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/3303/0/5605 + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: executeOrCreateResource + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: The resource URL. + in: path + name: resourcePath + required: true + type: string + - description: This value is not needed. Most of the time, resources do not + accept a function; they have their own functions predefined. You can use + this to trigger them. If a function is included, the body of this request + is passed as a char* to the function in Device Management Client. + in: body + name: resourceFunction + required: false + schema: + type: string + - description: 'If you make a request with `noResp=true`, Device Management + Connect makes a CoAP non-confirmable request to the device. Such requests + are not guaranteed to arrive in the device, and you do not get back an async-response-id. + + + When calls with this parameter enabled succeed, they return with the status + code `204 No Content`. If the underlying protocol does not support non-confirmable + requests, or if the endpoint is registered in queue mode, the response is + status code `409 Conflict`.' + in: query + name: noResp + required: false + type: boolean + responses: + 202: + description: Accepted. Returns an asynchronous response ID. + schema: + $ref: '#/definitions/AsyncID' + 400: + description: Bad request. + 404: + description: "Requested endpoint\u2019s resource not found." + 409: + description: Conflict. If `noResp=true`, the non-confirmable request is + not supported by the used protocol. + 410: + description: Gone. Endpoint not found. + 429: + description: 'Cannot accept the request at the moment: the queue is full.' + 502: + description: TCP or TLS connection to endpoint cannot be established. + summary: (DEPRECATED) Execute a function on a Resource or create new Object + instance. + tags: + - Device data - resources + x-deprecation: + comment: /v2/endpoints/{device-id}/{resourcePath} is replaced by /v2/device-requests/{device-id}. + end_of_life_at: '2020-05-17T00:00:00+00:00' + issued_at: '2019-05-17T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management-api/connect/ + x-origin: /home/circleci/project/device-server/public/swagger.yaml + put: + consumes: + - text/plain + - application/xml + - application/octet-stream + - application/exi + - application/json + - application/link-format + - application/senml+json + - application/nanoservice-tlv + - application/vnd.oma.lwm2m+text + - application/vnd.oma.lwm2m+opaq + - application/vnd.oma.lwm2m+tlv + - application/vnd.oma.lwm2m+json + deprecated: true + description: '(DEPRECATED) With this API, you can [write a new value to existing + Resources](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + or use the **write** attribute to set [notification rules](https://www.pelion.com/docs/device-management/current/resources/resource-change-webapp.html) + for the Resources. The notification rules only work on the device client side + and may not be supported by all clients. + + + This API can also be used to transfer files to the device. Device Management + Connect LwM2M server implements Option 1 from RFC7959. The maximum block size + is 1024 bytes. + + Note block size versus transferred file size in low-quality networks. The + customer application needs to know what type of file is transferred (for example, + TXT) + + and the customer can encrypt the payload. The maximum payload size is 1048576 + bytes. + + + All resource APIs are asynchronous. These APIs respond only if the device + is on and connected to Device Management Connect, and there is an active notification + channel. + + + Supported content types depend on the device and its resource. Device Management + translates HTTP to equivalent CoAP content type. + + + **Example:** + + + This example sets the alarm on a buzzer. The command writes the [Buzzer](http://www.openmobilealliance.org/tech/profiles/lwm2m/3338.xml) + instance 0, "On/Off" boolean resource to ''1''. + + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/3338/0/5850 + \ + + -H "content-type: text/plain" \ + + -H ''Authorization: Bearer '' \ + + -d ''1'' + + ```' + operationId: updateResourceValue + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: Resource URL. + in: path + name: resourcePath + required: true + type: string + - description: The value to set to the resource. + in: body + name: resourceValue + required: true + schema: + type: string + - description: 'If you make a request with `noResp=true`, Device Management + Connect makes a CoAP non-confirmable request to the device. Such requests + are not guaranteed to arrive to the device, and do not return an `async_response_id`. + + + When a call with this parameter enabled succeeds, it return status code + `204 No Content`. If the underlying protocol does not support non-confirmable + requests, or if the endpoint is registered in queue mode, the response is + status code `409 Conflict`.' + in: query + name: noResp + required: false + type: boolean + responses: + 202: + description: Accepted. Returns an asynchronous response ID. + schema: + $ref: '#/definitions/AsyncID' + 400: + description: Bad request. + 409: + description: '''Conflict. If `noResp=true`, the non-confirmable request + is not supported by the used protocol.''' + 410: + description: Gone. Endpoint not found. + 429: + description: 'Cannot accept the request at the moment: the queue is full.' + 502: + description: TCP or TLS connection to endpoint cannot be established. + summary: (DEPRECATED) Write to a Resource or use write-attributes (notification + rules) for a Resource. + tags: + - Device data - resources + x-deprecation: + comment: /v2/endpoints/{device-id}/{resourcePath} is replaced by /v2/device-requests/{device-id}. + end_of_life_at: '2020-05-17T00:00:00+00:00' + issued_at: '2019-05-17T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management-api/connect/ + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v2/notification/callback: + delete: + description: 'Deletes the callback URL. + + + Deleting the callback URL also removes the channel''s notification queue. + Any unsent notifications are lost when the channel is deleted. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/callback + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deregisterWebhook + responses: + 204: &id025 + description: Successfully deleted. + 401: &id023 + description: Unauthorized. + 403: &id024 + description: Forbidden. The authorization token used is not an access key. + 404: + description: Callback URL does not exist. + summary: Delete callback URL. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + get: + description: 'Shows the current callback URL if it exists. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/callback \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getWebhook + produces: + - application/json + responses: + 200: + description: URL found. + schema: + $ref: '#/definitions/Webhook' + 401: *id023 + 403: *id024 + 404: + description: The callback URL does not exist. + summary: Check callback URL. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + put: + consumes: + - application/json + description: "Register a URL to which the server delivers notifications of changes\ + \ to the subscribed resource. To push notifications, you must first place\ + \ subscriptions. The maximum length of the URL, header keys, and values, all\ + \ combined, is 400 characters.\n\nNotifications are delivered as PUT requests\ + \ to the HTTP server, which the client defines with a subscription server\ + \ message. The given URL must be accessible, and respond to the PUT request\ + \ with a response code of 200 or 204.\n\nDevice Management Connect tests the\ + \ callback URL with an empty JSON payload `{}` when the URL is registered.\ + \ Callback implementation does not support URL redirection. For more information\ + \ on notification messages, see [NotificationMessage](#NotificationMessage).\n\ + \n**Optional headers in a callback message:**\n\nYou can set optional headers\ + \ to a callback in a **Webhook** object. Device Management Connect includes\ + \ the header and key pairs in the notification messages send them to callback\ + \ URL. The callback URLs and headers are application-specific.\n\nOne possible\ + \ use for additional headers is checking the origin of a PUT request, as well\ + \ as distinguishing the application to which the notification belongs.\n\n\ + **Note**: Only one callback URL for each application can be active. If you\ + \ register a new URL while another one is active, it replaces the active one.\ + \ There can be only one notification channel at a time for each application.\ + \ If another type of channel is already present, you need to delete it before\ + \ setting the callback URL.\n\n**Expiration of a callback URL:**\n\nA callback\ + \ can expire when Device Management cannot deliver a notification due to a\ + \ connection timeout or error response (4xx or 5xx). After each delivery failure,\ + \ Device Management sets an exponential back-off time and makes a retry attempt\ + \ after that. The first retry delay is 1 second, then 2s, 4s, 8s, up to a\ + \ maximum delay of two minutes. The retry delay is applied when the response\ + \ is received, or in case of timeout, after the timeout expires. The request\ + \ timeout is 20 seconds; in the case of timeout, the first retry happens 20\ + \ + 1 seconds after the first delivery attempt, then 20 + 2 seconds, and so\ + \ on. The callback URL is removed if all retries fail within 24 hours. More\ + \ about [notification sending logic](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html#notification-sending-logic)\ + \ in the Device Management documentation.\n\n**Supported callback URL protocols:**\n\ + \nCurrently, only HTTP and HTTPS protocols are supported.\n\n**HTTPS callback\ + \ URLs:**\n\nWhen delivering a notification to an HTTPS-based callback URL,\ + \ Device Management Connect identifies itself with a valid client certificate.\ + \ The certificate is signed by a trusted certificate authority (GlobalSign),\ + \ with a Common Name (CN) set to `notifications.mbedcloud.com`.\n\n**Configuration\ + \ options:**\n\nThe event notification channel provides configurations options\ + \ defined in [Serialization config](#SerializationConfigObjectV2).\n\n**Example:**\n\ + \nThis example command shows how to set your callback URL. It also sets an\ + \ optional header authorization. When Device Management Connect calls your\ + \ callback URL, the call contains the authorization header with the defined\ + \ value.\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v2/notification/callback\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ + \ \\\n-d '{\n \"url\": \"{callback-url}\",\n \"headers\": {\"authorization\"\ + : \"f4b93d6e-4652-4874-82e4-41a3ced0cd56\"},\n \"serialization\": {\"type\"\ + : \"v2\", \"max_chunk_size\": \"100\",\n \"cfg\": {\"deregistrations_as_object\"\ + : \"true\", \"include_uid\": \"true\", \"include_timestamp\": \"true\", \"\ + include_original_ep\": \"true\"\n }\n }\n}'\n```" + operationId: registerWebhook + parameters: + - description: A JSON object that contains the optional headers and URL where + notifications are sent. + in: body + name: webhook + required: true + schema: + $ref: '#/definitions/Webhook' + responses: + 204: + description: Successfully subscribed. + 400: + description: Given URL is not accessible, or other type of channel already + exists. + 401: *id023 + 403: *id024 + 415: + description: Unsupported Media Type. + summary: Register a callback URL. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + /v2/notification/channel: + get: + description: "Get channel delivery mechanism.\n\n**Example:**\n\n curl -X\ + \ GET https://api.us-east-1.mbedcloud.com/v2/notification/channel \\\n \ + \ -H 'Authorization: Bearer '\n" + operationId: getChannelMetadata + responses: + 200: + description: Success. + schema: + $ref: '#/definitions/ChannelMetadata' + 404: + description: Channel was not found. + summary: Get channel metadata. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + /v2/notification/pull: + delete: + deprecated: true + description: 'Delete a notification Long Poll channel. This is required to change + the channel from Long Poll to another type. Do not make a GET `/v2/notification/pull` + call for two minutes after deleting the channel, because it can implicitly + recreate the pull channel. You can also have some random responses with payload + or 410 GONE with "CHANNEL_DELETED" as a payload or 200/204 until the old channel + is purged. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/pull \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteLongPollChannel + responses: + 200: + description: Success. The body can contain "REMOVED" if it was deleted with + this call or "ALREADY_DELETED" if it was deleted before and not purged + yet. + 401: *id023 + summary: Delete notification Long Poll channel. + tags: + - Device data - notifications + x-deprecation: + comment: Long polling is deprecated and should be used for development purposes + only. + end_of_life_at: '2020-06-30T00:00:00+00:00' + issued_at: '2017-02-10T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + get: + deprecated: true + description: 'In this case, notifications are delivered through HTTP long poll + requests. The HTTP request is kept open until one or more event notifications + are delivered to the client, or the request times out (response code 204). + In both cases, the client should open a new polling connection after the previous + one closes. Only a single long polling connection per application can be ongoing + at any given time. We recommend using a persistent connection (Connection + keep-alive header in the request) to avoid excess TLS handshakes. + + + The pull channel is implicitly created by the first GET call to `/v2/notification/pull`. + It refreshes on each GET call. If the channel is not polled for a long time + (10 minutes), it expires and is deleted. This means that no notifications + will stay in the queue between polls. A channel can be also be deleted explicitly + with a DELETE call. + + + **Note:** If you cannot have a public-facing callback URL, for example, when + developing on your local machine, you can use long polling to check for new + messages. However, **long polling is deprecated** and will likely be replaced + in the future. It is meant only for experimentation, not commercial use. The + proper method to receive notifications is a **notification callback**. + + + There can only be one notification channel per application in Device Management + Connect. If a notification channel of other type already exists for the application, + delete it before creating a long poll notification channel. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/pull \ + + -H ''Authorization: Bearer '' + + ```' + operationId: longPollNotifications + produces: + - application/json + responses: + 200: + description: Success. + schema: + $ref: '#/definitions/NotificationMessage' + 204: + description: No new notifications. + 400: + description: Other type of channel already exists. + 401: *id023 + 409: + description: Conflict. Long poll request exists already. + 410: + description: Pull channel was deleted and waiting to be purged. This code + is a result of incorrect client behavior (delete channel and then pull), + which can prevent the creation of a callback channel after the pull channel + is deleted. The channel can be (randomly) recreated by this call when + deleted and not purged. This client behaviour can set the channel in an + undefined state for some time. The channel may respond with 410 GONE or + 200/204 codes randomly for some time. Finally, the channel enters a valid + "channel exists" state. + summary: Get notifications using Long Poll + tags: + - Device data - notifications + x-deprecation: + comment: Long polling is deprecated and should be used for development purposes + only. + end_of_life_at: '2020-06-30T00:00:00+00:00' + issued_at: '2017-02-10T15:23:00+00:00' + links: + - https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + /v2/notification/websocket: + delete: + description: 'Delete a notification websocket channel bound to the application. + This is required to change the channel from websocket to another type. + + + Deleting the websocket channel also removes the channel''s notification queue. + Any unsent notifications are lost when the channel is deleted. + + **Example:** + + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/websocket + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteWebsocket + responses: + 204: *id025 + 401: *id023 + 403: *id024 + 404: + description: Websocket channel doesn't exist. + summary: Delete websocket channel. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + get: + description: 'Returns 200 with websocket connection status, if websocket channel + exists. + + + **Note**: The current version does not yet have the capability to determine + the channel status and will always return status ''unknown'' and queue size + ''-1''. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/websocket + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getWebsocket + produces: + - application/json + responses: + 200: + description: Websocket found. + schema: + $ref: '#/definitions/WebsocketChannel' + 401: *id023 + 403: *id024 + 404: + description: No channel has been registered. + summary: Get websocket channel information. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + put: + consumes: + - application/json + description: "Register (or update) a channel using websocket connection to deliver\ + \ notifications. The websocket channel should be opened by client using `/v2/notification/websocket-connect`\ + \ endpoint. To get notifications pushed, you must place subscriptions. For\ + \ more information on notification messages, see [NotificationMessage](#NotificationMessage).\n\ + \nA websocket channel can have only one active websocket connection at a time.\ + \ If a websocket connection for a channel exists and a new connection to the\ + \ same channel is made, the connection is accepted and the older connection\ + \ is closed.\n\n**Note**: Only one websocket channel for each application\ + \ can be active at a time. If you register a new websocket channel while another\ + \ one is active, it replaces the previously active one. If another type of\ + \ channel is already present, you need to delete it before registering a websocket\ + \ channel.\n\n**Note**: The current version does not yet have the capability\ + \ to determine the channel status and will always return status 'unknown'\ + \ and queue size '-1'.\n\n**Expiration of a websocket:**\n\nA websocket channel\ + \ is expired if the channel does not have an opened websocket connection for\ + \ a 24-hour period. Channel expiration means the channel is deleted and any\ + \ undelivered notifications stored in its internal queue is removed. As long\ + \ as the channel has an opened websocket connection or time between successive\ + \ websocket connections is less than 24 hours,\nthe channel is considered\ + \ active, notifications are stored in its internal queue and delivered when\ + \ a websocket connection is active. A channel can be also deleted explicitly\ + \ with a DELETE call.\n\nMore about [notification sending logic](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html#notification-sending-logic).\n\ + \n**Configuration options:**\n\nThe event notification channel provides configurations\ + \ options defined in [Serialization config](#SerializationConfigObjectV2)\n\ + \n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v2/notification/websocket\ + \ \\\n-H 'Authorization: Bearer ' \\\n-d '{\n \"serialization\"\ + : {\"type\": \"v2\", \"max_chunk_size\": \"100\",\n \"cfg\": {\"deregistrations_as_object\"\ + : \"true\", \"include_uid\": \"true\", \"include_timestamp\": \"true\", \"\ + include_original_ep\": \"true\"\n }\n }\n}\n```" + operationId: registerWebsocket + responses: + 200: + description: Channel successfully updated. In the current v2 implementation + this operation has no effect, and any subsequent PUT call from a client + previously registered to a channel results in a 200 OK response. + schema: + $ref: '#/definitions/RegisterWebsocketChannel' + 201: + description: Channel succesfully registered. + schema: + $ref: '#/definitions/WebsocketChannel' + 400: + description: Other type of channel already exists. + 401: *id023 + 403: *id024 + summary: Register a websocket channel. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + /v2/notification/websocket-connect: + get: + description: "\nA websocket channel can have only one active connection at a\ + \ time. If a websocket connection for a channel exists and a new connection\ + \ to the same channel is made, the connection is accepted and the older connection\ + \ is closed.\n\nA websocket client library should be used when connecting\ + \ to this endpoint.\n\nOnce the socket has been opened, the server may close\ + \ it with one of the following status codes.\n\n\n \n \n\ + \ \n \n \n \n\ + \ \n \n \n \n \n \n \n \ + \ \n\ + \ \n \n \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n\ + \ \n \n \n\ + \ \n \n
CodeDescription
1000Socket closed\ + \ normally by the client, or by the server when the channel is deleted with\ + \ a REST call.
1001Going away. Set when another socket opens on the used channel.
1006Abnormal closure.\ + \ The client should reconnect after receiving this status code. A short reconnect\ + \ delay is recommended.
1008Policy violation. Set if the access key is lost or invalidated\ + \ after a successful WebSocket handshake.
1011Unexpected condition. The socket is closed\ + \ with this status in an attempt to open a socket to a nonexistent channel\ + \ (without a prior PUT request). This code is also used to indicate a closing\ + \ socket for any other unexpected condition in the server.
1012Service restart. Set when\ + \ the server restarts for update, maintenance, and so on. The client should\ + \ reconnect after receiving this status code. A short reconnect delay is recommended.
\n\n**Expected client behaviour:**\n\nIf the\ + \ connection is closed with code 1006 or 1012, the client should try to reconnect\ + \ to maintain the notification flow. The client might disconnect several times\ + \ in a relatively short period, for example, during service updates. This\ + \ is normal. The desired client behavior is to reconnect after each disconnect.\n\ + \n**Example:**\n\nThe example is meant only for testing. For production devices,\ + \ use a WebSocket client library. Websocat (https://github.com/vi/websocat)\ + \ is a command-line client for WebSockets, like netcat or cURL. The example\ + \ command opens a new WebSocket, waits for any data sent to the socket from\ + \ the server, and prints it to `stdout`.\n\n```\nwebsocat wss://api.us-east-1.mbedcloud.com/v2/notification/websocket-connect\ + \ \\\n-H \"Sec-WebSocket-Protocol:wss,pelion_ak_\"\n```" + operationId: connectWebsocket + parameters: + - default: Upgrade + in: header + name: Connection + required: true + type: string + - default: websocket + in: header + name: Upgrade + required: true + type: string + - description: 'Access key or user token must be present in the `Sec-WebSocket-Protocol` + header **if Authorization header cannot be provided**: `Sec-WebSocket-Protocol:"wss,pelion_ak_{access_key}"`. + + Refer to the notification service documentation for examples.' + in: header + name: Sec-WebSocket-Protocol + required: false + type: string + - description: Originating host of the request. + in: header + name: Origin + required: true + type: string + - default: 13 + description: WebSocket version. Must be 13. + in: header + name: Sec-WebSocket-Version + required: true + type: integer + - description: The value of this header field must be a nonce consisting of + a randomly selected 16-byte value that has been base64-encoded (see Section + 4 of [RFC4648]). The nonce must be selected randomly for each connection. + in: header + name: Sec-WebSocket-Key + required: true + type: string + responses: + 101: + description: Switching protocols. + 400: + description: Required header(s) missing. + 401: *id023 + 426: + description: Upgrade required. Connect and/or Upgrade headers missing. + 429: + description: While a WebSocket handshake is still in progress, no new WebSocket + requests with the same authorization token will be accepted. + summary: Open the websocket. + tags: + - Device data - notifications + x-origin: /home/circleci/project/notification-service/public/swagger.yaml + /v2/subscriptions: + delete: + description: 'Remove presubscriptions. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deletePreSubscriptions + responses: + 204: + description: Successfully removed subscriptions. + 401: + description: Unauthorized. + 403: + description: 'Forbidden: the authorization token used is not an access key.' + summary: Remove presubscriptions. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + get: + description: 'Retrieve presubscription data. The server returns a JSON structure. + If there are no presubscribed resources, the server returns an empty array. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/subscriptions \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getPreSubscriptions + produces: + - application/json + responses: + 200: + description: OK. + schema: + $ref: '#/definitions/PresubscriptionArray' + 401: + description: Unauthorized. + 403: + description: 'Forbidden: the authorization token used is not an access key.' + summary: View presubscriptions. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + put: + consumes: + - application/json + description: "A presubscription is a set of rules you define to subscribe to\ + \ specific resources automatically when certain devices register or does a\ + \ register update.\nYou can set subscription rules based on the endpoint ID\ + \ (optionally having an `*` character at the end), endpoint type, a list of\ + \ resources, or expressions with an `*` character at the end.\nWhen a device\ + \ that meets the subscription rules registered, Device Management Connect\ + \ automatically sends subscription requests to the device for the resources\ + \ you specify.\nTo remove the presubscription data, put an empty array as\ + \ a rule.\nTo place dynamic observation rules for individual object instances\ + \ and resources and define when the device sends observations, set [notification\ + \ rules](https://www.pelion.com/docs/device-management/current/resources/resource-change-webapp.html).\n\ + \n**Note:** The subscription is bound to the application you are using. To\ + \ get notifications of the resource value changes, you need to create an [event\ + \ notification channel](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html)\ + \ with an access key of the same application.\n\n**Example request:**\n```\n\ + curl -X PUT https://api.us-east-1.mbedcloud.com/v2/subscriptions \\\n-H 'Authorization:\ + \ Bearer ' \\\n-H 'content-type: application/json' \\\n-d '[\n\ + \ {\n \"endpoint-name\": \"node-001\",\n \"resource-path\"\ + : [\"/dev\"]\n },\n {\n \"endpoint-type\": \"Light\",\n\ + \ \"resource-path\": [\"/sen/*\"]\n },\n {\n \"\ + endpoint-name\": \"node*\"\n },\n {\n \"endpoint-type\"\ + : \"Sensor\"\n },\n {\n \"resource-path\": [\"/dev/temp\"\ + ,\"/dev/hum\"]\n }\n ]'\n```\n\n- Subscribe to `/dev` resource of\ + \ endpoint named `node-001`.\n- Subscribe to `Light` type of endpoints and\ + \ their resources prefixed with `/sen/`.\n- Subscribe to all observable resources\ + \ of endpoint names prefixed with `node`.\n- Subscribe to all observable resources\ + \ of `Sensor` type endpoints.\n- Subscribe to `/dev/temp` and `/dev/hum` resources\ + \ of all endpoints.\n\n**Limits**:\n\n- The maximum length of the endpoint\ + \ name and endpoint type is 64 characters.\n- The maximum length of the resource\ + \ path is 128 characters.\n- You can subscribe to 256 separate resource paths.\n\ + - The maximum number of presubscription entries is 1024.\n\n**Note**: To save\ + \ bandwidth and avoid unnecessary traffic, use resource path patterns to limit\ + \ the matching resources in the presubscription data. This prevents your web\ + \ application from receiving unwanted resource notifications. See [Subscribe\ + \ only to what you need](https://www.pelion.com/docs/device-management/current/resources/resource-change-webapp.html)." + operationId: updatePreSubscriptions + parameters: + - description: Array of presubscriptions. + in: body + name: presubscription + required: true + schema: + $ref: '#/definitions/PresubscriptionArray' + produces: + - text/plain + responses: + 204: + description: Successfully created. + 400: + description: Bad request, malformed content. + 401: + description: Unauthorized. + 403: + description: 'Forbidden: the authorization token used is not an access key.' + summary: Set presubscriptions. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v2/subscriptions/{device-id}: + delete: + description: 'Delete all resource subscriptions in a single device. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteEndpointSubscriptions + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + responses: + 204: + description: Successfully removed. + summary: Delete all subscriptions on a device. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + get: + description: 'Retrieve a list of all subscribed resources on a single device. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getEndpointSubscriptions + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + produces: + - text/uri-list + responses: + 200: + description: List of subscribed resources. + schema: + description: A list of resource URIs, one per line. + example: /sen/light + type: string + 404: + description: Endpoint not found, or there are no subscriptions for that + endpoint. + summary: View all subscriptions on a device. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v2/subscriptions/{device-id}/{resourcePath}: + delete: + description: 'Remove an existing subscription to a resource. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id}/{resourcePath} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteResourceSubscription + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: 'The resource URL. This can be the path to: + + + - An object; for example, `3303`. + + - An object instance; for example `3303/0`. + + - A resource; for example `3303/0/5602`. + + + For more information about the Device Management resource model, please + see the [Device Management documentation](https://www.pelion.com/docs/device-management/current/resources/resource-model.html).' + in: path + name: resourcePath + required: true + type: string + responses: + 204: + description: Successfully removed subscription. + summary: Remove a subscription. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + get: + description: Check whether you are subscribed to receive resource content updates + for a specific resource. + operationId: checkResourceSubscription + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: 'The resource URL. This can be the path to: + + + - An object; for example, `3303`. + + - An object instance; for example `3303/0`. + + - A resource; for example `3303/0/5602`. + + + For more information about the Device Management resource model, please + see the [Device Management documentation](https://www.pelion.com/docs/device-management/current/resources/resource-model.html).' + in: path + name: resourcePath + required: true + type: string + responses: + 200: + description: Resource is subscribed. + 404: + description: Resource is not subscribed. + summary: Read the subscription status for a specific resource. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + put: + description: ' + + Subscribe to a resource to receive updated resource content, periodically + or based on a more sophisticated solution-dependent logic. + + + To place dynamic observation rules for individual object instances and resources + and define when the device sends observations, set [notification rules](https://www.pelion.com/docs/device-management/current/resources/resource-change-webapp.html). + + + **Note:** Device Management removes all manual subscriptions during a full + device registration, at which point applications must re-subscribe. To avoid + this, use `/subscriptions` to set a presubscription. + + + You can subscribe to resources, objects and object instances. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id}/{resourcePath} + \ + + -H ''Authorization: Bearer '' + + ``` + + + **Important:** You must also call a [`/notification/callback`](https://www.pelion.com/docs/device-management-api/notifications/) + method for Device Management Connect to push resource change notifications.' + operationId: addResourceSubscription + parameters: + - description: The device ID generated by Device Management. The ID must be + an exact match. Do not use wildcards. + in: path + name: device-id + required: true + type: string + - description: 'The resource URL. This can be the path to: + + + - An object; for example, `3303`. + + - An object instance; for example `3303/0`. + + - A resource; for example `3303/0/5602`. + + + For more information about the Device Management resource model, please + see the [Device Management documentation](https://www.pelion.com/docs/device-management/current/resources/resource-model.html).' + in: path + name: resourcePath + required: true + type: string + produces: + - application/json + responses: + 200: + description: Successfully subscribed. + 202: + description: Accepted. Returns an asynchronous response ID used to reference + the future asynchronous response. + schema: + $ref: '#/definitions/AsyncID' + 400: + description: Bad request, malformed content. + 404: + description: Endpoint or its resource not found. + 429: + description: 'Cannot accept the request at the moment: the queue is full.' + 502: + description: 'Subscription failed: endpoint not connected.' + summary: Subscribe to a resource to receive updates about resource changes. + tags: + - Device data - subscriptions + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v3/access-keys: + get: + description: 'Retrieve an array of access keys. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/access-keys \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccessKeys + parameters: + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Status filter. + in: query + name: status__eq + required: false + type: string + - description: Application filter. + in: query + name: application_id__eq + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccessKeyList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all access keys. + tags: + - Account - access keys + x-filter: + application_id: + - eq + status: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/access-keys/{access_key_id}: + get: + description: 'Retrieve details of an access key. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/access-keys/{access_key_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccessKey + parameters: + - description: The ID of the access key to retrieve. + in: path + name: access_key_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccessKey' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An access key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get access key. + tags: + - Account - access keys + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts: + get: + description: 'Retrieve an array of tenant accounts, optionally filtered by status + and tier level. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccounts + parameters: + - description: An optional filter for account status, ENROLLING, ACTIVE, RESTRICTED, + or SUSPENDED. + in: query + name: status__eq + required: false + type: string + - description: An optional filter to retrieve accounts with a specified set + of statuses. + in: query + name: status__in + required: false + type: string + - description: An optional filter to exclude accounts with a specified set of + statuses. + in: query + name: status__nin + required: false + type: string + - description: An optional filter for tier level. Must be 0, 1, 2, 98, 99, or + omitted. + in: query + name: tier__eq + required: false + type: string + - description: An optional filter for parent account ID. + in: query + name: parent__eq + required: false + type: string + - description: An optional filter for account end market. + in: query + name: end_market__eq + required: false + type: string + - description: 'An optional filter for account country. Finds all matches where + the filter value is a case-insensitive substring of the result. Example: + country__like=LAND matches Ireland.' + in: query + name: country__like + required: false + type: string + - default: 1000 + description: The number of results to return (2-1000). Default 1000. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + limits, policies, sub_accounts, history.' + in: query + name: include + required: false + type: string + - description: 'Format information for the query response. Supported: format=breakdown.' + in: query + name: format + required: false + type: string + - description: Property name returned from account-specific properties. + in: query + name: properties + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccountInfoList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all accounts. + tags: + - Tenant accounts - accounts + x-filter: + country: + - like + end_market: + - eq + parent: + - eq + status: + - eq + - in + - nin + tier: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + post: + consumes: + - application/json + description: 'Create a new account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"display_name": "MyAccount1", "aliases": [ "my-account" ], "admin_name": + "accountAdmin1", "email": "example_admin@myaccount.info", "country": "United + Kingdom", "end_market": "Smart City", "address_line1": "110 Fulbourn Rd", + "city": "Cambridge", "contact": "J. Doe", "company": "Arm"}'' + + ```' + operationId: createAccount + parameters: + - description: Details of the account to create. + in: body + name: body + required: true + schema: + $ref: '#/definitions/AccountCreationReq' + - default: create + description: 'Action, either `create` or `enroll`. + +
    + +
  • `create` creates the account where its admin user has ACTIVE status + if `admin_password` was defined in the request, or RESET status if no `admin_password` + was defined. If the user already exists, its status is not modified.
  • + +
  • `enroll` creates the account where its admin user has ENROLLING status. + If the user already exists, its status is not modified. Email to finish + enrollment or notify the existing user about the new account is sent to + the `admin_email` defined in the request.
' + in: query + name: action + required: false + type: string + produces: + - application/json + responses: + '201': + description: Successful operation. + schema: + $ref: '#/definitions/AccountCreationResp' + '400': + description: Error in input data, for example, invalid username. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: Account with the specified alias exists already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new account. + tags: + - Tenant accounts - accounts + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/me: + get: + description: 'Retrieve information about the account. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/me?include=policies + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getMyAccountInfo + parameters: + - description: 'Comma-separated additional data to return. Currently supported: + limits, policies, sub_accounts.' + in: query + name: include + required: false + type: string + - description: Property name to return from account-specific properties. + in: query + name: properties + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccountInfo' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get account information. + tags: + - Account - profile + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update the account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/me \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"phone_number": "12345678"}'' + + ```' + operationId: updateMyAccount + parameters: + - description: Details of the account to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/AccountUpdateReq' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccountInfo' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates attributes of the account. + tags: + - Account - profile + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/me/notifications: + get: + description: Retrieve an array of email notification logs. + operationId: getNofificationEntries + parameters: + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/NotificationEntryList' + '400': + description: Error in input data, or missing or invalid parameters. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get logs of email notifications. + tags: + - Account - email notification logs + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/me/notifications/{notification_id}: + get: + description: Retrieve an email notification log entry. + operationId: getNofificationEntry + parameters: + - description: The ID of the log entry to be retrieved. + in: path + name: notification_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/NotificationEntry' + '400': + description: Error in input data, missing or invalid parameters. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: No entry found for the given ID. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get an email notification. + tags: + - Account - email notification logs + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}: + get: + description: 'Retrieve detailed information about an account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountInfo + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: 'Comma-separated additional data to return. Currently supported: + limits, policies, sub_accounts, history.' + in: query + name: include + required: false + type: string + - description: Property name to return from account-specific properties. + in: query + name: properties + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccountInfo' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account with the given ID not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get account information. + tags: + - Tenant accounts - accounts + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update an account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"phone_number": "12345678"}'' + + ```' + operationId: updateAccount + parameters: + - description: The ID of the account to update. + in: path + name: account_id + required: true + type: string + - description: Details of the account to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/AccountUpdateRootReq' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccountInfo' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account with the given ID not found. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: Account with the specified new alias exists already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update attributes of an existing account. + tags: + - Tenant accounts - accounts + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/access-keys: + get: + description: 'Retrieve an array of access keys. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/access-keys + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccountAccessKeys + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Status filter. + in: query + name: status__eq + required: false + type: string + - description: Application filter. + in: query + name: application_id__eq + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccessKeyList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all access keys. + tags: + - Tenant accounts - access keys + x-filter: + application_id: + - eq + status: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/access-keys/{access_key_id}: + get: + description: 'Retrieve details of an access key. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/access-keys/{access_key_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountAccessKey + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The ID of the access key to retrieve. + in: path + name: access_key_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/AccessKey' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or access key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get access key. + tags: + - Tenant accounts - access keys + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys: + get: + deprecated: true + description: 'Retrieve an array of API keys, optionally filtered by the owner. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccountApiKeys + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: API key filter. Do not include the private portion of the API + key (the last 32 characters). + in: query + name: key__eq + required: false + type: string + - description: Owner name filter. + in: query + name: owner__eq + required: false + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoRespList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the given ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all API keys. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-filter: + key: + - eq + owner: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + post: + consumes: + - application/json + deprecated: true + description: 'Create a new API key. There is no default value for the owner + ID, and it must be from the same account where the new API key is created. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "MyKey1"}'' + + ```' + operationId: createAccountApiKey + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: Details of the API key to create. + in: body + name: body + required: true + schema: + $ref: '#/definitions/ApiKeyInfoReq' + produces: + - application/json + responses: + '201': + description: New entity created. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data, for example, missing API key name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the given ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new API key. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys/{apikey_id}: + delete: + deprecated: true + description: 'Delete an API key. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteAccountApiKey + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to delete. + in: path + name: apikey_id + required: true + type: string + produces: + - application/json + responses: + '204': + description: Deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete the API key. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + deprecated: true + description: "Retrieve details of an API key.\nNote: This endpoint is\ + \ restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}\ + \ \\\n -H 'Authorization: Bearer '\n```" + operationId: getAccountApiKey + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to retrieve. + in: path + name: apikey_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get API key details. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + deprecated: true + description: 'Update API key details. - the queue are delivered in the order of insertion, one at a time, and not - concurrently. + Note: This endpoint is restricted to administrators. - One delivery attempt consist from protocol specific retrasmission logic, where - is multiple trasmissions. In case + **Example:** - of CoAP, the retrasmissions exponential backoff 2, 4, 8, 16 to 64 seconds, - taking total over 2 minutes. + ``` - If the device does not respond within this two-minute period, delivery fails, - and the request is put back + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} + \ - in the queue so long as the retry count is less than its maximum. + -H ''Authorization: Bearer '' \ + -H ''content-type: application/json'' \ - For a queue-mode device, the request delivery is not attempted immediately, - but only when the device next time + -d ''{"name": "TestApiKey25"}'' - contacts the server. + ```' + operationId: updateAccountApiKey + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to update. + in: path + name: apikey_id + required: true + type: string + - description: New API key attributes to be stored. + in: body + name: body + required: true + schema: + $ref: '#/definitions/ApiKeyUpdateReq' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data, for example, invalid API key name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account ID or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update API key details. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys/{apikey_id}/groups: + delete: + consumes: + - application/json + deprecated: true + description: 'Remove API key from groups. + Note: This endpoint is restricted to administrators. - If retries are exhausted or the expiry time has passed, then the server discards - the request and sends an error - in **AsyncIDResponse**. The retries could be exhausted, for example, if the - device periodically contacts + **Example:** - the server and receives the request from the queue, but then fails to respond - back to the server. + ``` + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups + \ - On the other hand, the device might lose its network connectivity, and the - requests in the queue might expire + -H ''Authorization: Bearer '' \ - and get discarded before the device regains the connectivity. + -H ''content-type: application/json'' \ + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' - See also /v2/endpoints/{device-id}/{resourcePath}. + ```' + operationId: removeAccountApiKeyFromGroups + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to remove from the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + items: + type: string + type: array + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove API key from groups. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + deprecated: true + description: 'Retrieve an array of policy groups associated with an API key. + Note: This endpoint is restricted to administrators. - You can write [Notification Rules](../connecting/resource-change-webapp.html#notification-rules) - for a - resource with PUT command. Please see example of the payload below. + **Example:** ``` - { "method": "PUT", "uri": "/5/0/1?lt=10>=60&pmax=120" } + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups + \ - ``` + -H ''Authorization: Bearer '' + ```' + operationId: getGroupsOfAccountApikey + parameters: + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key. + in: path + name: apikey_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummaryList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get policy groups of an API key. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + post: + consumes: + - application/json + deprecated: true + description: 'Add API key to groups. - POST `method` can be used to either execute or create resource on a LWM2M - supporting device. When creating + Note: This endpoint is restricted to administrators. - a resource, `uri` must refer to an object, and `payload-b64` must be in LWM2M - TLV format, as in - the following example. + **Example:** ``` - { "method": "POST", "uri": "/123", "content-type": "application/vnd.oma.lwm2m+tlv", - "payload-b64": "BwHFAnZhbHVl" } + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups + \ - ``` + -H ''Authorization: Bearer '' \ + -H ''content-type: application/json'' \ - ``` + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: addAccountApiKeyToGroups + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to add to the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of groups to update. + in: body + name: body + required: true + schema: + items: + type: string + type: array + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API key to a list of groups. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys/{apikey_id}/groups/add: + post: + consumes: + - application/json + deprecated: true + description: 'Add an API key to groups. - Example URIs: + Note: This endpoint is restricted to administrators. - POST /v2/device-requests/015f2fa34d310000000000010030036c?async-id=123e4567-e89b-12d3-a456-426655440000 - POST /v2/device-requests/015f2fa34d310000000000010030036c?async-id=123e4567-e89b-12d3-a456-426655440000&retry=2&expiry-seconds=7200 + **Example:** + + ``` + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups/add + \ - Example payload to read value from resource /5/0/1: + -H ''Authorization: Bearer '' \ - { "method": "GET", "uri": "/5/0/1" } + -H ''content-type: application/json'' \ + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' - Example payload to set notification rules for resource /5/0/1: + ```' + operationId: addAccountApiKeyToListedGroups + parameters: + - description: The ID of the Account. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to add to the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API key to a list of groups. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/groups/add + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys/{apikey_id}/groups/remove: + post: + consumes: + - application/json + deprecated: true + description: 'Remove an API key from groups. - { "method": "PUT", "uri": "/5/0/1?lt=10>=60&pmax=120" } + Note: This endpoint is restricted to administrators. - Example payload to write value "value1" to resource /5/0/1: + **Example:** - { "method": "PUT", "uri": "/5/0/1%20?k1=v1&k2=v2%22", "accept": "text/plain", - "content-type": "text/plain", "payload-b64": "dmFsdWUxCg==" } + ``` + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups/remove + \ - Example payload to execute LWM2M resource /123/1/1: + -H ''Authorization: Bearer '' \ - { "method": "POST", "uri": "/123/1/1" } + -H ''content-type: application/json'' \ + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' - Immediate response: + ```' + operationId: removeAccountApiKeyFromListedGroups + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: The ID of the API key to remove from the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove API key from groups. + tags: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups/remove + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/api-keys/{apikey_id}/reset-secret: + post: + deprecated: true + description: 'Reset the secret key of the API key. - 202 Accepted + Note: This endpoint is restricted to administrators. - Examples of AsyncIDResponse, delivered via the notification channel: + **Example:** - { "async-responses": [ { "id": "123e4567-e89b-12d3-a456-426655440000", "status": - 200, "payload": "dmFsdWUxCg==", "ct": "text/plain", "max-age": 600 } ] } + ``` - { "async-responses": [ { "id": "123e4567-e89b-12d3-a456-426655440000", "status": - 504, "error": "TIMEOUT" } ] } + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/reset-secret + \ - ``` + -H ''Authorization: Bearer '' - ' - operationId: createAsyncRequest + ```' + operationId: resetAccountApiKeySecret parameters: - - description: The device ID generated by Device Management. - format: uuid, 32 hexadecimal characters + - description: Account ID. in: path - name: device-id + name: account_id required: true type: string - - description: The client-generated ID for matching the correct response delivered - by notification. - format: 1-40 alphanumeric characters and dashes. - in: query - name: async-id - pattern: ^[\w\-]{1,40}$ + - description: The ID of the API key to reset. + in: path + name: apikey_id required: true type: string - - description: The count of retry transmissions of the request to the device, - after initial transmission. For example, retry of two means three delivery - attempts in total. If retries are exhausted, the request is discarded and - an error is delivered in the AsyncIDResponse. Default value of retry is - 0 for a non-queue-mode device and 2 for a queue-mode device. - in: query - maximum: 10 - minimum: 0 - name: retry - required: false - type: integer - - description: The time period during which the delivery is attempted, in seconds. - If the device is not reachable within this period, the request is discarded - and an error is delivered in the AsyncIDResponse. Default value of expiry-seconds - is 2 hours for a non-queue-mode device and 3 days for a queue-mode device. - in: query - maximum: 2592000 - minimum: 60 - name: expiry-seconds - required: false - type: integer - - description: Device request to send. + - description: New API key attributes to be stored. in: body name: body - required: true + required: false schema: - $ref: '#/definitions/DeviceRequest' + $ref: '#/definitions/ApiKeyUpdateReq' produces: - application/json responses: - 202: - description: Accepted. - 400: - description: Bad request. Contains one of the errors RESOURCE_NOT_FOUND, - DEVICE_NOT_CONNECTED, MALFORMED_JSON_CONTENT, MALFORMED_ASYNC_ID and QUEUE_IS_FULL + '200': + description: Successful operation. schema: - type: string - 401: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': description: Authentication failure. - 404: - description: "Contains one of the following errors:\n\n \n\ - \ \n \n \n\ - \ \n \n \n \n \n\ - \ \n\ - \ \n \n \n\ - \ \n \n \n
Error messageDescription
DEVICE_NOT_FOUNDDevice is not in Device reqistry. Either device has requestd\ - \ register delete or device has not connected in time and expired.
URI_PATH_DOES_NOT_EXISTSThe device does not have requested resource. Check the resource\ - \ path is correct.
" schema: - type: string - summary: Send an async request to device + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or API key with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Reset the secret key. tags: - - DeviceRequests - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/device-shared-keys: + - Tenant accounts - API keys + x-deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications: get: - consumes: - - application/json - description: 'Retrieve pre-shared keys (PSKs) with pagination. Default page - size of 50 entries. + description: 'Retrieve an array of applications. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications + \ - -H "Authorization: Bearer " + -H ''Authorization: Bearer '' ```' - operationId: listPreSharedKeys + operationId: getAllAccountApplications parameters: - - description: The number of entries per page. + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 in: query name: limit required: false type: integer - - description: An offset token for fetching a specific page. Provided by the - server. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Status filter. + in: query + name: status__eq + required: false + type: string produces: - application/json responses: - 200: - description: List of PSKs. + '200': + description: Successful operation. schema: - $ref: '#/definitions/ListOfPreSharedKeysWithoutSecret' - 400: - description: Bad request. Contains the error as a string, either TOKEN_NOT_FOUND - or INVALID_LIMIT. - summary: List PSKs. + $ref: '#/definitions/ApplicationList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all applications. tags: - - PreSharedKeys - x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml - post: - consumes: - - application/json - description: "Upload a PSK for an endpoint to allow it to bootstrap. The existing\ - \ key cannot be overwritten, but needs\nto be deleted first in the case of\ - \ re-setting a PSK for an endpoint.\n\n**Note**: The PSK APIs are available\ - \ only to accounts that have this feature enabled.\n\n**Example:**\n```\n\ - curl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n\ - -H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\"\ - \ \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\"\ - : \"4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```" - operationId: uploadPreSharedKey + - Tenant accounts - applications + x-filter: + status: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + post: + consumes: + - application/json + description: 'Create a new application. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications + -d ''{"name": "MyApplication1"}'' \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' + + ```' + operationId: createAccountApplication parameters: - - description: PSK to upload. + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The details of the application to create. in: body name: body required: true schema: - $ref: '#/definitions/PreSharedKey' + $ref: '#/definitions/Application' produces: - application/json responses: - 201: - description: Successfully created. - 400: - description: Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, - INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT. + '201': + description: New entity created. schema: - type: string - 401: + $ref: '#/definitions/Application' + '400': + description: Error in input data, for example, missing name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': description: Authentication failure. - 403: - description: Forbidden. You need to read and accept the PSK license in Device - Management Portal. - 409: - description: Conflict. The PSK for the endpoint already exists and cannot - be overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT. schema: - type: string - summary: Upload a PSK to Pelion Device Management. + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new application. tags: - - PreSharedKeys - x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml - /v2/device-shared-keys/{endpoint_name}: + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}: delete: - description: 'Remove a PSK. + description: 'Delete the application. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id} \ - -H "Authorization: Bearer " + -H ''Authorization: Bearer '' ```' - operationId: deletePreSharedKey + operationId: deleteAccountApplication parameters: - - description: The unique endpoint identifier that this PSK applies to. [Reserved - characters](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters) - must be percent-encoded. + - description: The ID of the account to retrieve. in: path - name: endpoint_name + name: account_id + required: true + type: string + - description: The ID of the application to delete. + in: path + name: application_id required: true type: string + produces: + - application/json responses: - 204: - description: Successfully deleted. Responds even if the endpoint does not - have an associated PSK. - 400: - description: Bad request. Endpoint name validation failed. Contains error - INVALID_ENDPOINT_NAME. - schema: - type: string - 401: + '204': + description: Deleted successfully. + '401': description: Authentication failure. - summary: Remove a PSK. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete application. tags: - - PreSharedKeys - x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Check if a PSK for an endpoint exists or not. The response does - not contain the secret itself. + description: 'Retrieve details of an application. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id} \ - -H "Authorization: Bearer " + -H ''Authorization: Bearer '' ```' - operationId: getPreSharedKey + operationId: getAccountApplication parameters: - - description: The unique endpoint identifier that this PSK applies to. [Reserved - characters](https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters) - must be percent-encoded. + - description: The ID of the account to retrieve. in: path - name: endpoint_name + name: account_id + required: true + type: string + - description: The ID of the application to retrieve. + in: path + name: application_id required: true type: string + produces: + - application/json responses: - 200: - description: Pre-shared key for the device (does not contain secret). - schema: - $ref: '#/definitions/PreSharedKeyWithoutSecret' - 400: - description: Bad request. Endpoint name validation failed. Contains error - INVALID_ENDPOINT_NAME. + '200': + description: Successful operation. schema: - type: string - 401: + $ref: '#/definitions/Application' + '401': description: Authentication failure. - 404: - description: The PSK does not exist. - summary: Get a PSK. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get application. tags: - - PreSharedKeys - x-origin: /home/circleci/project/connector-bootstrap/public/swagger.yaml - /v2/endpoints/{device-id}: - get: - description: 'Retrieves resources cached by Device Management Connect. This - call does not formulate a message to the device. + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + description: 'Update application details. + + Note: This endpoint is restricted to administrators. **Example:** - ``` + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id} + \ - curl -X GET https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id} \ + -H ''Authorization: Bearer '' \ - -H ''Authorization: Bearer '' + -H ''content-type: application/json'' \ + + -d ''{"name": "TestApplication25"}'' ```' - operationId: getEndpointResources + operationId: updateAccountApplication parameters: - - description: A unique device ID for an endpoint. The ID must be an exact match. - Do not use wildcards. + - description: The ID of the account to retrieve. in: path - name: device-id + name: account_id + required: true + type: string + - description: The ID of the application to update. + in: path + name: application_id required: true type: string + - description: New applicationattributes to store. + in: body + name: body + required: true + schema: + $ref: '#/definitions/Application' produces: - application/json responses: - 200: - description: Successful response with an array of resources. + '200': + description: Successful operation. schema: - items: - $ref: '#/definitions/Resource' - type: array - 404: - description: Endpoint not found. - summary: List the resources on an endpoint. + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data, for example, invalid display name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update application details. tags: - - Endpoints - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/endpoints/{device-id}/{resourcePath}: - delete: - description: 'A request to delete a resource path must be handled by both Device - Management Client and Device Management - - Connect. - + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}/access-keys: + get: + description: 'Retrieve an array of access keys associated with the application. - All resource APIs are asynchronous. These APIs respond only if the device - is on and connected to Device Management Connect, and there is an active notification - channel. + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/{resourcePath} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteResourcePath + operationId: getAllAccountApplicationAccessKeys parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account to retrieve. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + - description: The ID of the application. in: path - name: resourcePath + name: application_id required: true type: string - - description: 'If you make a request with `noResp=true`, Device Management - Connect makes a CoAP non-confirmable request to the device. Such requests - are not guaranteed to arrive at the device, and do not return an async-response-id. - - - If calls with this parameter enabled succeed, they return with the status - code `204 No Content`. If the underlying protocol does not support non-confirmable - requests, or if the endpoint is registered in queue mode, the response is - status code `409 Conflict`.' + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 in: query - name: noResp + name: limit required: false - type: boolean + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Status filter. + in: query + name: status__eq + required: false + type: string + produces: + - application/json responses: - 202: - description: Accepted. Returns an asynchronous response ID. + '200': + description: Successful operation. schema: - $ref: '#/definitions/AsyncID' - 400: - description: Bad request. - 404: - description: "Requested endpoint\u2019s resource is not found." - 409: - description: Conflict. If `noResp=true`, the non-confirmable request is - not supported by the used protocol. - 410: - description: Gone. Endpoint not found. - 429: - description: 'Cannot accept the request at the moment: the queue is full.' - 502: - description: TCP or TLS connection to endpoint cannot be established. - summary: Delete a resource path. + $ref: '#/definitions/AccessKeyList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all access keys associated with the application. tags: - - Resources - x-origin: /home/circleci/project/device-server/public/swagger.yaml - get: - description: 'Requests the resource value either from the device or cache. If - the value is not in the cache, the request goes all the - - way to the device. When the response is available, an `AsyncIDResponse` JSON - object is received in the notification channel. - - The resource values can be also in cache based on `max_age` defined by the - device side. The value found from the cache is returned + - Tenant accounts - applications + x-filter: + status: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + post: + consumes: + - application/json + description: 'Create a new access key for the application. - immediately in the response. + Note: This endpoint is restricted to administrators. - The preferred way to get resource values is to use the **subscribe** and **callback** - methods. + **Example:** + ``` - All resource APIs are asynchronous. These APIs only respond if the device - is on and connected to Device Management. + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys + -d ''{"name": "MyKey1"}'' \ + -H ''Authorization: Bearer '' \ - See also how [resource caching](../connecting/device-guidelines.html#resource-cache) - works. + -H ''content-type: application/json'' + ```' + operationId: createAccountApplicationAccessKey + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The ID of the application. + in: path + name: application_id + required: true + type: string + - description: The details of the access key to create. + in: body + name: body + required: true + schema: + $ref: '#/definitions/AccessKey' + produces: + - application/json + responses: + '201': + description: New entity created. + schema: + $ref: '#/definitions/AccessKey' + '400': + description: Error in input data, for example, missing display name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new application access key. + tags: + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id}: + delete: + description: 'Delete the access key associated with the application. - Please refer to [Lightweight Machine to Machine Technical specification](http://www.openmobilealliance.org/release/LightweightM2M/V1_0-20170208-A/OMA-TS-LightweightM2M-V1_0-20170208-A.pdf) - for more inforamtion. + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/{resourcePath} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getResourceValue + operationId: deleteAccountApplicationAccessKey parameters: - - description: Unique Device Management device ID for the endpoint. The ID must - be an exact match. Do not use wildcards. + - description: The ID of the account to retrieve. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + - description: The ID of the application. in: path - name: resourcePath + name: application_id required: true type: string - - description: 'If true, the response comes only from the cache. Default: false. - Device Management Connect caches the received resource values for the time - of [max_age](../connecting/working-with-the-resources.html) defined in the - client side.' - in: query - name: cacheOnly - required: false - type: boolean - - description: 'If a request is made with `noResp=true`, Device Management Connect - makes a CoAP non-confirmable request to the device. Such requests are not - guaranteed to arrive on the device, and no `async-response-id` returns. - - - Successful calls return with the status code `204 No Content`. If the underlying - protocol does not support non-confirmable requests, or if the endpoint is - registered in queue mode, the response is status code `409 Conflict`.' - in: query - name: noResp - required: false - type: boolean + - description: The ID of the access key to delete. + in: path + name: access_key_id + required: true + type: string + produces: + - application/json responses: - 200: - description: Resource value found in cache. Returns the string value of - the resource. - 202: - description: Accepted. Returns an asynchronous response ID. + '204': + description: Deleted successfully. + '401': + description: Authentication failure. schema: - $ref: '#/definitions/AsyncID' - 205: - description: No cache available for resource. - 400: - description: Bad request. - 404: - description: "Requested endpoint\u2019s resource is not found." - 409: - description: Conflict. If `noResp=true`, the non-confirmable request is - not supported by the used protocol. - 410: - description: Gone. Endpoint not found. - 429: - description: 'Cannot accept the request at the moment: the queue is full.' - 502: - description: TCP or TLS connection to endpoint cannot be established. - summary: Read from a resource. + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account, application or access key with the specified ID + does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete access key associated with the application. tags: - - Resources - x-origin: /home/circleci/project/device-server/public/swagger.yaml - post: - consumes: - - text/plain - - application/xml - - application/octet-stream - - application/exi - - application/json - - application/link-format - - application/senml+json - - application/nanoservice-tlv - - application/vnd.oma.lwm2m+text - - application/vnd.oma.lwm2m+opaq - - application/vnd.oma.lwm2m+tlv - - application/vnd.oma.lwm2m+json - description: '[Execute a function](../connecting/handle-resource-webapp.html#the-execute-operation) - on an existing resource and create a new Object instance on the device. The - resource path does not have to exist; you can set it with the call. The maximum - length of the resource path is 255 characters. - - - All resource APIs are asynchronous. These APIs respond only if the device - is on and connected to Device Management Connect, and there is an active notification - channel. - + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + description: 'Retrieve details of an access key associated with the application. - Supported content types depend on the device and its resource. Device Management - translates HTTP to the equivalent CoAP content type. + Note: This endpoint is restricted to administrators. **Example:** - - This example resets the min and max values of the [temperature sensor](http://www.openmobilealliance.org/tech/profiles/lwm2m/3303.xml) - instance 0 by executing Resource 5605 ''Reset Min and Max Measured Values''. - - ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/3303/0/5605 + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: executeOrCreateResource + operationId: getAccountApplicationAccessKey parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account to retrieve. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + - description: The ID of the application. in: path - name: resourcePath + name: application_id required: true type: string - - description: This value is not needed. Most of the time, resources do not - accept a function but they have their own functions predefined. You can - use this to trigger them. If a function is included, the body of this request - is passed as a char* to the function in Device Management Client. - in: body - name: resourceFunction - required: false - schema: - type: string - - description: 'If you make a request with `noResp=true`, Device Management - Connect makes a CoAP non-confirmable request to the device. Such requests - are not guaranteed to arrive in the device, and you do not get back an async-response-id. - - - If calls with this parameter enabled succeed, they return with the status - code `204 No Content`. If the underlying protocol does not support non-confirmable - requests, or if the endpoint is registered in queue mode, the response is - status code `409 Conflict`.' - in: query - name: noResp - required: false - type: boolean + - description: The ID of the access key to retrieve. + in: path + name: access_key_id + required: true + type: string + produces: + - application/json responses: - 202: - description: Accepted. Returns an asynchronous response ID. + '200': + description: Successful operation. schema: - $ref: '#/definitions/AsyncID' - 400: - description: Bad request. - 404: - description: "Requested endpoint\u2019s resource not found." - 409: - description: Conflict. If `noResp=true`, the non-confirmable request is - not supported by the used protocol. - 410: - description: Gone. Endpoint not found. - 429: - description: 'Cannot accept the request at the moment: the queue is full.' - 502: - description: TCP or TLS connection to endpoint cannot be established. - summary: Execute a function on a Resource or create new Object instance. + $ref: '#/definitions/AccessKey' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account, application or access key with the specified ID + does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get access key. tags: - - Resources - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: - consumes: - - text/plain - - application/xml - - application/octet-stream - - application/exi - - application/json - - application/link-format - - application/senml+json - - application/nanoservice-tlv - - application/vnd.oma.lwm2m+text - - application/vnd.oma.lwm2m+opaq - - application/vnd.oma.lwm2m+tlv - - application/vnd.oma.lwm2m+json - description: 'With this API, you can [write a new value to existing Resources](../connecting/handle-resource-webapp.html) - or use the **write** attribute to set [notification rules](../connecting/resource-change-webapp.html#notification-rules) - for the Resources. The notification rules only work on the device client side - and may not be supported by all clients. - - - This API can also be used to transfer files to the device. Device Management - Connect LwM2M server implements Option 1 from RFC7959. The maximum block size - is 1024 bytes. - - Note block size versus transferred file size in low-quality networks. The - customer application needs to know what type of file is transferred (for example, - TXT) - - and the customer can encrypt the payload. The maximum payload size is 1048576 - bytes. - - - All resource APIs are asynchronous. These APIs respond only if the device - is on and connected to Device Management Connect, and there is an active notification - channel. - + description: 'Update access key details. - Supported content types depend on the device and its resource. Device Management - translates HTTP to equivalent CoAP content type. + Note: This endpoint is restricted to administrators. **Example:** - - This example sets the alarm on a buzzer. The command writes the [Buzzer](http://www.openmobilealliance.org/tech/profiles/lwm2m/3338.xml) - instance 0, "On/Off" boolean resource to ''1''. - - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v2/endpoints/{device-id}/3338/0/5850 + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} \ - -H "content-type: text/plain" \ + -H ''Authorization: Bearer '' \ - -H ''Authorization: Bearer '' \ + -H ''content-type: application/json'' \ - -d ''1'' + -d ''{"name": "TestAccessKey"}'' ```' - operationId: updateResourceValue + operationId: updateAccountApplicationAccessKey parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account to retrieve. in: path - name: device-id + name: account_id required: true type: string - - description: Resource URL. + - description: The ID of the application. in: path - name: resourcePath + name: application_id required: true type: string - - description: The value to set to the resource. + - description: The ID of the access key to update. + in: path + name: access_key_id + required: true + type: string + - description: New access key attributes to store. in: body - name: resourceValue + name: body required: true schema: - type: string - - description: 'If you make a request with `noResp=true`, Device Management - Connect makes a CoAP non-confirmable request to the device. Such requests - are not guaranteed to arrive to the device, and do not return an `async_response_id`. - - - If a call with this parameter enabled succeeds, it return status code `204 - No Content`. If the underlying protocol does not support non-confirmable - requests, or if the endpoint is registered in queue mode, the response is - status code `409 Conflict`.' - in: query - name: noResp - required: false - type: boolean + $ref: '#/definitions/AccessKey' + produces: + - application/json responses: - 202: - description: Accepted. Returns an asynchronous response ID. + '200': + description: Successful operation. schema: - $ref: '#/definitions/AsyncID' - 400: - description: Bad request. - 409: - description: '''Conflict. If `noResp=true`, the non-confirmable request - is not supported by the used protocol.''' - 410: - description: Gone. Endpoint not found. - 429: - description: 'Cannot accept the request at the moment: the queue is full.' - 502: - description: TCP or TLS connection to endpoint cannot be established. - summary: Write to a Resource or use write-attributes (notification rules) for - a Resource. + $ref: '#/definitions/AccessKey' + '400': + description: Error in input data, for example, invalid display name. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account, application or access key with the specified ID + does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update access key details. tags: - - Resources - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/notification/callback: - delete: - description: 'Deletes the callback URL. + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}/groups: + get: + description: 'Retrieve an array of policy groups associated with an application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/callback + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deregisterWebhook + operationId: getGroupsOfAccountApplication + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The ID of the application. + in: path + name: application_id + required: true + type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + produces: + - application/json responses: - 204: &id018 - description: Successfully deleted. - 401: &id016 - description: Unauthorized. - 403: &id017 - description: Forbidden. The authorization token used is not an API key. - 404: - description: Callback URL does not exist. - summary: Delete callback URL. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummaryList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with the given ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get policy groups of an application. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - get: - description: 'Shows the current callback URL if it exists. + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}/groups/add: + post: + consumes: + - application/json + description: 'Add application to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/callback \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups/add + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: getWebhook + operationId: addAccountApplicationToGroups + parameters: + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The ID of the application to add to the group. + in: path + name: application_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' produces: - application/json responses: - 200: - description: URL found. + '204': + description: Successful operation. + '400': + description: Error in input data. schema: - $ref: '#/definitions/Webhook' - 401: *id016 - 403: *id017 - 404: - description: The callback URL does not exist. - summary: Check callback URL. + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account, a group or application with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The application is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add application to a list of groups. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - put: + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/applications/{application_id}/groups/remove: + post: consumes: - application/json - description: "Register a URL to which the server delivers notifications of changes\ - \ to the subscribed resource. To push notifications, you must first place\ - \ subscriptions. The maximum length of the URL, header keys, and values, all\ - \ combined, is 400 characters. \n\nNotifications are delivered as PUT requests\ - \ to the HTTP server, which the client defines with a subscription server\ - \ message. The given URL must be accessible, and respond to the PUT request\ - \ with a response code of 200 or 204. \n\nDevice Management Connect tests\ - \ the callback URL with an empty JSON payload `{}` when the URL is registered.\ - \ Callback implementation does not support URL redirection. For more information\ - \ on notification messages, see [NotificationMessage](#NotificationMessage).\n\ - \n**Optional headers in a callback message:**\n\nYou can set optional headers\ - \ to a callback in a **Webhook** object. Device Management Connect includes\ - \ the header and key pairs in the notification messages send them to callback\ - \ URL. The callback URLs and headers are API key-specific.\n\nOne possible\ - \ use for additional headers is checking the origin of a PUT request, as well\ - \ as distinguishing the application (API key) to which the notification belongs.\n\ - \n**Note**: Only one callback URL per API key can be active. If you register\ - \ a new URL while another one is active, it replaces the active one. There\ - \ can be only one notification channel at a time. If another type of channel\ - \ is already present, you need to delete it before setting the callback URL.\n\ - \n**Expiration of a callback URL:**\n\nA callback can expire when Device Management\ - \ cannot deliver a notification due to a connection timeout or an error response\ - \ (4xx or 5xx). After each delivery failure, Device Management sets an exponential\ - \ back off time and makes a retry attempt after that. The first retry delay\ - \ is 1 second, then 2s, 4s, 8s, up to maximum delay of two minutes. The callback\ - \ URL is removed if all retries fail within 24 hours. More about [notification\ - \ sending logic](../integrate-web-app/event-notification.html#notification-sending-logic).\n\ - \n**Supported callback URL protocols:**\n\nCurrently, only HTTP and HTTPS\ - \ protocols are supported.\n\n**HTTPS callback URLs:**\n\nWhen delivering\ - \ a notification to an HTTPS based callback URL, Device Management Connect\ - \ presents a valid client certificate to identify itself. The certificate\ - \ is signed by a trusted certificate authorithy (GlobalSign) with a Common\ - \ Name (CN) set to notifications.mbedcloud.com.\n\n**Example:**\n\nThis example\ - \ command shows how to set your callback URL and API key. It also sets an\ - \ optional header authorization. When Device Management Connect calls your\ - \ callback URL, the call contains the authorization header with the defined\ - \ value.\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v2/notification/callback\ - \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ - \ \\\n-d '{\n\"url\": \"{callback-url}\",\n\"headers\": {\"authorization\"\ - \ : \"f4b93d6e-4652-4874-82e4-41a3ced0cd56\"}\n}'\n```" - operationId: registerWebhook + description: 'Remove application from groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: removeAccountApplicationFromGroups parameters: - - description: A JSON object that contains the optional headers and URL where - notifications are sent. + - description: The ID of the account to retrieve. + in: path + name: account_id + required: true + type: string + - description: The ID of the application to remove from the group. + in: path + name: application_id + required: true + type: string + - description: A list of IDs of the groups to update. in: body - name: webhook + name: body required: true schema: - $ref: '#/definitions/Webhook' - responses: - 204: - description: Successfully subscribed. - 400: - description: Given URL is not accessible, or other type of channel already - exists. - 401: *id016 - 403: *id017 - 415: - description: Unsupported Media Type. - summary: Register a callback URL. - tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/notification/channel: - get: - description: "Get channel delivery mechanism.\n\n**Example:**\n\n curl -X\ - \ GET https://api.us-east-1.mbedcloud.com/v2/notification/channel \\\n \ - \ -H 'Authorization: Bearer ' \\\n" - operationId: getChannelMetadata + $ref: '#/definitions/GroupIdList' + produces: + - application/json responses: - 200: - description: Success. + '204': + description: Successful operation. + '400': + description: Error in input data, for example, invalid group ID. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. schema: - $ref: '#/definitions/ChannelMetadata' - 404: - description: Channel was not found. - summary: Get channel metadata. + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or application with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove application from groups. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/notification/pull: + - Tenant accounts - applications + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-colors: delete: - deprecated: true - description: 'Delete a notification Long Poll channel. This is required to change - the channel from Long Poll to another type. Do not make a GET `/v2/notification/pull` - call for two minutes after deleting the channel, because it can implicitly - recreate the pull channel. You can also have some random responses with payload - or 410 GONE with "CHANNEL_DELETED" as a payload or 200/204 until the old channel - is purged. - - - **Example:** + description: 'Delete account branding colors for all themes. - ``` + Note: This endpoint is restricted to administrators. - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/pull \ - -H ''Authorization: Bearer '' + **Example usage:** - ```' - operationId: deleteLongPollChannel + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + produces: + - application/json responses: - 200: - description: Success. The body can contain "REMOVED" if it was deleted with - this call or "ALREADY_DELETED" if it was deleted before and not purged - yet. - 401: *id016 - summary: Delete notification Long Poll channel. + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account or branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete all colors. tags: - - Notifications - x-deprecation: - comment: Long polling is deprecated and should be used for development purposes - only. - end_of_life_at: '2019-11-01T00:00:00+00:00' - issued_at: '2017-02-10T15:23:00+00:00' - links: - - cloud.mbed.com/integrate-web-app/event-notification.html - x-origin: /home/circleci/project/device-server/public/swagger.yaml - get: - deprecated: true - description: 'In this case, notifications are delivered through HTTP long poll - requests. The HTTP request is kept open until one or more event notifications - are delivered to the client, or the request times out (response code 204). - In both cases, the client should open a new polling connection after the previous - one closes. Only a single long polling connection per API key can be ongoing - at any given time. We recommend using a persistent connection (Connection - keep-alive header in the request) to avoid excess TLS handshakes. - + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-colors/dark: + delete: + description: 'Delete account dark theme branding colors. - The pull channel is implicitly created by the first GET call to `/v2/notification/pull`. - It refreshes on each GET call. If the channel is not polled for a long time - (10 minutes), it expires and is deleted. This means that no notifications - will stay in the queue between polls. A channel can be also be deleted explicitly - with a DELETE call. + Note: This endpoint is restricted to administrators. - **Note:** If you cannot have a public-facing callback URL, for example, when - developing on your local machine, you can use long polling to check for new - messages. However, **long polling is deprecated** and will likely be replaced - in the future. It is meant only for experimentation, not commercial use. The - proper method to receive notifications is a **notification callback**. + **Example usage:** + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountDarkColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + produces: + - application/json + responses: + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account or branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete colors in the dark theme. + tags: + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + description: 'Retrieve dark theme branding colors for an account. - There can only be one notification channel per API key in Device Management - Connect. If a notification channel of other type already exists for the API - key, delete it before creating a long poll notification channel. + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/pull \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: longPollNotifications + operationId: getAccountDarkColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string produces: - application/json responses: - 200: - description: Success. + '200': + description: Successful operation. schema: - $ref: '#/definitions/NotificationMessage' - 204: - description: No new notifications. - 400: - description: Other type of channel already exists. - 401: *id016 - 409: - description: Conflict. Long poll request exists already. - 410: - description: Pull channel was deleted and waiting to be purged. This code - is a result of incorrect client behavior (delete channel and then pull), - which can prevent the creation of a callback channel after the pull channel - is deleted. The channel can be (randomly) recreated by this call when - deleted and not purged. This client behaviour can set the channel in an - undefined state for some time. The channel may respond with 410 GONE or - 200/204 codes randomly for some time. Finally, the channel enters a valid - "channel exists" state. - summary: Get notifications using Long Poll + $ref: '#/definitions/BrandingColorList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get dark theme branding colors. tags: - - Notifications - x-deprecation: - comment: Long polling is deprecated and should be used for development purposes - only. - end_of_life_at: '2019-11-01T00:00:00+00:00' - issued_at: '2017-02-10T15:23:00+00:00' - links: - - cloud.mbed.com/integrate-web-app/event-notification.html - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/notification/websocket: + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: "Update an array of dark theme branding colors.\nNote: This\ + \ endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X\ + \ PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ + \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"#f3f93e\" }]'\n```" + operationId: bulkSetAccountDarkColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: List of branding colors. + in: body + name: body + required: true + schema: + items: + $ref: '#/definitions/BrandingColorUpdate' + type: array + produces: + - application/json + responses: + '204': + description: Colors have been set successfully. + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates an array of dark theme branding colors. + tags: + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-colors/dark/{reference}: delete: - description: '(PREVIEW) Delete a notification websocket channel bound to the - API key. This is required to change the channel from websocket to another - type. + description: 'Resets the branding color to its dark theme default. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/notification/websocket + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteWebsocket + operationId: resetAccountDarkColor + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: The name of the branding color. + enum: *id001 + in: path + name: reference + required: true + type: string + produces: + - application/json responses: - 204: *id018 - 401: *id016 - 403: *id017 - 404: - description: Websocket channel doesn't exist. - summary: (PREVIEW) Delete websocket channel. + '204': + description: Deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Reset branding color to default. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: '(PREVIEW) Returns 200 with websocket connection status, if websocket - channel exists. + description: 'Retrieve the requested dark theme branding color. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/websocket + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getWebsocket + operationId: getAccountDarkColor + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: The name of the branding color. + enum: *id001 + in: path + name: reference + required: true + type: string produces: - application/json responses: - 200: - description: Websocket found. + '200': + description: Successful operation. schema: - $ref: '#/definitions/WebsocketChannel' - 401: *id016 - 403: *id017 - 404: - description: No channel has been registered. - summary: (PREVIEW) Get websocket channel information. + $ref: '#/definitions/BrandingColor' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get dark theme branding color. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: consumes: - application/json - description: '(PREVIEW) Register (or update) a channel using websocket connection - to deliver notifications. The websocket channel should be opened by client - using `/v2/notification/websocket-connect` endpoint. To get notifications - pushed, you must place subscriptions. For more information on notification - messages, see [NotificationMessage](#NotificationMessage). - - - A websocket channel can have only one active websocket connection at a time. - If a websocket connection for a channel exists and a new connection to the - same channel is made, the connection is accepted and the older connection - is closed. - - - **Expiration of a websocket:** - - - A websocket channel is expired if the channel does not have an opened websocket - connection for a 24-hour period. Channel expiration means the channel is deleted - and any undelivered notifications stored in its internal queue is removed. - As long as the channel has an opened websocket connection or time between - successive websocket connections is less than 24 hours, - - the channel is considered active, notifications are stored in its internal - queue and delivered when a websocket connection is active. A channel can be - also deleted explicitly with a DELETE call. - + description: 'Update a dark theme branding color. - More about [notification sending logic](../integrate-web-app/event-notification.html#notification-sending-logic). + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v2/notification/websocket + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "color": "#f3f93e" }'' ```' - operationId: registerWebsocket - responses: - 200: - description: Channel successfully updated. In the current v2 implementation - this operation has no effect, and any subsequent PUT call from a client - previously registered to a channel results in a 200 OK response. - schema: - $ref: '#/definitions/WebsocketChannel' - 201: - description: Channel succesfully registered. - schema: - $ref: '#/definitions/WebsocketChannel' - 400: - description: Other type of channel already exists. - 401: *id016 - 403: *id017 - summary: (PREVIEW) Register a websocket channel. - tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/notification/websocket-connect: - get: - description: "\n(PREVIEW) A websocket channel can have only one active connection\ - \ at a time. If a websocket connection for a channel exists and a new connection\ - \ to the same channel is made, the connection is accepted and the older connection\ - \ is closed.\n\nOnce the socket has been opened, it may be closed with one\ - \ of the following status codes.\n\n\n \n \n \n\ - \ \n \n \n \n \n\ - \ \n \n\ - \ \n \n \n \n \n \n\ - \ \n \n \n \n \n\ - \ \n \n \n
CodeDescription
1000Socket closed by the client.
1001Going away. Set\ - \ when another socket opens on the used channel, the channel is deleted with\ - \ a REST call, or the server is shutting down.
1008Policy violation. Set when the API\ - \ key is missing or invalid.
1011Unexpected condition. Socket is closed with this status at an attempt\ - \ to open a socket to a nonexistent channel (without a prior PUT request).\ - \ This code is also used to indicate closing socket for any other unexpected\ - \ condition in the server.
\n\n\n**Example:**\n\ - ```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v2/notification/websocket-connect\ - \ \\\n-H \"Authorization:Bearer {apikey}\" \\\n-H \"Connection:upgrade\" \\\ - \n-H \"Upgrade:websocket\" \\\n-H \"Sec-WebSocket-Version: 13\" \\\n-H \"\ - Sec-WebSocket-Key: {base64nonce}\" \\\n-N -I\n```" - operationId: connectWebsocket + operationId: setAccountDarkColor parameters: - - default: Upgrade - in: header - name: Connection - required: true - type: string - - default: websocket - in: header - name: Upgrade + - description: The ID of the account. + in: path + name: account_id required: true type: string - - description: 'API key or user token must be present in the `Sec-WebSocket-Protocol` - header **if Authorization header cannot be provided**: `Sec-WebSocket-Protocol:"wss,pelion_ak_{api_key}"`. - - Refer to the notification service documentation for examples.' - in: header - name: Sec-WebSocket-Protocol - required: false - type: string - - description: Originating host of the request. - in: header - name: Origin + - description: The name of the branding color. + enum: *id001 + in: path + name: reference required: true type: string - - default: 13 - description: WebSocket version. Must be 13. - in: header - name: Sec-WebSocket-Version - required: true - type: integer - - description: The value of this header field must be a nonce consisting of - a randomly selected 16-byte value that has been base64-encoded (see Section - 4 of [RFC4648]). The nonce must be selected randomly for each connection. - in: header - name: Sec-WebSocket-Key + - description: The branding color. + in: body + name: body required: true - type: string + schema: + $ref: '#/definitions/BrandingColor' + produces: + - application/json responses: - 101: - description: Switching protocols. - 400: - description: Required header(s) missing. - 401: *id016 - 426: - description: Upgrade required. Connect and/or Upgrade headers missing. - summary: (PREVIEW) Open the websocket. + '200': + description: Color has been set successfully. + schema: + $ref: '#/definitions/BrandingColor' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates a dark theme branding color. tags: - - Notifications - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/subscriptions: + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-colors/light: delete: - description: 'Removes pre-subscriptions. - - - **Example:** + description: 'Delete account light theme branding colors. - ``` + Note: This endpoint is restricted to administrators. - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions \ - -H ''Authorization: Bearer '' + **Example usage:** - ```' - operationId: deletePreSubscriptions + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountLightColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + produces: + - application/json responses: - 204: - description: Successfully removed subscriptions. - 401: - description: Unauthorized. - 403: - description: 'Forbidden: the authorization token used is not an API key.' - summary: Remove pre-subscriptions. + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account or branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete colors in the light theme. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve pre-subscription data. The server returns a JSON structure. - If there are no pre-subscribed resources, it returns an empty array. + description: 'Retrieve light theme branding colors for an account. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/subscriptions \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getPreSubscriptions + operationId: getAccountLightColors + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string produces: - application/json responses: - 200: - description: OK. + '200': + description: Successful operation. schema: - $ref: '#/definitions/PresubscriptionArray' - 401: - description: Unauthorized. - 403: - description: 'Forbidden: the authorization token used is not an API key.' - summary: Get pre-subscriptions. + $ref: '#/definitions/BrandingColorList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get light theme branding colors. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: consumes: - application/json - description: "Pre-subscription is a set of rules and patterns established by\ - \ the application. When an endpoint registers and its ID, type, and registered\ - \ resources match the pre-subscription data, Device Management Connect automatically\ - \ sends subscription requests to the device. The pattern may include the endpoint\ - \ ID (optionally having an `*` character at the end), endpoint type, a list\ - \ of resources, or expressions with an `*` character at the end. Subscriptions\ - \ based on pre-subscriptions are done when device registers or does register\ - \ update. To remove the pre-subscription data, put an empty array as a rule.\n\ - \n**Notification rules**\n\nA web application can place dynamic observation\ - \ rules for individual Object Instances and Resources to define when the device\ - \ sends observations. More information in [Notification rules](../connecting/resource-change-webapp.html).\n\ - \n**Limits**:\n\n- The maximum length of the endpoint name and endpoint type\ - \ is 64 characters.\n- The maximum length of the resource path is 128 characters.\n\ - - You can listen to 256 separate resource paths.\n- The maximum number of\ - \ pre-subscription entries is 1024.\n\n**Example request:**\n```\ncurl -X\ - \ PUT https://api.us-east-1.mbedcloud.com/v2/subscriptions \\\n-H 'Authorization:\ - \ Bearer ' \\\n-H 'content-type: application/json' \\\n-d '[\n \ - \ {\n \"endpoint-name\": \"node-001\",\n \"resource-path\"\ - : [\"/dev\"]\n },\n {\n \"endpoint-type\": \"Light\",\n\ - \ \"resource-path\": [\"/sen/*\"]\n },\n {\n \"\ - endpoint-name\": \"node*\"\n },\n {\n \"endpoint-type\"\ - : \"Sensor\"\n },\n {\n \"resource-path\": [\"/dev/temp\"\ - ,\"/dev/hum\"]\n }\n ]'\n```\n\n- Subscribe to `/dev` resource of\ - \ endpoint named `node-001`.\n- Subscribe to `Light` type of endpoints and\ - \ their resources prefixed with `/sen/`.\n- Subscribe to all observable resources\ - \ of endpoint names prefixed with `node`.\n- Subscribe to all observable resources\ - \ of `Sensor` type endpoints.\n- Subscribe to `/dev/temp` and `/dev/hum` resources\ - \ of all endpoints.\n\n**Note**: For efficiency, you should use resource path\ - \ patterns in the pre-subscription data. This prevents notification flow from\ - \ unwanted resources." - operationId: updatePreSubscriptions + description: "Update an array of light theme branding colors.\nNote:\ + \ This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl\ + \ -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ + \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"purple\" }]'\n```" + operationId: bulkSetAccountLightColors parameters: - - description: Array of pre-subscriptions. + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: List of branding colors. in: body - name: presubsription + name: body required: true schema: - $ref: '#/definitions/PresubscriptionArray' + items: + $ref: '#/definitions/BrandingColorUpdate' + type: array produces: - - text/plain + - application/json responses: - 204: - description: Successfully created. - 400: - description: Bad request, malformed content. - 401: - description: Unauthorized. - 403: - description: 'Forbidden: the authorization token used is not an API key.' - summary: Set pre-subscriptions + '204': + description: Colors have been set successfully. + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates an array of light theme branding colors. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/subscriptions/{device-id}: + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-colors/light/{reference}: delete: - description: 'Deletes all resource subscriptions in a single endpoint. + description: 'Resets the branding color to its light theme default. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteEndpointSubscriptions + operationId: resetAccountLightColor parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account. in: path - name: device-id + name: account_id + required: true + type: string + - description: The name of the branding color. + enum: *id001 + in: path + name: reference required: true type: string + produces: + - application/json responses: - 204: - description: Successfully removed. - summary: Delete subscriptions from an endpoint. + '204': + description: Deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Reset branding color to default. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Lists all subscribed resources from a single endpoint. + description: 'Retrieve the requested light theme branding color. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id} - \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getEndpointSubscriptions + operationId: getAccountLightColor parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account. in: path - name: device-id + name: account_id + required: true + type: string + - description: The name of the branding color. + enum: *id001 + in: path + name: reference required: true type: string produces: - - text/uri-list + - application/json responses: - 200: - description: List of subscribed resources. + '200': + description: Successful operation. schema: - description: A list of resource URIs, one per line. - example: /sen/light - type: string - 404: - description: Endpoint not found, or there are no subscriptions for that - endpoint. - summary: Read endpoints subscriptions + $ref: '#/definitions/BrandingColor' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get light theme branding color. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v2/subscriptions/{device-id}/{resourcePath}: - delete: - description: 'Remove an existing subscription from a resource path. + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update a light theme branding color. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id}/{resourcePath} + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light/primary \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "color": "purple" }'' ```' - operationId: deleteResourceSubscription + operationId: setAccountLightColor parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + - description: The name of the branding color. + enum: *id001 in: path - name: resourcePath + name: reference required: true type: string + - description: The branding color. + in: body + name: body + required: true + schema: + $ref: '#/definitions/BrandingColor' + produces: + - application/json responses: - 204: - description: Successfully removed subscription. - 404: - description: Endpoint or resource not found. - summary: Remove a subscription. + '200': + description: Color set successfully. + schema: + $ref: '#/definitions/BrandingColor' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates light theme branding color. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml - get: - operationId: checkResourceSubscription + - Tenant user interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images: + delete: + description: 'Delete account branding images for all themes. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountImages parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + produces: + - application/json + responses: + '204': + description: Images have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account or branding images not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete all images. + tags: + - Tenant user interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images/dark: + delete: + description: 'Delete account dark theme branding images. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountDarkImages + parameters: + - description: The ID of the account. in: path - name: resourcePath + name: account_id required: true type: string + produces: + - application/json responses: - 200: - description: Resource is subscribed. - 404: - description: Resource is not subscribed. - summary: Read subscription status + '204': + description: Images have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account or branding images not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete images in the dark theme. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml - put: - description: 'The Device Management Connect eventing model consists of observable - Resources. - - - This means that endpoints can deliver updated resource content, periodically - or with a more sophisticated solution-dependent logic. The OMA LwM2M resource - model also supports including objects, object instances, resources, and resource - instances. + - Tenant user interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + description: 'Retrieve the metadata of all dark theme branding images. + Note: This endpoint is restricted to administrators. - Applications can subscribe to objects, object instances or individual resources - to make the device provide value change notifications to Device Management - Connect service. An application needs to call a `/notification/callback` method - to get Device Management Connect to push notifications of the resource changes. + **Example:** - **Notification rules** + ``` + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark + \ - A web application can place dynamic observation rules for individual Object - Instances and Resources to define when the device sends observations. More - information in [Notification rules](../connecting/resource-change-webapp.html). + -H ''Authorization: Bearer '' + ```' + operationId: getAllAccountDarkImageData + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/BrandingImageList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get metadata of all dark theme images. + tags: + - Tenant user interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images/dark/{reference}: + get: + description: 'Retrieve metadata of one account dark theme branding image. - All manual subscriptions are removed during a full device registration, at - which point applications must re-subscribe. To avoid this, you can use `/subscriptions` - to set a pre-subscription. + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v2/subscriptions/{device-id}/{resourcePath} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: addResourceSubscription + operationId: getAccountDarkImageData parameters: - - description: A unique Device Management device ID for the endpoint. The ID - must be an exact match. Do not use wildcards. + - description: The ID of the account. in: path - name: device-id + name: account_id required: true type: string - - description: The resource URL. + - description: Name of the branding images (icon or picture). + enum: *id026 in: path - name: resourcePath + name: reference required: true type: string produces: - application/json responses: - 200: - description: Successfully subscribed. - 202: - description: Accepted. Returns an asynchronous response ID used to reference - the future asynchronous response. + '200': + description: Successful operation. schema: - $ref: '#/definitions/AsyncID' - 400: - description: Bad request, malformed content. - 404: - description: Endpoint or its resource not found. - 429: - description: 'Cannot accept the request at the moment: the queue is full.' - 502: - description: 'Subscription failed: endpoint not connected.' - summary: Subscribe to a resource path. + $ref: '#/definitions/BrandingImage' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Unknown image reference, or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get metadata of a dark theme image. tags: - - Subscriptions - x-origin: /home/circleci/project/device-server/public/swagger.yaml - /v3/accounts: - get: - description: 'Returns an array of account objects, optionally filtered by status - and tier level. + - Tenant user interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images/dark/{reference}/clear: + post: + description: 'Revert an account branding image to dark theme default. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAllAccounts + operationId: clearAccountDarkImage parameters: - - description: An optional filter for account status, ENROLLING, ACTIVE, RESTRICTED, - or SUSPENDED. - in: query - name: status__eq - required: false - type: string - - description: An optional filter to retrieve accounts with a specified set - of statuses. - in: query - name: status__in - required: false - type: string - - description: An optional filter to exclude accounts with a specified set of - statuses. - in: query - name: status__nin - required: false - type: string - - description: An optional filter for tier level. Must be 0, 1, 2, 98, 99, or - omitted. - in: query - name: tier__eq - required: false - type: string - - description: An optional filter for parent account ID. - in: query - name: parent__eq - required: false - type: string - - description: An optional filter for account end market. - in: query - name: end_market__eq - required: false - type: string - - description: 'An optional filter for account country. Finds all matches where - the filter value is a case-insensitive substring of the result. Example: - country__like=LAND matches Ireland.' - in: query - name: country__like - required: false - type: string - - default: 1000 - description: The number of results to return (2-1000). Default 1000. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - limits, policies, sub_accounts.' - in: query - name: include - required: false - type: string - - description: 'Format information for the query response. Supported: format=breakdown.' - in: query - name: format - required: false + - description: The ID of the account. + in: path + name: account_id + required: true type: string - - description: Property name returned from account-specific properties. - in: query - name: properties - required: false + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference + required: true type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/AccountInfoList' + '204': + description: Image reverted successfully. '401': description: Authentication failure. schema: @@ -8816,79 +14224,132 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all accounts. + '404': + description: Unknown image reference, or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Revert an image to dark theme default. tags: - - Tenant accounts - accounts - x-filter: - country: - - like - end_market: - - eq - parent: - - eq - status: - - eq - - in - - nin - tier: - - eq + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images/dark/{reference}/upload: post: consumes: - - application/json - description: 'Create a new account. + - image/png + - image/jpeg + description: 'Upload a new account dark theme branding image in PNG or JPEG + format. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts \ - - -H ''Authorization: Bearer '' \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/upload + \ - -H ''content-type: application/json'' \ + -H ''Authorization: Bearer '' - -d ''{"display_name": "MyAccount1", "admin_name": "accountAdmin1", "email": - "example_admin@myaccount.info", "country": "United Kingdom", "end_market": - "Smart City", "address_line1": "110 Fulbourn Rd", "city": "Cambridge", "contact": - "J. Doe", "company": "Arm"}'' + -H ''content-type: image/png'' --data-binary ''@myimage.png'' ```' - operationId: createAccount + operationId: uploadAccountDarkImage parameters: - - description: Details of the account to create. + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference + required: true + type: string + - description: The image in PNG or JPEG format. in: body name: body required: true schema: - $ref: '#/definitions/AccountCreationReq' - - default: create - description: 'Action, either `create` or `enroll`. - -
    - -
  • `create` creates the account where its admin user has ACTIVE status - if `admin_password` was defined in the request, or RESET status if no `admin_password` - was defined. If the user already exists, its status is not modified.
  • + $ref: '#/definitions/Image' + produces: + - application/json + responses: + '201': + description: Image uploaded successfully. + headers: + Content-Location: + description: Location of the image metadata. + type: string + Location: + description: Location of the image binary. + type: string + schema: + $ref: '#/definitions/BrandingImage' + '400': + description: Error in input data format, for example, image is too large. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Unknown image reference, or account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Upload a dark theme image. + tags: + - Tenant user interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart: + post: + consumes: + - multipart/form-data + description: 'Upload a new account dark theme branding image as form data in + PNG or JPEG format. -
  • `enroll` creates the account where its admin user has ENROLLING status. - If the user already exists, its status is not modified. Email to finish - enrollment or notify the existing user about the new account is sent to - the `admin_email` defined in the request.
' - in: query - name: action - required: false + Note: This endpoint is restricted to administrators.' + operationId: uploadAccountDarkImageMultipart + parameters: + - description: The ID of the account. + in: path + name: account_id + required: true + type: string + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference + required: true type: string + - description: The image in PNG or JPEG format as multipart form data. + in: formData + name: image + required: true + type: file produces: - application/json responses: '201': - description: Successful operation. + description: Image uploaded successfully. + headers: + Content-Location: + description: Location of the image metadata. + type: string + Location: + description: Location of the image binary. + type: string schema: - $ref: '#/definitions/AccountInfo' + $ref: '#/definitions/BrandingImage' '400': - description: Error in input data, for example, invalid username. + description: Error in input data format, for example, image is too large. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -8899,45 +14360,37 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new account. + '404': + description: Unknown image reference. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Upload a dark theme image. tags: - - Tenant accounts - accounts + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/me: - get: - description: 'Retrieve detailed information about the account. - - - **Example:** + /v3/accounts/{account_id}/branding-images/light: + delete: + description: 'Delete account light theme branding images. - ``` + Note: This endpoint is restricted to administrators. - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/me?include=policies - \ - -H ''Authorization: Bearer '' + **Example usage:** - ```' - operationId: getMyAccountInfo + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light + -H ''Authorization: Bearer ''`' + operationId: deleteAllAccountLightImages parameters: - - description: 'Comma-separated additional data to return. Currently supported: - limits, policies, sub_accounts.' - in: query - name: include - required: false - type: string - - description: Property name to return from account-specific properties. - in: query - name: properties - required: false + - description: The ID of the account. + in: path + name: account_id + required: true type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/AccountInfo' + '204': + description: Images have been deleted successfully. '401': description: Authentication failure. schema: @@ -8946,48 +14399,44 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get account info. + '404': + description: Account or branding images not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete images in the light theme. tags: - - Account - profile + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - consumes: - - application/json - description: 'Update the account. + get: + description: 'Retrieve the metadata of all light theme branding images. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/me \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light + \ - -d ''{"phone_number": "12345678"}'' + -H ''Authorization: Bearer '' ```' - operationId: updateMyAccount + operationId: getAllAccountLightImageData parameters: - - description: Details of the account to update. - in: body - name: body + - description: The ID of the account. + in: path + name: account_id required: true - schema: - $ref: '#/definitions/AccountUpdateReq' + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/AccountInfo' - '400': - description: Error in input data format. - schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/BrandingImageList' '401': description: Authentication failure. schema: @@ -8996,33 +14445,43 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Updates attributes of the account. + '404': + description: Account not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get metadata of all light theme images. tags: - - Account - profile + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/me/notifications: + /v3/accounts/{account_id}/branding-images/light/{reference}: get: - description: Retrieve notifications for an account. - operationId: getNofificationEntries + description: 'Retrieve metadata for one account light theme branding image. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountLightImageData parameters: - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false + - description: The ID of the account. + in: path + name: account_id + required: true type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference + required: true type: string produces: - application/json @@ -9030,100 +14489,132 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/NotificationEntryList' - '400': - description: Error in input data, or missing or invalid parameters. - schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/BrandingImage' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Unknown image reference, or account not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get notification events for an account. + summary: Get metadata of a light theme image. tags: - - Account - email notification logs + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/me/notifications/{notification_id}: - get: - description: An endpoint for retrieving notification event details. - operationId: getNofificationEntry + /v3/accounts/{account_id}/branding-images/light/{reference}/clear: + post: + description: 'Revert an account branding image to light theme default. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ```curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/clear + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: clearAccountLightImage parameters: - - description: The ID of the notification entry to be retrieved. + - description: The ID of the account. in: path - name: notification_id + name: account_id + required: true + type: string + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference required: true type: string produces: - application/json responses: - '200': - description: successful operation - schema: - $ref: '#/definitions/NotificationEntry' - '400': - description: Error in input data, missing or invalid parameters. - schema: - $ref: '#/definitions/ErrorResponse' + '204': + description: Image reverted successfully. '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' '404': - description: No entry found for the given ID. + description: Unknown image reference, or account not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get notification event details. + summary: Revert an image to light theme default. tags: - - Account Admin + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}: - get: - description: 'Retrieve detailed information about an account. + /v3/accounts/{account_id}/branding-images/light/{reference}/upload: + post: + consumes: + - image/png + - image/jpeg + description: 'Upload a new account light theme branding image in PNG or JPEG + format. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/upload + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: image/png'' --data-binary ''@myimage.png'' ```' - operationId: getAccountInfo + operationId: uploadAccountLightImage parameters: - - description: The ID of the account to fetch. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: 'Comma-separated additional data to return. Currently supported: - limits, policies, sub_accounts.' - in: query - name: include - required: false - type: string - - description: Property name to return from account-specific properties. - in: query - name: properties - required: false + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference + required: true type: string + - description: The image in PNG or JPEG format. + in: body + name: body + required: true + schema: + $ref: '#/definitions/Image' produces: - application/json responses: - '200': - description: Successful operation. + '201': + description: Image uploaded successfully. + headers: + Content-Location: + description: Location of image metadata. + type: string + Location: + description: Location of the image binary. + type: string + schema: + $ref: '#/definitions/BrandingImage' + '400': + description: Error in input data format, for example, image is too large. schema: - $ref: '#/definitions/AccountInfo' + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -9133,55 +14624,55 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account with the given ID not found. + description: Unknown image reference, or account not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get account info. + summary: Upload a light theme image. tags: - - Tenant accounts - accounts + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: + /v3/accounts/{account_id}/branding-images/light/{reference}/upload-multipart: + post: consumes: - - application/json - description: 'Update an account. - - - **Example:** - - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"phone_number": "12345678"}'' + - multipart/form-data + description: 'Upload a new account branding image as form data in PNG or JPEG + format. - ```' - operationId: updateAccount + Note: This endpoint is restricted to administrators.' + operationId: uploadAccountLightImageMultipart parameters: - - description: The ID of the account to update. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Details of the account to update. - in: body - name: body + - description: Name of the branding images (icon or picture). + enum: *id026 + in: path + name: reference required: true - schema: - $ref: '#/definitions/AccountUpdateRootReq' + type: string + - description: The image in PNG or JPEG format as multipart form data. + in: formData + name: image + required: true + type: file produces: - application/json responses: - '200': - description: Successful operation. + '201': + description: Image uploaded successfully. + headers: + Content-Location: + description: Location of the image metadata. + type: string + Location: + description: Location of the image binary. + type: string schema: - $ref: '#/definitions/AccountInfo' + $ref: '#/definitions/BrandingImage' '400': - description: Error in input data format. + description: Error in input data format, for example, image is too large. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9193,31 +14684,23 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account with the given ID not found. + description: Unknown image reference. schema: $ref: '#/definitions/ErrorResponse' - summary: Update attributes of an existing account. + summary: Upload a light theme image. tags: - - Tenant accounts - accounts + - Tenant user interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/api-keys: + /v3/accounts/{account_id}/identity-providers: get: - description: 'Retrieve API keys in an array, optionally filtered by the owner. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys - \ - - -H ''Authorization: Bearer '' + consumes: + - application/json + description: 'Retrieve an array of identity providers. - ```' - operationId: getAllAccountApiKeys + Note: This endpoint is restricted to administrators.' + operationId: getAllAccountIdentityProviders parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true @@ -9229,14 +14712,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -9247,24 +14730,13 @@ paths: name: include required: false type: string - - description: API key filter. Do not include the private portion of the API - key (the last 32 characters). - in: query - name: key__eq - required: false - type: string - - description: Owner name filter. - in: query - name: owner__eq - required: false - type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoRespList' + $ref: '#/definitions/IdentityProviderList' '401': description: Authentication failure. schema: @@ -9274,61 +14746,56 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account with the given ID does not exist. + description: Account not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all API keys. + summary: Get all identity providers. tags: - - Tenant accounts - API keys - x-filter: - key: - - eq - owner: - - eq + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Create a new API key. There is no default value for the owner - ID, and it must be from the same account where the new API key is created. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"name": "MyKey1"}'' + description: 'Create a new identity provider. - ```' - operationId: createAccountApiKey + Note: This endpoint is restricted to administrators.' + operationId: createAccountIdentityProvider parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: Details of the API key to create. + - allowEmptyValue: true + description: 'Indicates that the OpenID Connect endpoints and keys should + be set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + in: query + name: discovery + type: boolean + - description: Details of the identity provider to create. in: body name: body required: true schema: - $ref: '#/definitions/ApiKeyInfoReq' + $ref: '#/definitions/IdentityProviderCreationReq' produces: - application/json responses: '201': description: New entity created. + headers: + Content-Location: + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string + Location: + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/IdentityProviderInfo' '400': - description: Error in input data, for example, missing display name. + description: Error in input data, for example, too long name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9340,45 +14807,133 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account with the given ID does not exist. + description: Account not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new API key. + summary: Create a new identity provider. tags: - - Tenant accounts - API keys + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/api-keys/{apikey_id}: + /v3/accounts/{account_id}/identity-providers/{identity_provider_id}: delete: - description: 'Delete an API key. - - - **Example:** - - ``` + description: 'Delete an identity provider by ID. - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} - \ + Note: This endpoint is restricted to administrators.' + operationId: deleteAccountIdentityProvider + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the identity provider to delete. + in: path + name: identity_provider_id + required: true + type: string + produces: + - application/json + responses: + '204': + description: Deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden, or identity provider is in use. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete an identity provider by ID. + tags: + - Tenant accounts - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + get: + description: 'Retrieve an identity provider. - -H ''Authorization: Bearer '' + Note: This endpoint is restricted to administrators.' + operationId: getAccountIdentityProvider + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the identity provider to retrieve. + in: path + name: identity_provider_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/IdentityProviderInfo' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get an identity provider. + tags: + - Tenant accounts - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update an existing identity provider. - ```' - operationId: deleteAccountApiKey + Note: This endpoint is restricted to administrators.' + operationId: updateAccountIdentityProvider parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the API key to delete. + - description: The ID of the identity provider to update. in: path - name: apikey_id + name: identity_provider_id + required: true + type: string + - allowEmptyValue: true + description: 'Indicates that the OpenID Connect endpoints and keys should + be set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + in: query + name: discovery + type: boolean + - description: Details of the identity provider to update. + in: body + name: body required: true - type: string + schema: + $ref: '#/definitions/IdentityProviderUpdateReq' produces: - application/json responses: - '204': - description: Deleted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/IdentityProviderInfo' + '400': + description: Error in input data, for example, missing name. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -9388,26 +14943,30 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete the API key. + summary: Update an existing identity provider. tags: - - Tenant accounts - API keys + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: "Retrieve API key details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}\ - \ \\\n -H 'Authorization: Bearer '\n```" - operationId: getAccountApiKey + /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/delete-sp-certificate: + post: + consumes: + - application/json + description: 'Delete a service provider certificate. + + Note: This endpoint is restricted to administrators.' + operationId: deleteAccountSpCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the API key to retrieve. + - description: The ID of the identity provider whose certificate should be deleted. in: path - name: apikey_id + name: identity_provider_id required: true type: string produces: @@ -9415,8 +14974,12 @@ paths: responses: '200': description: Successful operation. + headers: + Content-Location: + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/IdentityProviderInfo' '401': description: Authentication failure. schema: @@ -9426,58 +14989,52 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get API key details. + summary: Delete the service provider certificate. tags: - - Tenant accounts - API keys + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - description: 'Update API key details. - - - **Example:** - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"name": "TestApiKey25"}'' + /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/generate-sp-certificate: + post: + consumes: + - application/json + description: 'Generate a new service provider certificate. - ```' - operationId: updateAccountApiKey + Note: This endpoint is restricted to administrators.' + operationId: generateAccountSpCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the API key to update. + - description: The ID of the identity provider for which to generate a certificate. in: path - name: apikey_id + name: identity_provider_id required: true type: string - - description: New API key attributes to be stored. + - description: Details of the service provider certificate to be generated. in: body name: body required: true schema: - $ref: '#/definitions/ApiKeyUpdateReq' + $ref: '#/definitions/CertificateGenerationReq' produces: - application/json responses: '200': description: Successful operation. + headers: + Content-Location: + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/IdentityProviderInfo' '400': - description: Error in input data, for example, missing display name. + description: Error in input data, for example, invalid certificate validity + value. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9489,63 +15046,46 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account ID or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Update API key details. + summary: Generate a new service provider certificate. tags: - - Tenant accounts - API keys + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/api-keys/{apikey_id}/groups: - delete: + /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/refresh-jwks: + post: consumes: - application/json - description: 'Remove API key from groups. + description: 'Refresh an OIDC IdP''s signing keys. - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' - - ```' - operationId: removeAccountApiKeyFromGroups + Note: This endpoint is restricted to administrators.' + operationId: refreshAccountJwks parameters: - - description: Account ID. + - description: The ID of the account to be managed. in: path name: account_id required: true type: string - - description: The ID of the API key to remove from the group. + - description: The ID of the identity provider for which to refresh the signing + keys. in: path - name: apikey_id + name: identity_provider_id required: true type: string - - description: A list of IDs of the groups to update. - in: body - name: body - required: true - schema: - items: - type: string - type: array produces: - application/json responses: '200': description: Successful operation. + headers: + Content-Location: + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/IdentityProviderInfo' '400': - description: Error in input data. + description: Not an OIDC IdP or JWKS URI is unspecified. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9557,71 +15097,81 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove API key from groups. + summary: Refresh the OIDC signing keys. tags: - - Tenant accounts - API keys + - Tenant accounts - identity providers x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/limitations: get: - description: 'Retrieve groups associated with the API key. - - - **Example:** - - ``` + description: 'Retrieve an array of entitlement limitations. - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: getGroupsOfAccountApikey + Note: This endpoint is restricted to administrators.' + operationId: aggregatorGetAccountLimitations parameters: - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false + - description: The ID of the account. + in: path + name: account_id + required: true type: string - - description: 'Comma-separated additional data to return. Currently supported: - total_count.' + - description: Filter for finding account limitations by inheritance. True returns + also inherited limitations. False returns only non-inherited ones. in: query - name: include + name: inherited__eq required: false type: string - - description: Account ID. + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/AccountLimitationList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account with the given ID not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get entitlement limitations. + tags: + - Tenant accounts - entitlement limitations + x-filter: + inherited: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/accounts/{account_id}/limitations/{limitation_id}: + get: + description: 'Retrieve an entitlement limitation. + + Note: This endpoint is restricted to administrators.' + operationId: aggregatorGetAccountLimitation + parameters: + - description: The ID of the account. in: path name: account_id required: true type: string - - description: The ID of the API key. + - description: The ID of the limitation to be fetched. in: path - name: apikey_id + name: limitation_id required: true type: string produces: - application/json responses: '200': - description: Successful operation. + description: successful operation schema: - $ref: '#/definitions/GroupSummaryList' + $ref: '#/definitions/AccountLimitation' '401': description: Authentication failure. schema: @@ -9631,62 +15181,53 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. + description: Limitation or account with the given ID not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get groups associated with the API key. + summary: Get an entitlement limitation. tags: - - Tenant accounts - API keys + - Tenant accounts - entitlement limitations x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - post: - consumes: - - application/json - description: 'Add API key to groups. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + /v3/accounts/{account_id}/notifications: + get: + description: 'Retrieve an array of email notification logs. - ```' - operationId: addAccountApiKeyToGroups + Note: This endpoint is restricted to administrators.' + operationId: getAccountNofificationEntries parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the API key to add to the group. - in: path - name: apikey_id - required: true + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false type: string - - description: A list of IDs of groups to update. - in: body - name: body - required: true - schema: - items: - type: string - type: array produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/NotificationEntryList' '400': - description: Error in input data. + description: Error in input data, or missing or invalid parameters. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9694,63 +15235,43 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: The API key is a member of the group already. + description: An account with the given ID not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Add API key to a list of groups. + summary: Get email notifications. tags: - - Tenant accounts - API keys + - Tenant accounts - email notification logs x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/api-keys/{apikey_id}/reset-secret: - post: - description: 'Reset the secret key of the API key. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/reset-secret - \ - - -H ''Authorization: Bearer '' + /v3/accounts/{account_id}/notifications/{notification_id}: + get: + description: 'Retrieve an email notifications log entry. - ```' - operationId: resetAccountApiKeySecret + Note: This endpoint is restricted to administrators.' + operationId: getAccountNofificationEntry parameters: - - description: Account ID. + - description: The ID of the account for which this notification should be retrieved. in: path name: account_id required: true type: string - - description: The ID of the API key to reset. + - description: The ID of the notification entry to be retrieved. in: path - name: apikey_id + name: notification_id required: true type: string - - description: New API key attributes to be stored. - in: body - name: body - required: false - schema: - $ref: '#/definitions/ApiKeyUpdateReq' produces: - application/json responses: '200': - description: Successful operation. + description: successful operation schema: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/NotificationEntry' '400': - description: Error in input data format. + description: Error in input data, missing or invalid parameters. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9758,46 +15279,78 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or API key with the specified ID does not exist. + description: No entry found for the given ID. schema: $ref: '#/definitions/ErrorResponse' - summary: Reset the secret key. + summary: Get an email notification. tags: - - Tenant accounts - API keys + - Tenant accounts - email notification logs x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-colors/dark: + /v3/accounts/{account_id}/policy-groups: get: - description: 'Retrieve dark theme branding colors for an account. + description: 'Retrieve an array of policy groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountDarkColors + operationId: getAllAccountGroups parameters: - description: Account ID. in: path name: account_id required: true type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: Filter for group name. + in: query + name: name__eq + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingColorList' + $ref: '#/definitions/GroupSummaryList' '401': description: Authentication failure. schema: @@ -9807,42 +15360,60 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get dark theme branding colors. + summary: Get policy groups. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups + x-filter: + name: + - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: + post: consumes: - application/json - description: "Update an array of dark theme branding colors of a tenant account.\n\ - \n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark\ - \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ - \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"#f3f93e\" }]'\n```" - operationId: bulkSetAccountDarkColors + description: 'Create a new group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "MyGroup1"}'' + + ```' + operationId: createAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: List of branding colors. + - description: Details of the group to create. in: body name: body required: true schema: - items: - $ref: '#/definitions/BrandingColor' - type: array + $ref: '#/definitions/GroupCreationInfo' produces: - application/json responses: - '204': - description: Colors have been set successfully. + '201': + description: New entity created. + schema: + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format. + description: Error in input data, for example, invalid group name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -9854,40 +15425,44 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Updates an array of dark theme branding colors. + '409': + description: A group with that name already exists. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-colors/dark/{reference}: + /v3/accounts/{account_id}/policy-groups/{group_id}: delete: - description: 'Resets the branding color of a tenant account to its dark theme - default. + description: 'Delete a group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: resetAccountDarkColor + operationId: deleteAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to delete. in: path - name: reference + name: group_id required: true type: string produces: @@ -9900,42 +15475,43 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, or Administrators group cannot be removed. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Reset branding color to default. + summary: Delete a group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve the requested dark theme branding color. + description: 'Retrieve policy group details. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountDarkColor + operationId: getAccountGroupSummary parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to retrieve. in: path - name: reference + name: group_id required: true type: string produces: @@ -9944,7 +15520,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/GroupSummary' '401': description: Authentication failure. schema: @@ -9954,61 +15530,63 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get dark theme branding color. + summary: Get policy group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: + post: consumes: - application/json - description: 'Update a dark theme branding color of a tenant account. + description: 'Add users and API keys to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{ "color": "#f3f93e" }'' + -d ''{"users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' ```' - operationId: setAccountDarkColor + operationId: addSubjectsToAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to update. in: path - name: reference + name: group_id required: true type: string - - description: The branding color. + - description: A list of users and API keys to add to the group. in: body name: body required: true schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': - description: Color has been set successfully. + description: Successful operation. schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format. + description: Error in input data, for example, the user or API key does + not exist. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10020,87 +15598,66 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Updates a dark theme branding color. - tags: - - Tenant user interface configuration - colors - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-colors/light: - get: - description: 'Retrieve light theme branding colors for an account. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: getAccountLightColors - parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/BrandingColorList' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: Account not found. + '409': + description: The user of this API key is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Get light theme branding colors. + summary: Add members to a group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: consumes: - application/json - description: "Update an array of light theme branding colors of a tenant account.\n\ - \n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light\ - \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ - \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"purple\" }]'\n```" - operationId: bulkSetAccountLightColors + description: 'Update a group name. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/ + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestGroup2"}'' + + ```' + operationId: updateAccountGroupName parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: List of branding colors. + - description: The ID of the group to update. + in: path + name: group_id + required: true + type: string + - description: Details of the group to create. in: body name: body required: true schema: - items: - $ref: '#/definitions/BrandingColor' - type: array + $ref: '#/definitions/GroupUpdateInfo' produces: - application/json responses: - '204': - description: Colors have been set successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format. + description: Error in input data, for example, the group name is too long. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10112,47 +15669,67 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Updates an array of light theme branding colors. + summary: Update the group name. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-colors/light/{reference}: + /v3/accounts/{account_id}/policy-groups/{group_id}/api-keys: delete: - description: 'Resets the branding color of a tenant account to its light theme - default. + consumes: + - application/json + deprecated: true + description: 'Remove API keys from groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"apikeys": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' ```' - operationId: resetAccountLightColor + operationId: removeApiKeysFromAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to remove API keys from. in: path - name: reference + name: group_id required: true type: string + - description: A list of API keys to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '204': - description: Deleted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the array of API keys is + missing. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -10162,46 +15739,79 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Reset branding color to default. + summary: Remove API keys from a group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/remove + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve the requested light theme branding color. + deprecated: true + description: 'Retrieve an array of API keys associated with a policy group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountLightColor + operationId: getApiKeysOfAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to retrieve API keys for. in: path - name: reference + name: group_id required: true type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/ApiKeyInfoRespList' '401': description: Authentication failure. schema: @@ -10211,61 +15821,62 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get light theme branding color. + summary: Get API keys in a group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - consumes: - - application/json - description: 'Update a light theme branding color of a tenant account. + post: + deprecated: true + description: 'Add API keys to account groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light/primary + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys \ - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{ "color": "purple" }'' + -H ''Authorization: Bearer '' ```' - operationId: setAccountLightColor + operationId: addApiKeysToAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: The name of the branding color. - enum: *id019 + - description: The ID of the group to retrieve API keys for. in: path - name: reference + name: group_id required: true type: string - - description: The branding color. + - description: A list of API keys to add to the group. in: body name: body required: true schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': - description: Color set successfully. + description: Successful operation. schema: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format. + description: Successful operation. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10277,42 +15888,73 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Updates light theme branding color. + '409': + description: The API Key is a member of the group or account already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API keys to Account group. tags: - - Tenant user interface configuration - colors + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/dark: - get: - description: 'Retrieve the metadata of all dark theme branding images. + /v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/add: + post: + deprecated: true + description: 'Add API keys to account groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/add \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"apikeys": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' ```' - operationId: getAllAccountDarkImageData + operationId: addListedApiKeysToAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string + - description: The ID of the group to remove API keys from. + in: path + name: group_id + required: true + type: string + - description: A list of API keys to add to the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingImageList' + $ref: '#/definitions/GroupSummary' + '400': + description: Successful operation. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -10322,48 +15964,76 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get metadata of all dark theme images. + '409': + description: The API key is a member of the account group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API keys to account group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications/add + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/dark/{reference}: - get: - description: 'Retrieve metadata of one account dark theme branding image. + /v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/remove: + post: + consumes: + - application/json + deprecated: true + description: 'Remove API keys from groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys/remove \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"apikeys": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' ```' - operationId: getAccountDarkImageData + operationId: removeListedApiKeysFromAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to remove API keys from. in: path - name: reference + name: group_id required: true type: string + - description: A list of API keys to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the array of API keys is + missing. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -10373,46 +16043,77 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get metadata of a dark theme image. + summary: Remove API keys from a group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications/remove + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/dark/{reference}/clear: - post: - description: 'Revert an account branding image to dark theme default. + /v3/accounts/{account_id}/policy-groups/{group_id}/applications: + get: + description: 'Retrieve an array of applications associated with a policy group. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: clearAccountDarkImage + operationId: getApplicationsOfAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to retrieve applications for. in: path - name: reference + name: group_id required: true type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string produces: - application/json responses: - '204': - description: Image reverted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApplicationList' '401': description: Authentication failure. schema: @@ -10422,69 +16123,59 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Revert an image to dark theme default. + summary: Get applications in a group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/dark/{reference}/upload: + /v3/accounts/{account_id}/policy-groups/{group_id}/applications/add: post: - consumes: - - image/png - - image/jpeg - description: 'Upload a new account dark theme branding image in PNG or JPEG - format. + description: 'Add applications to account groups. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/upload + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications/add \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ - -H ''content-type: image/png'' --data-binary ''@myimage.png'' + -H ''content-type: application/json'' \ + + -d ''{"applications": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' ```' - operationId: uploadAccountDarkImage + operationId: addListedApplicationsToAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to add applications to. in: path - name: reference + name: group_id required: true type: string - - description: The image in PNG or JPEG format. + - description: A list of applications to add to the group. in: body name: body required: true schema: - $ref: '#/definitions/Image' + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '201': - description: Image uploaded successfully. - headers: - Content-Location: - description: Location of the image metadata. - type: string - Location: - description: Location of the image binary. - type: string + '200': + description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format, for example, image is too large. + description: Successful operation. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10496,53 +16187,66 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Upload a dark theme image. + '409': + description: The application is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add applications to account group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart: + /v3/accounts/{account_id}/policy-groups/{group_id}/applications/remove: post: consumes: - - multipart/form-data - description: Upload a new account dark theme branding image as form data in - PNG or JPEG format. - operationId: uploadAccountDarkImageMultipart + - application/json + description: 'Remove applications from groups. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"applications": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' + + ```' + operationId: removeListedApplicationsFromAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to remove applications from. in: path - name: reference + name: group_id required: true type: string - - description: The image in PNG or JPEG format as multipart form data. - in: formData - name: image + - description: A list of applications to remove from the group. + in: body + name: body required: true - type: file + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '201': - description: Image uploaded successfully. - headers: - Content-Location: - description: Location of the image metadata. - type: string - Location: - description: Location of the image binary. - type: string + '200': + description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format, for example, image is too large. + description: Error in input data, for example, the array of applications + is missing. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10554,42 +16258,53 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Upload a dark theme image. + summary: Remove applications from a group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/light: - get: - description: 'Retrieve the metadata of all light theme branding images. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: getAllAccountLightImageData + /v3/accounts/{account_id}/policy-groups/{group_id}/users: + delete: + consumes: + - application/json + deprecated: true + description: "Remove users from groups.\nNote: This endpoint is restricted\ + \ to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users\ + \ \\\n-H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ + \ \\\n-d '{\"users\": [\"0162056a9a1586f30242590700000000\",\"0117056a9a1586f30242590700000000\"\ + ]}'\n```" + operationId: removeUsersFromAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string + - description: The ID of the group to remove users from. + in: path + name: group_id + required: true + type: string + - description: A list of users to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingImageList' + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the last user to remove from + Administrators group. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -10599,48 +16314,94 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get metadata of all light theme images. + summary: Remove users from a group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/light/{reference}: get: - description: 'Retrieve metadata for one account light theme branding image. + description: 'Retrieve an array of users associated with a policy group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountLightImageData + operationId: getUsersOfAccountGroup parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to retrieve users for. in: path - name: reference + name: group_id required: true type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string + - description: An optional filter to retrieve users by status. + in: query + name: status__eq + required: false + type: string + - description: An optional filter to retrieve users with a specified set of + statuses. + in: query + name: status__in + required: false + type: string + - description: An optional filter to exclude users with a specified set of statuses. + in: query + name: status__nin + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/UserInfoRespList' '401': description: Authentication failure. schema: @@ -10650,44 +16411,64 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get metadata of a light theme image. + summary: Get users in a policy group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups + x-filter: + status: + - eq + - in + - nin x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/light/{reference}/clear: post: - description: 'Revert an account branding image to light theme default. + deprecated: true + description: 'Add users to account group. + + Note: This endpoint is restricted to administrators. **Example:** - ```curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/clear + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: clearAccountLightImage + operationId: addUsersToAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to add users to. in: path - name: reference + name: group_id required: true type: string + - description: A list of user IDs to add to the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '204': - description: Image reverted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' + '400': + description: Successful operation. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -10697,69 +16478,66 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Revert an image to light theme default. + '409': + description: The user is a member of the account group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add users to account group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/light/{reference}/upload: + /v3/accounts/{account_id}/policy-groups/{group_id}/users/add: post: - consumes: - - image/png - - image/jpeg - description: 'Upload a new account light theme branding image in PNG or JPEG - format. + description: 'Add users to account group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/upload + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users/add \ - -H ''Authorization: Bearer '' \ - - -H ''content-type: image/png'' --data-binary ''@myimage.png'' + -H ''Authorization: Bearer '' ```' - operationId: uploadAccountLightImage + operationId: addListedUsersToAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to retrieve users for. in: path - name: reference + name: group_id required: true type: string - - description: The image in PNG or JPEG format. + - description: A list of users to add to the group. in: body name: body required: true schema: - $ref: '#/definitions/Image' + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '201': - description: Image uploaded successfully. - headers: - Content-Location: - description: Location of image metadata. - type: string - Location: - description: Location of the image binary. - type: string + '200': + description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format, for example, image is too large. + description: Successful operation. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10771,53 +16549,54 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference, or account not found. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Upload a light theme image. + '409': + description: The user is a member of the account group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add users to account group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/branding-images/light/{reference}/upload-multipart: + /v3/accounts/{account_id}/policy-groups/{group_id}/users/remove: post: consumes: - - multipart/form-data - description: Upload a new account branding image as form data in PNG or JPEG - format. - operationId: uploadAccountLightImageMultipart + - application/json + description: "Remove users from groups.\nNote: This endpoint is restricted\ + \ to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users/remove\ + \ \\\n-H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ + \ \\\n-d '{\"users\": [\"0162056a9a1586f30242590700000000\",\"0117056a9a1586f30242590700000000\"\ + ]}'\n```" + operationId: removeListedUsersFromAccountGroup parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: Name of the branding images (icon or picture). - enum: *id020 + - description: The ID of the group to remove users from. in: path - name: reference + name: group_id required: true type: string - - description: The image in PNG or JPEG format as multipart form data. - in: formData - name: image + - description: A list of users to remove from the group. + in: body + name: body required: true - type: file + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '201': - description: Image uploaded successfully. - headers: - Content-Location: - description: Location of the image metadata. - type: string - Location: - description: Location of the image binary. - type: string + '200': + description: Successful operation. schema: - $ref: '#/definitions/BrandingImage' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data format, for example, image is too large. + description: Error in input data, for example, the last user to remove from + Administrators group. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10829,19 +16608,31 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Unknown image reference. + description: An account or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Upload a light theme image. + summary: Remove users from a group. tags: - - Tenant user interface configuration - images + - Tenant accounts - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/identity-providers: + /v3/accounts/{account_id}/trusted-certificates: get: - consumes: - - application/json - description: Retrieve identity providers in an array. - operationId: getAllAccountIdentityProviders + description: 'Retrieve an array of trusted certificates. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccountCertificates parameters: - description: Account ID. in: path @@ -10855,14 +16646,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -10873,70 +16664,168 @@ paths: name: include required: false type: string + - description: Filter for certificate name. + in: query + name: name__eq + required: false + type: string + - description: Filter for service. + in: query + name: service__eq + required: false + type: string + - description: Filter for expire. + format: int32 + in: query + name: expire__eq + required: false + type: integer + - description: Filter for developer certificates. + format: int32 + in: query + name: device_execution_mode__eq + required: false + type: integer + - description: Filter for not developer certificates. + format: int32 + in: query + name: device_execution_mode__neq + required: false + type: integer + - description: Owner name filter. + in: query + name: owner__eq + required: false + type: string + - description: Enrollment mode filter. + in: query + name: enrollment_mode__eq + required: false + type: boolean + - description: Filter for certificate status. + in: query + name: status__eq + required: false + type: string + - description: 'Filter for issuer. Finds all matches where the filter value + is a case-insensitive substring of the result. Example: issuer__like=cn=iss + matches CN=issuer.' + in: query + name: issuer__like + required: false + type: string + - description: 'Filter for subject. Finds all matches where the filter value + is a case-insensitive substring of the result. Example: subject__like=cn=su + matches CN=subject.' + in: query + name: subject__like + required: false + type: string + - description: Filter for certificate fingerprint. + in: query + name: certificate_fingerprint__eq + required: false + type: string + - description: Filter for finding certificates by validity. True returns certificates + which are not yet expired. False returns certificates which have expired. + in: query + name: valid__eq + required: false + type: boolean produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/IdentityProviderList' + $ref: '#/definitions/TrustedCertificateRespList' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all identity providers. + summary: Get trusted certificates. tags: - - Tenant accounts - identity providers + - Tenant security and identity - certificates + x-filter: + certificate_fingerprint: + - eq + device_execution_mode: + - eq + - neq + enrollment_mode: + - eq + expire: + - eq + issuer: + - like + name: + - eq + owner: + - eq + service: + - eq + status: + - eq + subject: + - like + valid: + - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: Create a new identity provider. - operationId: createAccountIdentityProvider + description: 'Upload new trusted certificate. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d {"name": "myCert1", "description": "very important cert", "certificate": + "certificate_data", "service": "lwm2m"} + + ```' + operationId: addAccountCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - allowEmptyValue: true - description: 'Indicates that the OpenID Connect endpoints and keys should - be set using the OpenID Connect Discovery mechanism. The following parameters - are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint - * revocation_endpoint * jwks_uri * keys' - in: query - name: discovery - type: boolean - - description: Details of the identity provider to create. + - description: A trusted certificate object with attributes. Signature is optional. in: body name: body required: true schema: - $ref: '#/definitions/IdentityProviderCreationReq' + $ref: '#/definitions/TrustedCertificateReq' produces: - application/json responses: '201': description: New entity created. - headers: - Content-Location: - description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} - type: string - Location: - description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/TrustedCertificateResp' '400': - description: Error in input data, for example, too long name. + description: Invalid certificate data, certificate validation failed, certificate + already expired or certificate uses unsupported, or weak cipher. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -10944,30 +16833,45 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account not found. + description: An account with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new identity provider. + summary: Upload new trusted certificate. tags: - - Tenant accounts - identity providers + - Tenant security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/identity-providers/{identity_provider_id}: + /v3/accounts/{account_id}/trusted-certificates/{cert_id}: delete: - description: Delete an identity provider by ID. - operationId: deleteAccountIdentityProvider + description: 'Delete a trusted certificate. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteAccountCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the identity provider to delete. + - description: The ID of the trusted certificate to delete. in: path - name: identity_provider_id + name: cert_id required: true type: string produces: @@ -10980,29 +16884,44 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, or identity provider is in use. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account or identity provider not found. + description: An account or certificate with the given ID not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete an identity provider by ID. + summary: Delete a trusted certificate by ID. tags: - - Tenant accounts - identity providers + - Tenant security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: Manage identity providers of a tenant account. - operationId: getAccountIdentityProvider + description: 'Retrieve a trusted certificate. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the identity provider to retrieve. + - description: The ID of the trusted certificate to retrieve. in: path - name: identity_provider_id + name: cert_id required: true type: string produces: @@ -11011,62 +16930,59 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/TrustedCertificateResp' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account or identity provider not found. + description: An account or certificate with the given ID not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Retrieve identity provider by ID. + summary: Get a trusted certificate. tags: - - Tenant accounts - identity providers + - Tenant security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: consumes: - application/json - description: Update an existing identity provider. - operationId: updateAccountIdentityProvider + description: "Update a trusted certificate.\nNote: This endpoint is restricted\ + \ to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id}\ + \ \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ + \ \\\n -d {\"description\": \"very important cert\"}\n ```" + operationId: updateAccountCertificate parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the identity provider to update. + - description: The ID of the trusted certificate to update. in: path - name: identity_provider_id + name: cert_id required: true type: string - - allowEmptyValue: true - description: 'Indicates that the OpenID Connect endpoints and keys should - be set using the OpenID Connect Discovery mechanism. The following parameters - are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint - * revocation_endpoint * jwks_uri * keys' - in: query - name: discovery - type: boolean - - description: Details of the identity provider to update. + - description: A trusted certificate object with attributes. in: body name: body required: true schema: - $ref: '#/definitions/IdentityProviderUpdateReq' + $ref: '#/definitions/TrustedCertificateUpdateReq' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/TrustedCertificateResp' '400': - description: Error in input data, for example, missing name. + description: Invalid certificate data, certificate validation failed, certificate + already expired or certificate uses unsupported, or weak cipher. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11074,45 +16990,73 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account or identity provider not found. + description: An account or certificate with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update an existing identity provider. + summary: Update trusted certificate. tags: - - Tenant accounts - identity providers + - Tenant security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/delete-sp-certificate: - post: - consumes: - - application/json - description: Delete a service provider certificate. - operationId: deleteAccountSpCertificate + /v3/accounts/{account_id}/user-invitations: + get: + description: 'Retrieve an array of active user invitations. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllAccountInvitations parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the identity provider whose certificate should be deleted. - in: path - name: identity_provider_id - required: true + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: Filter to retrieve user invitations by a specified login profile. + in: query + name: login_profiles__eq + required: false type: string produces: - application/json responses: '200': description: Successful operation. - headers: - Content-Location: - description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/UserInvitationRespList' '401': description: Authentication failure. schema: @@ -11122,99 +17066,60 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account or identity provider not found. + description: An account with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete the service provider certificate. + summary: Get user invitations. tags: - - Tenant accounts - identity providers + - Tenant accounts - user invitations + x-filter: + login_profiles: + - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/generate-sp-certificate: post: consumes: - application/json - description: Generate a new service provider certificate. - operationId: generateAccountSpCertificate + description: 'Invite a new or existing user. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accouns/{account_id}/user-invitations + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d {"email": "myemail@company.com"} + + ```' + operationId: createAccountInvitation parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the identity provider for which to generate a certificate. - in: path - name: identity_provider_id - required: true - type: string - - description: Details of the service provider certificate to be generated. + - description: A user invitation object with attributes. in: body name: body required: true schema: - $ref: '#/definitions/CertificateGenerationReq' - produces: - - application/json - responses: - '200': - description: Successful operation. - headers: - Content-Location: - description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} - type: string - schema: - $ref: '#/definitions/IdentityProviderInfo' - '400': - description: Error in input data, for example, invalid certificate validity - value. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Account or identity provider not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Generate a new service provider certificate. - tags: - - Tenant accounts - identity providers - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/refresh-jwks: - post: - consumes: - - application/json - description: Refreshes an OIDC IdP's signing keys. - operationId: refreshAccountJwks - parameters: - - description: The ID of the account to be managed. - in: path - name: account_id - required: true - type: string - - description: The ID of the identity provider for which to refresh the signing - keys. - in: path - name: identity_provider_id - required: true - type: string + $ref: '#/definitions/UserInvitationReq' produces: - application/json responses: - '200': - description: Successful operation. - headers: - Content-Location: - description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} - type: string + '201': + description: New entity created. schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/UserInvitationResp' '400': - description: Not an OIDC IdP or JWKS URI is unspecified. + description: Error in input data, for example, invalid email address. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11225,128 +17130,130 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: Account or identity provider not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Refreshes the OIDC signing keys. + summary: Create a user invitation. tags: - - Tenant accounts - identity providers + - Tenant accounts - user invitations x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/notifications: - get: - description: Retrieve notifications. - operationId: getAccountNofificationEntries + /v3/accounts/{account_id}/user-invitations/{invitation_id}: + delete: + description: 'Delete an active user invitation sent to a new or existing user. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteAccountInvitation parameters: - description: Account ID. in: path name: account_id required: true type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false + - description: The ID of the invitation to delete. + in: path + name: invitation_id + required: true type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/NotificationEntryList' - '400': - description: Error in input data, or missing or invalid parameters. - schema: - $ref: '#/definitions/ErrorResponse' + '204': + description: Deleted successfully. '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Account with the given ID not found. + description: An account or invitation with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get the notification events of an account. + summary: Delete a user invitation. tags: - - Tenant accounts - email notification logs + - Tenant accounts - user invitations x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/notifications/{notification_id}: get: - description: An endpoint for retrieving notification event details of an account. - operationId: getAccountNofificationEntry + description: 'Retrieve details of an active user invitation sent for a new or + existing user. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountInvitation parameters: - - description: The ID of the account for which this notification should be retrieved. + - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the notification entry to be retrieved. + - description: The ID of the invitation to retrieve. in: path - name: notification_id + name: invitation_id required: true type: string produces: - application/json responses: '200': - description: successful operation - schema: - $ref: '#/definitions/NotificationEntry' - '400': - description: Error in input data, missing or invalid parameters. + description: Successful operation. schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/UserInvitationResp' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' '404': - description: No entry found for the given ID. + description: An account or invitation with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get a notification event of an account. + summary: Details of a user invitation. tags: - - Aggregator Account Admin + - Tenant accounts - user invitations x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/policy-groups: + /v3/accounts/{account_id}/users: get: - description: 'Retrieve all group information. + description: 'Retrieve an array of users. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAllAccountGroups + operationId: getAllAccountUsers parameters: - description: Account ID. in: path @@ -11360,14 +17267,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -11378,9 +17285,30 @@ paths: name: include required: false type: string - - description: Filter for group name. + - description: Filter for email address. in: query - name: name__eq + name: email__eq + required: false + type: string + - description: Filter for status. + in: query + name: status__eq + required: false + type: string + - description: An optional filter to retrieve users with a specified set of + statuses. + in: query + name: status__in + required: false + type: string + - description: An optional filter to exclude users with a specified set of statuses. + in: query + name: status__nin + required: false + type: string + - description: An optional filter to retrieve users with a specified login profile. + in: query + name: login_profiles__eq required: false type: string produces: @@ -11389,7 +17317,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/GroupSummaryList' + $ref: '#/definitions/UserInfoRespList' '401': description: Authentication failure. schema: @@ -11399,58 +17327,73 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account with the specified ID does not exist. + description: An account with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all group information. + summary: Get users. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-filter: - name: + email: + - eq + login_profiles: - eq + status: + - eq + - in + - nin x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Create a new group. + description: 'Create or invite a new user to the account. Only email address + is used; other attributes are set in the second step. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"name": "MyGroup1"}'' + -d {"email": "myemail@company.com"} ```' - operationId: createAccountGroup + operationId: createAccountUser parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: Details of the group to create. + - description: A user object with attributes. in: body name: body required: true schema: - $ref: '#/definitions/GroupCreationInfo' + $ref: '#/definitions/UserInfoReq' + - default: create + description: Create or invite user. + in: query + name: action + required: false + type: string produces: - application/json responses: '201': description: New entity created. schema: - $ref: '#/definitions/GroupSummary' + $ref: '#/definitions/UserInfoResp' '400': - description: Error in input data, for example, invalid group name. + description: Error in input data, for example, an invalid email address. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11466,38 +17409,40 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '409': - description: A group with that name already exists. + description: A user with the given username or email already exists. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new group. + summary: Create a new user. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/policy-groups/{group_id}: + /v3/accounts/{account_id}/users/{user_id}: delete: - description: 'Delete a group. + description: 'Delete a user. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteAccountGroup + operationId: deleteAccountUser parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to delete. + - description: The ID of the user to delete. in: path - name: group_id + name: user_id required: true type: string produces: @@ -11505,55 +17450,128 @@ paths: responses: '204': description: Deleted successfully. + '400': + description: Bad request, for example, trying to delete an active user. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, or Administrators group cannot be removed. + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account or user with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete a group. + summary: Delete a user. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve general information about the group. + description: 'Retrieve user details. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAccountUser + parameters: + - description: Account ID. + in: path + name: account_id + required: true + type: string + - description: The ID of the user to retrieve. + in: path + name: user_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/UserInfoResp' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An account or user with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Details of the user. + tags: + - Tenant accounts - users + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update user details. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"username": "myusername"}'' ```' - operationId: getAccountGroupSummary + operationId: updateAccountUser parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to retrieve. + - description: The ID of the user to update. in: path - name: group_id + name: user_id required: true type: string + - description: A user object with attributes. + in: body + name: body + required: true + schema: + $ref: '#/definitions/UserUpdateReq' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/GroupSummary' + $ref: '#/definitions/UserInfoResp' + '400': + description: Error in input data, for example, an invalid email address. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -11563,61 +17581,70 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account or user with the given ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: A user with the given username or email already exists. schema: $ref: '#/definitions/ErrorResponse' - summary: Get group information. + summary: Update user details. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - post: + /v3/accounts/{account_id}/users/{user_id}/groups: + delete: consumes: - application/json - description: 'Add users and API keys to groups. + deprecated: true + description: 'Remove user from groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: addSubjectsToAccountGroup + operationId: removeAccountUserFromGroups parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to update. + - description: The ID of the user to remove from the group. in: path - name: group_id + name: user_id required: true type: string - - description: A list of users and API keys to add to the group. + - description: A list of IDs of the groups to update. in: body name: body required: true schema: - $ref: '#/definitions/SubjectList' + items: + type: string + type: array produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/UserInfoResp' '400': - description: Error in input data, for example, the user or API key does - not exist. + description: Error in input data. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11629,66 +17656,78 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: The user of this API key is a member of the group already. + description: An account, user, or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Add members to a group. + summary: Remove user from groups. tags: - - Tenant accounts - policy groups + - Tenant accounts - users + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - consumes: - - application/json - description: 'Update a group name. + get: + description: 'Retrieve an array of policy groups associated with a user. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \ - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"name": "TestGroup2"}'' + -H ''Authorization: Bearer '' ```' - operationId: updateAccountGroupName + operationId: getGroupsOfAccountUser parameters: + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to update. + - description: The ID of the user. in: path - name: group_id + name: user_id required: true type: string - - description: Details of the group to create. - in: body - name: body - required: true - schema: - $ref: '#/definitions/GroupUpdateInfo' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' - '400': - description: Error in input data, for example, the group name is too long. - schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/GroupSummaryList' '401': description: Authentication failure. schema: @@ -11698,62 +17737,65 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: A group with that ID does not exist. + description: An account or user with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update the group name. + summary: Get policy groups for a user. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/policy-groups/{group_id}/api-keys: - delete: + post: consumes: - application/json - description: 'Remove API keys from groups. + deprecated: true + description: 'Add user to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"apikeys": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: removeApiKeysFromAccountGroup + operationId: addAccountUserToGroups parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to remove API keys from. + - description: The ID of the user to add to the group. in: path - name: group_id + name: user_id required: true type: string - - description: A list of API keys to remove from the group. + - description: A list of IDs of the groups to update. in: body name: body required: true schema: - $ref: '#/definitions/SubjectList' + items: + type: string + type: array produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/UserInfoResp' '400': - description: Error in input data, for example, the array of API keys is - missing. + description: Error in input data. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11765,71 +17807,74 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account, user, or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove API keys from a group. + '409': + description: The user is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add user to a list of groups. tags: - - Tenant accounts - policy groups + - Tenant accounts - users + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: 'List the API keys of the group with details. + /v3/accounts/{account_id}/users/{user_id}/groups/add: + post: + consumes: + - application/json + description: 'Add a user to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups/add \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: getApiKeysOfAccountGroup + operationId: addAccountUserToListedGroups parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: The ID of the group to retrieve API keys for. + - description: The ID of the user to add to the group. in: path - name: group_id + name: user_id required: true type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - in: query - name: include - required: false - type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoRespList' + $ref: '#/definitions/UserInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -11839,50 +17884,67 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account, user, or group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The user is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Get API keys of a group. + summary: Add user to a list of groups. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/policy-groups/{group_id}/users: - delete: + /v3/accounts/{account_id}/users/{user_id}/groups/remove: + post: consumes: - application/json - description: "Remove users from groups.\n\n**Example:**\n```\ncurl -X DELETE\ - \ https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users\ - \ \\\n-H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ - \ \\\n-d '{\"users\": [\"0162056a9a1586f30242590700000000\",\"0117056a9a1586f30242590700000000\"\ - ]}'\n```" - operationId: removeUsersFromAccountGroup + description: 'Remove a user from groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: removeAccountUserFromListedGroups parameters: - - description: Account ID. + - description: The ID of the account. in: path name: account_id required: true type: string - - description: The ID of the group to remove users from. + - description: The ID of the user to remove from the group. in: path - name: group_id + name: user_id required: true type: string - - description: A list of users to remove from the group. + - description: A list of IDs of the groups to update. in: body name: body required: true schema: - $ref: '#/definitions/SubjectList' + $ref: '#/definitions/GroupIdList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/UserInfoResp' '400': - description: Error in input data, for example, the last user to remove from - Administrators group. + description: Error in input data. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -11894,87 +17956,47 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account, user, or group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove users from a group. + summary: Remove user from groups. tags: - - Tenant accounts - policy groups + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: 'List users of the group with details. + /v3/accounts/{account_id}/users/{user_id}/validate-email: + post: + description: 'Validate user email. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/validate-email \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getUsersOfAccountGroup + operationId: validateAccountUserEmail parameters: - description: Account ID. in: path name: account_id required: true type: string - - description: The ID of the group to retrieve users for. + - description: The ID of the user. in: path - name: group_id + name: user_id required: true type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - in: query - name: include - required: false - type: string - - description: An optional filter to retrieve users by status. - in: query - name: status__eq - required: false - type: string - - description: An optional filter to retrieve users with a specified set of - statuses. - in: query - name: status__in - required: false - type: string - - description: An optional filter to exclude users with a specified set of statuses. - in: query - name: status__nin - required: false - type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/UserInfoRespList' + '204': + description: Email validation successfully requested. '401': description: Authentication failure. schema: @@ -11984,40 +18006,30 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or group with that ID does not exist. + description: An account or user with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get users of a group. + summary: Validate the user email. tags: - - Tenant accounts - policy groups - x-filter: - status: - - eq - - in - - nin + - Tenant accounts - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/trusted-certificates: + /v3/api-keys: get: - description: 'Retrieve trusted certificates in an array. + deprecated: true + description: 'Retrieve an array of API keys, optionally filtered by the owner. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates - \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAllAccountCertificates + operationId: getAllApiKeys parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - default: 50 description: The number of results to return (2-1000). Default 50. format: int32 @@ -12025,14 +18037,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -12043,380 +18055,181 @@ paths: name: include required: false type: string - - description: Filter for certificate name. - in: query - name: name__eq - required: false - type: string - - description: Filter for service. + - description: API key filter. Do not include the private portion of the API + key (the last 32 characters). in: query - name: service__eq + name: key__eq required: false type: string - - description: Filter for expire. - format: int32 - in: query - name: expire__eq - required: false - type: integer - - description: Filter for developer certificates. - format: int32 - in: query - name: device_execution_mode__eq - required: false - type: integer - - description: Filter for not developer certificates. - format: int32 - in: query - name: device_execution_mode__neq - required: false - type: integer - - description: Owner name filter. + - description: 'Owner name filter. + + Note: This parameter is restricted to administrators.' in: query name: owner__eq required: false type: string - - description: Enrollment mode filter. - in: query - name: enrollment_mode__eq - required: false - type: boolean - - description: Filter for certificate status. - in: query - name: status__eq - required: false - type: string - - description: 'Filter for issuer. Finds all matches where the filter value - is a case-insensitive substring of the result. Example: issuer__like=cn=iss - matches CN=issuer.' - in: query - name: issuer__like - required: false - type: string - - description: 'Filter for subject. Finds all matches where the filter value - is a case-insensitive substring of the result. Example: subject__like=cn=su - matches CN=subject.' - in: query - name: subject__like - required: false - type: string - - description: Filter for finding certificates by validity. True returns certificates - which are not yet expired. False returns certificates which have expired. - in: query - name: valid__eq - required: false - type: boolean produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/TrustedCertificateRespList' + $ref: '#/definitions/ApiKeyInfoRespList' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, only available for admins of commercial accounts. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: An account with the given ID does not exist. + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all trusted certificates. + summary: Get all API keys. tags: - - Tenant device security - certificates + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-filter: - device_execution_mode: - - eq - - neq - enrollment_mode: - - eq - expire: - - eq - issuer: - - like - name: + key: - eq owner: - eq - service: - - eq - status: - - eq - subject: - - like - valid: - - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Upload new trusted certificates. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d {"name": "myCert1", "description": "very important cert", "certificate": - "certificate_data", "service": "lwm2m"} - - ```' - operationId: addAccountCertificate - parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: A trusted certificate object with attributes. Signature is optional. - in: body - name: body - required: true - schema: - $ref: '#/definitions/TrustedCertificateReq' - produces: - - application/json - responses: - '201': - description: New entity created. - schema: - $ref: '#/definitions/TrustedCertificateResp' - '400': - description: Invalid certificate data, certificate validation failed, certificate - already expired or certificate uses unsupported, or weak cipher. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden, only available for admins of commercial accounts. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: An account with the given ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Upload new trusted certificate. - tags: - - Tenant device security - certificates - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/trusted-certificates/{cert_id}: - delete: - description: 'Delete the trusted certificate. + deprecated: true + description: 'Create a new API key. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} - \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d ''{"name": + "MyKey1"}'' \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' ```' - operationId: deleteAccountCertificate + operationId: createApiKey parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the trusted certificate to delete. - in: path - name: cert_id + - description: The details of the API key to create. + in: body + name: body required: true - type: string + schema: + $ref: '#/definitions/ApiKeyInfoReq' produces: - application/json responses: - '204': - description: Deleted successfully. + '201': + description: New entity created. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data, for example, missing API key name. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, only available for admins of commercial accounts. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Account or certificate with the given ID not found. + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete trusted certificate by ID. + summary: Create a new API key. tags: - - Tenant device security - certificates + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/api-keys/me: get: - description: 'Retrieve a trusted certificate by ID. + deprecated: true + description: 'Retrieve details of current API key. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} - \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountCertificate - parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the trusted certificate to retrieve. - in: path - name: cert_id - required: true - type: string + operationId: getMyApiKey + parameters: [] produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/TrustedCertificateResp' + $ref: '#/definitions/ApiKeyInfoResp' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, only available for admins of commercial accounts. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Account or certificate with the given ID not found. + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get trusted certificate by ID. + summary: Get current API key. tags: - - Tenant device security - certificates + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: - consumes: - - application/json - description: "Update existing trusted certificates.\n\n**Example:**\n```\ncurl\ - \ -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id}\ - \ \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ - \ \\\n -d {\"description\": \"very important cert\"}\n ```" - operationId: updateAccountCertificate - parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the trusted certificate to update. - in: path - name: cert_id - required: true - type: string - - description: A trusted certificate object with attributes. - in: body - name: body - required: true - schema: - $ref: '#/definitions/TrustedCertificateUpdateReq' - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/TrustedCertificateResp' - '400': - description: Invalid certificate data, certificate validation failed, certificate - already expired or certificate uses unsupported, or weak cipher. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden, only available for admins of commercial accounts. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: An account or certificate with the given ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Update trusted certificate. - tags: - - Tenant device security - certificates - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/user-invitations: - get: - description: 'Retrieve details of all active user invitations sent for new or - existing users. + deprecated: true + description: 'Update API key details. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations - \ + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestApiKey25"}'' ```' - operationId: getAllAccountInvitations + operationId: updateMyApiKey parameters: - - description: Account ID. - in: path - name: account_id + - description: New API key attributes to store. + in: body + name: body required: true - type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: Filter to retrieve user invitations by a specified login profile. - in: query - name: login_profiles__eq - required: false - type: string + schema: + $ref: '#/definitions/ApiKeyUpdateReq' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInvitationRespList' + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data, for example, invalid API key name. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -12425,59 +18238,53 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: An account with the specified ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Get the details of all user invitations. + summary: Update API key details. tags: - - Tenant accounts - user invitations - x-filter: - login_profiles: - - eq + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - post: + /v3/api-keys/me/groups: + delete: consumes: - application/json - description: 'Invite a new or existing user. + deprecated: true + description: 'Remove API key from groups. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accouns/{account_id}/user-invitations - \ + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d {"email": "myemail@company.com"} + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: createAccountInvitation + operationId: removeMyApiKeyListedGroups parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: A user invitation object with attributes. + - description: A list of IDs of groups to update. in: body name: body required: true schema: - $ref: '#/definitions/UserInvitationReq' + $ref: '#/definitions/GroupIdList' produces: - application/json responses: - '201': - description: New entity created. + '200': + description: Successful operation. schema: - $ref: '#/definitions/UserInvitationResp' + $ref: '#/definitions/ApiKeyInfoResp' '400': - description: Error in input data, for example, invalid email address. + description: Error in input data. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -12488,42 +18295,64 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a user invitation. + summary: Remove API key from groups. tags: - - Tenant accounts - user invitations + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/user-invitations/{invitation_id}: - delete: - description: 'Delete an active user invitation sent to a new or existing user. + get: + deprecated: true + description: 'Retrieve an array of policy groups associated with the current + API key. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} - \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteAccountInvitation + operationId: getGroupsOfMyApiKey parameters: - - description: Account ID. - in: path - name: account_id - required: true + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false type: string - - description: The ID of the invitation to delete. - in: path - name: invitation_id - required: true + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false type: string produces: - application/json responses: - '204': - description: Deleted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummaryList' '401': description: Authentication failure. schema: @@ -12532,218 +18361,180 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: An account or invitation with the specified ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Delete a user invitation. + summary: Get policy groups of the current API key. tags: - - Tenant accounts - user invitations + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: 'Retrieve details of an active user invitation sent for a new or - existing user. + post: + consumes: + - application/json + deprecated: true + description: 'Add API key to groups. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} - \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: getAccountInvitation + operationId: addMyApiKeyToGroups parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the invitation to retrieve. - in: path - name: invitation_id + - description: A list of IDs of the groups to update. + in: body + name: body required: true - type: string + schema: + items: + type: string + type: array produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInvitationResp' + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Adding API key to the 'Administrators' group is + restricted to administrators. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: An account or invitation with the specified ID does not exist. + '409': + description: The API key is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Details of a user invitation. + summary: Add API key to a list of groups. tags: - - Tenant accounts - user invitations + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/users: - get: - description: 'Retrieve details of all users. + /v3/api-keys/me/groups/add: + post: + consumes: + - application/json + deprecated: true + description: 'Add API key to groups. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups/add/ \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: getAllAccountUsers + operationId: addMyApiKeyToListedGroups parameters: - - description: Account ID. - in: path - name: account_id + - description: A list of IDs of the groups to update. + in: body + name: body required: true - type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - in: query - name: include - required: false - type: string - - description: Filter for email address. - in: query - name: email__eq - required: false - type: string - - description: Filter for status. - in: query - name: status__eq - required: false - type: string - - description: An optional filter to retrieve users with a specified set of - statuses. - in: query - name: status__in - required: false - type: string - - description: An optional filter to exclude users with a specified set of statuses. - in: query - name: status__nin - required: false - type: string - - description: An optional filter to retrieve users with a specified login profile. - in: query - name: login_profiles__eq - required: false - type: string + schema: + $ref: '#/definitions/GroupIdList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInfoRespList' + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Adding API key to the 'Administrators' group is + restricted to administrators. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: An account with the given ID does not exist. + '409': + description: The API key is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Get the details of all users. + summary: Add API key to a list of groups. tags: - - Tenant accounts - users - x-filter: - email: - - eq - login_profiles: - - eq - status: - - eq - - in - - nin + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/add + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/api-keys/me/groups/remove: post: consumes: - application/json - description: 'Create or invite a new user to the account. Only email address - is used; other attributes are set in the second step. + deprecated: true + description: 'Remove API key from groups. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups/remove \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d {"email": "myemail@company.com"} + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: createAccountUser + operationId: removeMyApiKeyFromListedGroups parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: A user object with attributes. + - description: A list of IDs of groups to update. in: body name: body required: true schema: - $ref: '#/definitions/UserInfoReq' - - default: create - description: Create or invite user. - in: query - name: action - required: false - type: string + $ref: '#/definitions/GroupIdList' produces: - application/json responses: - '201': - description: New entity created. + '200': + description: Successful operation. schema: - $ref: '#/definitions/UserInfoResp' + $ref: '#/definitions/ApiKeyInfoResp' '400': - description: Error in input data, for example, an invalid email address. + description: Error in input data. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -12754,43 +18545,36 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: An account with the specified ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: A user with the given username or email already exists. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Create a new user. + summary: Remove API key from groups. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/remove + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/users/{user_id}: + /v3/api-keys/{apikey_id}: delete: - description: 'Delete a user. + deprecated: true + description: 'Delete the API key. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: deleteAccountUser + operationId: deleteApiKey parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user to delete. + - description: The ID of the API key to delete. in: path - name: user_id + name: apikey_id required: true type: string produces: @@ -12798,50 +18582,47 @@ paths: responses: '204': description: Deleted successfully. - '400': - description: Bad request, for example, trying to delete an active user. - schema: - $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Only the owner of the API key or an administrator + can delete an API key. schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or user with the specified ID does not exist. + description: An API key with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete a user. + summary: Delete API key. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve user details. + deprecated: true + description: 'Retrieve details of an API key. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} - \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAccountUser + operationId: getApiKey parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user to retrieve. + - description: The ID of the API key to retrieve. in: path - name: user_id + name: apikey_id required: true type: string produces: @@ -12850,7 +18631,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInfoResp' + $ref: '#/definitions/ApiKeyInfoResp' '401': description: Authentication failure. schema: @@ -12860,60 +18641,56 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or user with the specified ID does not exist. + description: An API key with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Details of the user. + summary: Get API key. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: - consumes: - - application/json - description: 'Update user details. + deprecated: true + description: 'Update API key details. **Example:** - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} - \ + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"username": "myusername"}'' + -d ''{"name": "TestApiKey25"}'' ```' - operationId: updateAccountUser + operationId: updateApiKey parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user to update. + - description: The ID of the API key to update. in: path - name: user_id + name: apikey_id required: true type: string - - description: A user object with attributes. + - description: New API key attributes to store. in: body name: body required: true schema: - $ref: '#/definitions/UserUpdateReq' + $ref: '#/definitions/ApiKeyUpdateReq' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInfoResp' + $ref: '#/definitions/ApiKeyInfoResp' '400': - description: Error in input data, for example, an invalid email address. + description: Error in input data, for example, invalid API key name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -12921,52 +18698,52 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Only the owner of the API key or an administrator + can update an API key. schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or user with the given ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: A user with the given username or email already exists. + description: An API key with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update user details. + summary: Update API key details. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/users/{user_id}/groups: + /v3/api-keys/{apikey_id}/groups: delete: consumes: - application/json - description: 'Remove user from groups. + deprecated: true + description: 'Remove API key from groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: removeAccountUserFromGroups + operationId: removeApiKeyFromGroups parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user to remove from the group. + - description: The ID of the API key to remove from the group. in: path - name: user_id + name: apikey_id required: true type: string - description: A list of IDs of the groups to update. @@ -12983,7 +18760,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/ApiKeyInfoResp' '400': description: Error in input data. schema: @@ -12997,28 +18774,36 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account, user, or group with that ID does not exist. + description: An API key with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove user from groups. + summary: Remove API key from groups. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve user''s groups. + deprecated: true + description: 'Retrieve an array of policy groups associated with an API key. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getGroupsOfAccountUser + operationId: getGroupsOfApikey parameters: - default: 50 description: The number of results to return (2-1000). Default 50. @@ -13027,14 +18812,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -13045,14 +18830,9 @@ paths: name: include required: false type: string - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user. + - description: The ID of the API key. in: path - name: user_id + name: apikey_id required: true type: string produces: @@ -13071,43 +18851,46 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or user with the specified ID does not exist. + description: An API key with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get user's groups. + summary: Get policy groups of an API key. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Add user to groups. + deprecated: true + description: 'Add API key to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: addAccountUserToGroups + operationId: addApiKeyToGroups parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user to add to the group. + - description: The ID of the API key to add to the group. in: path - name: user_id + name: apikey_id required: true type: string - description: A list of IDs of the groups to update. @@ -13124,7 +18907,80 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A group or API key with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API key to a list of groups. + tags: + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/api-keys/{apikey_id}/groups/add: + post: + consumes: + - application/json + deprecated: true + description: 'Add API key to groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups/add + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: addApiKeyToListedGroups + parameters: + - description: The ID of the API key to add to the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' '400': description: Error in input data. schema: @@ -13138,49 +18994,131 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account, user, or group with that ID does not exist. + description: A group or API key with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' '409': - description: The user is a member of the group already. + description: The API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API key to a list of groups. + tags: + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/add + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/api-keys/{apikey_id}/groups/remove: + post: + consumes: + - application/json + deprecated: true + description: 'Remove API key from groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: removeApiKeyFromListedGroups + parameters: + - description: The ID of the API key to remove from the group. + in: path + name: apikey_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An API key with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Add user to a list of groups. + summary: Remove API key from groups. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/remove + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/accounts/{account_id}/users/{user_id}/validate-email: + /v3/api-keys/{apikey_id}/reset-secret: post: - description: 'Validate user email. + deprecated: true + description: 'Reset the secret key of the API key. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/validate-email + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/reset-secret \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: validateAccountUserEmail + operationId: resetSecret parameters: - - description: Account ID. - in: path - name: account_id - required: true - type: string - - description: The ID of the user. + - description: The ID of the API key to reset. in: path - name: user_id + name: apikey_id required: true type: string + - description: New API key attributes to be stored. + in: body + name: body + required: false + schema: + $ref: '#/definitions/ApiKeyUpdateReq' produces: - application/json responses: - '204': - description: Email validation successfully requested. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/ApiKeyInfoResp' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -13190,28 +19128,35 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An account or user with the specified ID does not exist. + description: An API key with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Validate the user email. + summary: Reset the secret key. tags: - - Tenant accounts - users + - Account - API keys + x-deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys: + /v3/applications: get: - description: 'Retrieve API keys in an array, optionally filtered by the owner. + description: 'Retrieve an array of applications. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/applications \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAllApiKeys + operationId: getAllApplications parameters: - default: 50 description: The number of results to return (2-1000). Default 50. @@ -13220,14 +19165,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -13238,15 +19183,9 @@ paths: name: include required: false type: string - - description: API key filter. Do not include the private portion of the API - key (the last 32 characters). - in: query - name: key__eq - required: false - type: string - - description: Owner name filter. + - description: Status filter. in: query - name: owner__eq + name: status__eq required: false type: string produces: @@ -13255,7 +19194,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoRespList' + $ref: '#/definitions/ApplicationList' '401': description: Authentication failure. schema: @@ -13264,50 +19203,50 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all API keys. + summary: Get all applications. tags: - - Account - API keys + - Account - applications x-filter: - key: - - eq - owner: + status: - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Create a new API key. + description: 'Create a new application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d ''{"name": - "MyKey1"}'' \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/applications -d ''{"name": + "MyApplication1"}'' \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' ```' - operationId: createApiKey + operationId: createApplication parameters: - - description: The details of the API key to create. + - description: The details of the application to create. in: body name: body required: true schema: - $ref: '#/definitions/ApiKeyInfoReq' + $ref: '#/definitions/Application' produces: - application/json responses: '201': description: New entity created. schema: - $ref: '#/definitions/ApiKeyInfoResp' + $ref: '#/definitions/Application' '400': - description: Error in input data, for example, missing display name. + description: Error in input data, for example, missing name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -13318,33 +19257,39 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new API key. + summary: Create a new application. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys/me: - get: - description: 'Retrieve API key details. + /v3/applications/{application_id}: + delete: + description: 'Delete the application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/applications/{application_id} + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getMyApiKey - parameters: [] + operationId: deleteApplication + parameters: + - description: The ID of the application to delete. + in: path + name: application_id + required: true + type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/ApiKeyInfoResp' + '204': + description: Deleted successfully. '401': description: Authentication failure. schema: @@ -13353,46 +19298,44 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get API key details. + '404': + description: An application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete application. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - description: 'Update API key details. + get: + description: 'Retrieve details of an application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id} + \ - -d ''{"name": "TestApiKey25"}'' + -H ''Authorization: Bearer '' ```' - operationId: updateMyApiKey + operationId: getApplication parameters: - - description: New API key attributes to store. - in: body - name: body + - description: The ID of the application to retrieve. + in: path + name: application_id required: true - schema: - $ref: '#/definitions/ApiKeyUpdateReq' + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoResp' - '400': - description: Error in input data, for example, missing display name. - schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/Application' '401': description: Authentication failure. schema: @@ -13401,49 +19344,54 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Update API key details. + '404': + description: An application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get application. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys/me/groups: - delete: - consumes: - - application/json - description: 'Remove API key from groups. + put: + description: 'Update application details. + Note: This endpoint is restricted to administrators. - **Example:** - ``` + **Example:** - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/applications/{application_id} + \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + -d ''{"name": "TestApplication25"}'' ```' - operationId: removeMyApiKeyFromGroups + operationId: updateApplication parameters: - - description: A list of IDs of groups to update. + - description: The ID of the application to update. + in: path + name: application_id + required: true + type: string + - description: New applicationattributes to store. in: body name: body required: true schema: - items: - type: string - type: array + $ref: '#/definitions/Application' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/ApiKeyInfoResp' '400': - description: Error in input data. + description: Error in input data, for example, invalid display name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -13454,25 +19402,38 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove API key from groups. + '404': + description: An application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update applicationdetails. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/applications/{application_id}/access-keys: get: - description: 'Retrieve groups associated with the API key. + description: 'Retrieve an array of access keys associated with the application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getGroupsOfMyApiKey + operationId: getAllApplicationAccessKeys parameters: + - description: The ID of the application. + in: path + name: application_id + required: true + type: string - default: 50 description: The number of results to return (2-1000). Default 50. format: int32 @@ -13480,14 +19441,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -13498,13 +19459,18 @@ paths: name: include required: false type: string + - description: Status filter. + in: query + name: status__eq + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/GroupSummaryList' + $ref: '#/definitions/AccessKeyList' '401': description: Authentication failure. schema: @@ -13513,93 +19479,61 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get groups of the API key. + '404': + description: An application with the specified ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all access keys associated with the application. tags: - - Account - API keys + - Account - applications + x-filter: + status: + - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: 'Add API key to groups. + description: 'Create a new access key for the application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/me/groups \ - - -H ''Authorization: Bearer '' \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + -d ''{"name": "MyKey1"}'' \ - -H ''content-type: application/json'' \ + -H ''Authorization: Bearer '' \ - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + -H ''content-type: application/json'' ```' - operationId: addMyApiKeyToGroups + operationId: createApplicationAccessKey parameters: - - description: A list of IDs of the groups to update. + - description: The ID of the application. + in: path + name: application_id + required: true + type: string + - description: The details of the access key to create. in: body name: body required: true schema: - items: - type: string - type: array + $ref: '#/definitions/AccessKey' produces: - application/json responses: - '200': - description: Successful operation. + '201': + description: New entity created. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/AccessKey' '400': - description: Error in input data. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: The API key is a member of the group already. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Add API key to a list of groups. - tags: - - Account - API keys - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys/{apikey_id}: - delete: - description: 'Delete the API key. - - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: deleteApiKey - parameters: - - description: The ID of the API key to delete. - in: path - name: apikey_id - required: true - type: string - produces: - - application/json - responses: - '204': - description: Deleted successfully. + description: Error in input data, for example, missing display name. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -13609,40 +19543,47 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: The API key with the specified ID does not exist. + description: An application with the specified ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete API key. + summary: Create a new applicationaccess key. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: 'Retrieve API key details. + /v3/applications/{application_id}/access-keys/{access_key_id}: + delete: + description: 'Delete the access key associated with the application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getApiKey + operationId: deleteApplicationAccessKey parameters: - - description: The ID of the API key to retrieve. + - description: The ID of the application. in: path - name: apikey_id + name: application_id + required: true + type: string + - description: The ID of the access key to delete. + in: path + name: access_key_id required: true type: string produces: - application/json responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/ApiKeyInfoResp' + '204': + description: Deleted successfully. '401': description: Authentication failure. schema: @@ -13652,52 +19593,49 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: API key with the specified ID does not exist. + description: An application or access key with the specified ID does not + exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get API key details. + summary: Delete access key associated with the application. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - description: 'Update API key details. + get: + description: 'Retrieve details of an access key associated with the application. + Note: This endpoint is restricted to administrators. - **Example:** - `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + **Example:** - -H ''Authorization: Bearer '' \ + ``` - -H ''content-type: application/json'' \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + \ - -d ''{"name": "TestApiKey25"}'' + -H ''Authorization: Bearer '' ```' - operationId: updateApiKey + operationId: getApplicationAccessKey parameters: - - description: The ID of the API key to update. + - description: The ID of the application. in: path - name: apikey_id + name: application_id required: true type: string - - description: New API key attributes to store. - in: body - name: body + - description: The ID of the access key to retrieve. + in: path + name: access_key_id required: true - schema: - $ref: '#/definitions/ApiKeyUpdateReq' + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoResp' - '400': - description: Error in input data, for example, missing display name. - schema: - $ref: '#/definitions/ErrorResponse' + $ref: '#/definitions/AccessKey' '401': description: Authentication failure. schema: @@ -13707,58 +19645,59 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: The API key with the specified ID does not exist. + description: An application or access key with the specified ID does not + exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update API key details. + summary: Get access key. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys/{apikey_id}/groups: - delete: - consumes: - - application/json - description: 'Remove API key from groups. + put: + description: 'Update access key details. + Note: This endpoint is restricted to administrators. - **Example:** - ``` + **Example:** - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + -d ''{"name": "TestAccessKey"}'' ```' - operationId: removeApiKeyFromGroups + operationId: updateApplicationAccessKey parameters: - - description: The ID of the API key to remove from the group. + - description: The ID of the application. in: path - name: apikey_id + name: application_id required: true type: string - - description: A list of IDs of the groups to update. + - description: The ID of the access key to update. + in: path + name: access_key_id + required: true + type: string + - description: New access key attributes to store. in: body name: body required: true schema: - items: - type: string - type: array + $ref: '#/definitions/AccessKey' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/AccessKey' '400': - description: Error in input data. + description: Error in input data, for example, invalid display name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -13770,29 +19709,38 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An API key with that ID does not exist. + description: An application or access key with the specified ID does not + exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove API key from groups. + summary: Update access key details. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/applications/{application_id}/groups: get: - description: 'Retrieve groups associated with the API key. + description: 'Retrieve an array of policy groups associated with an application. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups + curl -X GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getGroupsOfApikey + operationId: getGroupsOfApplication parameters: + - description: The ID of the application. + in: path + name: application_id + required: true + type: string - default: 50 description: The number of results to return (2-1000). Default 50. format: int32 @@ -13800,14 +19748,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -13818,11 +19766,6 @@ paths: name: include required: false type: string - - description: The ID of the API key. - in: path - name: apikey_id - required: true - type: string produces: - application/json responses: @@ -13839,38 +19782,41 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: An API key with the given ID does not exist. + description: An application with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get groups of the API key. + summary: Get policy groups of an application. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/applications/{application_id}/groups/add: post: consumes: - application/json - description: 'Add API key to groups. + description: 'Add application to groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups + curl -X POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/add \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: addApiKeyToGroups + operationId: addApplicationToGroups parameters: - - description: The ID of the API key to add to the group. + - description: The ID of the application to add to the group. in: path - name: apikey_id + name: application_id required: true type: string - description: A list of IDs of the groups to update. @@ -13878,16 +19824,12 @@ paths: name: body required: true schema: - items: - type: string - type: array + $ref: '#/definitions/GroupIdList' produces: - application/json responses: - '200': + '204': description: Successful operation. - schema: - $ref: '#/definitions/UpdatedResponse' '400': description: Error in input data. schema: @@ -13901,54 +19843,60 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: A group or API key with that ID does not exist. + description: A group or application with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' '409': - description: The API key is a member of the group already. + description: The application is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Add API key to a list of groups. + summary: Add application to a list of groups. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/api-keys/{apikey_id}/reset-secret: + /v3/applications/{application_id}/groups/remove: post: - description: 'Reset the secret key of the API key. + consumes: + - application/json + description: 'Remove application from groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/reset-secret + curl -X POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups/remove \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' ```' - operationId: resetSecret + operationId: removeApplicationFromGroups parameters: - - description: The ID of the API key to reset. + - description: The ID of the application to remove from the group. in: path - name: apikey_id + name: application_id required: true type: string - - description: New API key attributes to be stored. + - description: A list of IDs of the groups to update. in: body name: body - required: false + required: true schema: - $ref: '#/definitions/ApiKeyUpdateReq' + $ref: '#/definitions/GroupIdList' produces: - application/json responses: - '200': + '204': description: Successful operation. - schema: - $ref: '#/definitions/ApiKeyInfoResp' '400': - description: Error in input data format. + description: Error in input data, for example, invalid API key name. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -13956,36 +19904,29 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Only the owner of the API key or an administrator + can reset an API key. schema: $ref: '#/definitions/ErrorResponse' '404': - description: An API key with the specified ID does not exist. + description: An application with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Reset the secret key. + summary: Remove application from groups. tags: - - Account - API keys + - Account - applications x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/billing-report: get: - description: 'Fetch the billing report generated for the currently authenticated - commercial non-subtenant account. - - Billing reports for subtenant accounts are included in their aggregator''s - billing report response. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report?month=2018-07 - \ - - -H ''Authorization: Bearer '' - - ```' + description: "Fetch the billing report generated for the currently authenticated\ + \ commercial account. The billing reports for\ntenant accounts are also included\ + \ in their aggregator's billing report response. The response contains below\ + \ additional counters\nwhen the account's business model is set to `API calls`\ + \ by the account administrator.\n - rest_api_requests_with_user_token\n \ + \ - rest_api_requests_with_api_key_token\n - pelion_to_webapp_notifications\n\ + \ - device_to_pelion_messages\n - pelion_to_device_messages\n\n**Example:**\n\ + ```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report?month=2018-07\ + \ \\\n-H 'Authorization: Bearer '\n```" operationId: getBillingReport parameters: - description: Queried year and month of billing report. @@ -14040,14 +19981,14 @@ paths: campaign_name: example-account-campaign-name time: 2016-09-02T00:00.000Z type: reservation - - account_id: example-subtenant-account-1 + - account_id: example-tenant-account-1 amount: -20 - campaign_name: example-subtenant-account-1-campaign-name + campaign_name: example-tenant-account-1-campaign-name time: 2016-09-03T00:00.000Z type: reservation - - account_id: example-subtenant-account-2 + - account_id: example-tenant-account-2 amount: -30 - campaign_name: example-subtenant-account-2-campaign-name + campaign_name: example-tenant-account-2-campaign-name time: 2016-09-04T00:00.000Z type: reservation metadata: @@ -14069,12 +20010,12 @@ paths: address_line1: null address_line2: null city: null - company: example-subtenant-company-1 + company: example-tenant-company-1 contact: null country: null - customer_subtenant_id: example-customer-subtenant-id-1 + customer_subtenant_id: example-customer-tenant-id-1 email: null - id: example-subtenant-account-1 + id: example-tenant-account-1 phone_number: null postal_code: null state: null @@ -14088,19 +20029,19 @@ paths: service_package: quota_usage: - amount: -20 - campaign_name: example-subtenant-account-1-campaign-name + campaign_name: example-tenant-account-1-campaign-name time: 2016-09-03T00:00.000Z type: reservation - account: address_line1: null address_line2: null city: null - company: example-subtenant-company-2 + company: example-tenant-company-2 contact: null country: null - customer_subtenant_id: example-customer-subtenant-id-2 + customer_subtenant_id: example-customer-tenant-id-2 email: null - id: example-subtenant-account-2 + id: example-tenant-account-2 phone_number: null postal_code: null state: null @@ -14114,7 +20055,7 @@ paths: service_package: quota_usage: - amount: -30 - campaign_name: example-subtenant-account-2-campaign-name + campaign_name: example-tenant-account-2-campaign-name time: 2016-09-04T00:00.000Z type: reservation schema: @@ -14145,7 +20086,7 @@ paths: schema: $ref: '#/definitions/UnauthorizedErrorResponse' 403: - description: Access forbidden if account is not commercial or subtenant. + description: Access forbidden if account is not commercial. examples: application/json: code: 403 @@ -14180,16 +20121,18 @@ paths: schema: $ref: '#/definitions/InternalServerErrorResponse' summary: Get billing report. + tags: + - Usage - billing reports x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml /v3/billing-report-active-devices: get: description: 'Fetch raw billing data for active devices for the currently authenticated - commercial non-subtenant account. + commercial account. - This is supplementary data for the billing report. The raw billing data of - the active devices for subtenant accounts - are included in their aggregator''s raw billing data of the active devices. + This is supplementary data for the billing report. The raw billing data of + the active devices for tenant accounts are included in their aggregator''s + raw billing data of the active devices. The endpoint returns the URL to download the gzipped CSV file. The first line @@ -14201,13 +20144,120 @@ paths: ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report-active-devices?month=2018-07 + curl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report-active-devices?month=2018-07 + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getBillingReportActiveDevices + parameters: + - description: Queried year and month of billing report. + in: query + name: month + pattern: ^\d{4}-\d{2}$ + required: true + type: string + responses: + 200: + description: The response includes the URL to download raw billing data + of the active devices. + examples: + application/json: + filename: example.csv.gz + object: billing-report-active-devices + url: https://example.com/example.csv.gz + schema: + $ref: '#/definitions/BillingReportRawDataResponse' + 400: + description: Bad request. + examples: + application/json: + code: 400 + fields: + - message: Parameter missing. + name: month + message: One of the request fields has failed validation. + object: error + request_id: example-request-id + type: validation_error + schema: + $ref: '#/definitions/BadRequestErrorResponse' + 401: + description: Unauthorized access. + examples: + application/json: + code: 401 + message: Access is denied. + object: error + request_id: example-request-id + type: unauthorized + schema: + $ref: '#/definitions/UnauthorizedErrorResponse' + 403: + description: Access forbidden if account is not commercial. + examples: + application/json: + code: 403 + message: Account is not a commercial account. + object: error + request_id: example-request-id + type: forbidden + schema: + $ref: '#/definitions/ForbiddenErrorResponse' + 404: + description: Active devices billing data not found. + examples: + application/json: + code: 404 + message: Active devices billing data not yet available. + object: error + request_id: example-request-id + type: report_not_found + schema: + $ref: '#/definitions/ReportNotFoundErrorResponse' + 500: + description: Internal server error. + examples: + application/json: + code: 500 + message: Unexpected internal server error. + object: error + request_id: example-request-id + type: internal_error + schema: + $ref: '#/definitions/InternalServerErrorResponse' + summary: Get raw billing data of the active devices for the month. + tags: + - Usage - billing reports + x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml + /v3/billing-report-firmware-updates: + get: + description: 'Fetch raw billing data for firmware updates for the currently + authenticated commercial account. + + + This is supplementary data for the billing report. The raw billing data of + the firmware updates for tenant accounts are also included in their aggregator''s + raw billing data of the firmware updates. + + + The endpoint returns the URL to download the gzipped CSV file. The first line + is the header providing information on the firmware updates, for example, + the ID of a firmware update. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report-firmware-updates?month=2018-07 \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getBillingReportActiveDevices + operationId: getBillingReportFirmwareUpdates parameters: - description: Queried year and month of billing report. in: query @@ -14218,11 +20268,11 @@ paths: responses: 200: description: The response includes the URL to download raw billing data - of the active devices. + of the firmware updates. examples: application/json: filename: example.csv.gz - object: billing-report-active-devices + object: billing-report-firmware-updates url: https://example.com/example.csv.gz schema: $ref: '#/definitions/BillingReportRawDataResponse' @@ -14252,7 +20302,7 @@ paths: schema: $ref: '#/definitions/UnauthorizedErrorResponse' 403: - description: Access forbidden if account is not commercial or subtenant. + description: Access forbidden if account is not commercial. examples: application/json: code: 403 @@ -14263,11 +20313,11 @@ paths: schema: $ref: '#/definitions/ForbiddenErrorResponse' 404: - description: Active devices billing data not found. + description: Firmware updates billing data not found. examples: application/json: code: 404 - message: Active devices billing data not yet available. + message: Firmware updates billing data not yet available. object: error request_id: example-request-id type: report_not_found @@ -14284,53 +20334,144 @@ paths: type: internal_error schema: $ref: '#/definitions/InternalServerErrorResponse' - summary: Get raw billing data of the active devices for the month. + summary: Get raw billing data of the firmware updates for the month. + tags: + - Usage - billing reports x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml - /v3/billing-report-firmware-updates: + /v3/billing-statistics: get: - description: 'Fetch raw billing data for firmware updates for the currently - authenticated commercial non-subtenant account. + description: "Fetch the statistics view of Device Management usage in time series\ + \ for the currently authenticated commercial account.\nThe response contains\ + \ the additional counters below, if the account business model is set to `API\ + \ calls` by the account administrator:\n - device_to_pelion_messages\n -\ + \ pelion_to_device_messages\n - pelion_to_webapp_notifications\n - rest_api_requests_with_api_key_token\n\ + \ - rest_api_requests_with_user_token\n\nThe return data is retrieved during\ + \ a defined time window and grouped by defined interval.\nThe time window\ + \ for data retrieval is defined as a range, that can be either absolute (for\ + \ instance, using timestamps) or relative (referring to the 'period' parameter).\n\ + Range start is inclusive, while range end is exclusive. The specified range\ + \ must be equal to or greater than the specified interval.\n\nReturned data\ + \ does not include any tenant usage.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-statistics?start=2019-11-01T00:00:00.000Z&end=2019-12-01T00:00:00.000Z&interval=1d\ + \ \\\n -H 'Authorization: Bearer '\n```" + operationId: getStatisticsView + parameters: + - description: 'Start time of the statistics view in RFC3339 date-time format, + with millisecond accuracy and UTC time zone. - This is supplementary data for the billing report. The raw billing data of - the firmware updates for subtenant accounts + The parameter is mandatory if the period is not specified. Do not set the + parameter if you have specified the period. - are included in their aggregator''s raw billing data of the firmware updates. + Fetch data with timestamp greater than or equal to this value. Sample value: + 2017-02-07T09:20:56.990Z. + The specified range must be equal to or greater than 5 minutes. Maximum + supported range is 98 days when using timestamps to specify the range.' + format: date-time + in: query + name: start + required: false + type: string + - description: 'End time of the statistics view in RFC3339 date-time format + with millisecond accuracy and UTC time zone. - The endpoint returns the URL to download the gzipped CSV file. The first line - is the header providing information on the firmware updates, for example, - the ID of a firmware update. + The parameter is mandatory if the period is not specified. Do not set the + parameter if you have specified the period. + Fetch the data with timestamp less than this value. Sample value: 2017-02-07T09:20:56.990Z. - **Example:** + The specified range must be equal to or greater than 5 minutes. Maximum + supported range is 98 days when using timestamps to specify the range.' + format: date-time + in: query + name: end + required: false + type: string + - description: 'Period. Alternative for specifying the range if not using start + and end parameters. - ``` + The parameter is mandatory if the start and end parameters are not specified. + Do not set the parameter if you have specified the start and end parameters. - curl -X GET https://api.us-east-1.mbedcloud.com/v3/billing-report-firmware-updates?month=2018-07 - \ + Fetch the data for the period in minutes, hours, days, weeks or months. - -H ''Authorization: Bearer '' + One week is normalized to 7 days. Sample values: 5m, 2h, 3d, 4w, 1mo, 3mo. - ```' - operationId: getBillingReportFirmwareUpdates - parameters: - - description: Queried year and month of billing report. + The allowed periods (inclusive) are 5m-141120m/1h-2352h/1d-98d/1w-14w/1mo-3mo.' in: query - name: month - pattern: ^\d{4}-\d{2}$ + name: period + required: false + type: string + - description: 'Group the data by this interval in minutes, hours, days, weeks + or months. + + One week is normalized to 7 days. Sample values: 5m, 2h, 3d, 4w, 1mo, 3mo. + + Minimum supported interval is 5 minutes. The specified interval must not + be greater than the specified range.' + in: query + name: interval required: true type: string + - default: 50 + description: Maximum number of statistics view records in one paginated response. + format: int32 + in: query + maximum: 1000 + minimum: 2 + name: limit + required: false + type: integer + - description: Results after specified record ID. + in: query + name: after + pattern: '[0-9a-fA-F]{32}' + required: false + type: string + - description: 'Record order. Acceptable values (case insensitive): ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string responses: 200: - description: The response includes the URL to download raw billing data - of the firmware updates. + description: Statistics view of Device Management usage for the currently + authenticated commercial account. examples: application/json: - filename: example.csv.gz - object: billing-report-firmware-updates - url: https://example.com/example.csv.gz + after: null + data: + - active_devices: 10 + firmware_updates: 4286 + id: 00000000000000000000016e7bcf1800 + object: billing-statistics + sda_tokens: 962 + timestamp: '2019-11-18T00:00:00.000Z' + - active_devices: 0 + firmware_updates: 6553 + id: 00000000000000000000016e80f57400 + object: billing-statistics + sda_tokens: 1440 + timestamp: '2019-11-19T00:00:00.000Z' + - active_devices: 0 + firmware_updates: 0 + id: 00000000000000000000016e861bd000 + object: billing-statistics + sda_tokens: 0 + timestamp: '2019-11-20T00:00:00.000Z' + has_more: false + limit: 50 + object: list + order: asc + total_count: 3 schema: - $ref: '#/definitions/BillingReportRawDataResponse' + $ref: '#/definitions/StatisticsViewResponse' 400: description: Bad request. examples: @@ -14338,7 +20479,7 @@ paths: code: 400 fields: - message: Parameter missing. - name: month + name: interval message: One of the request fields has failed validation. object: error request_id: example-request-id @@ -14357,7 +20498,7 @@ paths: schema: $ref: '#/definitions/UnauthorizedErrorResponse' 403: - description: Access forbidden if account is not commercial or subtenant. + description: Forbidden. examples: application/json: code: 403 @@ -14367,17 +20508,6 @@ paths: type: forbidden schema: $ref: '#/definitions/ForbiddenErrorResponse' - 404: - description: Firmware updates billing data not found. - examples: - application/json: - code: 404 - message: Firmware updates billing data not yet available. - object: error - request_id: example-request-id - type: report_not_found - schema: - $ref: '#/definitions/ReportNotFoundErrorResponse' 500: description: Internal server error. examples: @@ -14389,9 +20519,78 @@ paths: type: internal_error schema: $ref: '#/definitions/InternalServerErrorResponse' - summary: Get raw billing data of the firmware updates for the month. + summary: Get statistics view of Device Management usage. + tags: + - Usage - statistics x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml + /v3/branding-colors: + delete: + description: 'Delete account branding colors for all themes. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors -H + ''Authorization: Bearer ''`' + operationId: deleteAllColors + parameters: [] + produces: + - application/json + responses: + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete all colors. + tags: + - User interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/branding-colors/dark: + delete: + description: 'Delete account dark theme branding colors. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark + -H ''Authorization: Bearer ''`' + operationId: deleteAllDarkColors + parameters: [] + produces: + - application/json + responses: + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete colors in the dark theme. + tags: + - User interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: description: 'Retrieve the dark theme branding colors. @@ -14402,7 +20601,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getDarkColors @@ -14429,10 +20628,11 @@ paths: put: consumes: - application/json - description: "Update an array of dark theme branding colors.\n\n**Example:**\n\ - ```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark\ - \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ - \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"#f3f93e\" }]'\n```" + description: "Update an array of dark theme branding colors.\nNote: This\ + \ endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X\ + \ PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \\\n-H 'Authorization:\ + \ Bearer ' \\\n-H 'content-type: application/json' \\\n'[{ \"\ + reference\": \"primary\",\n \"color\": \"#f3f93e\" }]'\n```" operationId: bulkSetDarkColors parameters: - description: List of branding colors. @@ -14441,7 +20641,7 @@ paths: required: true schema: items: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/BrandingColorUpdate' type: array produces: - application/json @@ -14468,6 +20668,8 @@ paths: delete: description: 'Resets the branding color to its dark theme default. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14476,13 +20678,13 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: resetDarkColor parameters: - description: The name of the branding color. - enum: *id019 + enum: *id001 in: path name: reference required: true @@ -14519,13 +20721,13 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getDarkColor parameters: - description: The name of the branding color. - enum: *id019 + enum: *id001 in: path name: reference required: true @@ -14558,6 +20760,8 @@ paths: - application/json description: 'Update a dark theme branding color. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14566,7 +20770,7 @@ paths: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/primary \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -14576,7 +20780,7 @@ paths: operationId: setDarkColor parameters: - description: The name of the branding color. - enum: *id019 + enum: *id001 in: path name: reference required: true @@ -14615,6 +20819,39 @@ paths: - User interface configuration - colors x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/branding-colors/light: + delete: + description: 'Delete account light theme branding colors. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light + -H ''Authorization: Bearer ''`' + operationId: deleteAllLightColors + parameters: [] + produces: + - application/json + responses: + '204': + description: Colors have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account branding colors not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete colors in the light theme. + tags: + - User interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: description: 'Retrieve the light theme branding colors. @@ -14625,7 +20862,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getLightColors @@ -14652,9 +20889,10 @@ paths: put: consumes: - application/json - description: "Update an array of light theme branding colors.\n\n**Example:**\n\ - ```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light\ - \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ + description: "Update an array of light theme branding colors.\nNote:\ + \ This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl\ + \ -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \\\n\ + -H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\ \ \\\n'[{ \"reference\": \"primary\",\n \"color\": \"purple\" }]'\n```" operationId: bulkSetLightColors parameters: @@ -14664,7 +20902,7 @@ paths: required: true schema: items: - $ref: '#/definitions/BrandingColor' + $ref: '#/definitions/BrandingColorUpdate' type: array produces: - application/json @@ -14691,6 +20929,8 @@ paths: delete: description: 'Resets the branding color to its light theme default. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14699,13 +20939,13 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: resetLightColor parameters: - description: The name of the branding color. - enum: *id019 + enum: *id001 in: path name: reference required: true @@ -14742,13 +20982,13 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getLightColor parameters: - description: The name of the branding color. - enum: *id019 + enum: *id001 in: path name: reference required: true @@ -14781,6 +21021,8 @@ paths: - application/json description: 'Update light theme branding color. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14789,38 +21031,106 @@ paths: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/primary \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "color": "purple" }'' + + ```' + operationId: setLightColor + parameters: + - description: The name of the branding color. + enum: *id001 + in: path + name: reference + required: true + type: string + - description: The branding color. + in: body + name: body + required: true + schema: + $ref: '#/definitions/BrandingColor' + produces: + - application/json + responses: + '200': + description: Color has been set successfully. + schema: + $ref: '#/definitions/BrandingColor' + '400': + description: Error in input data format. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Color not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Updates light theme branding color. + tags: + - User interface configuration - colors + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/branding-images: + delete: + description: 'Delete account branding images for all themes. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-images -H + ''Authorization: Bearer ''`' + operationId: deleteAllImages + parameters: [] + produces: + - application/json + responses: + '204': + description: Images have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account branding images not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete all images. + tags: + - User interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/branding-images/dark: + delete: + description: 'Delete account dark theme branding images. + + Note: This endpoint is restricted to administrators. - -H ''content-type: application/json'' \ - -d ''{ "color": "purple" }'' + **Example usage:** - ```' - operationId: setLightColor - parameters: - - description: The name of the branding color. - enum: *id019 - in: path - name: reference - required: true - type: string - - description: The branding color. - in: body - name: body - required: true - schema: - $ref: '#/definitions/BrandingColor' + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-images/dark + -H ''Authorization: Bearer ''`' + operationId: deleteAllDarkImages + parameters: [] produces: - application/json responses: - '200': - description: Color has been set successfully. - schema: - $ref: '#/definitions/BrandingColor' - '400': - description: Error in input data format. - schema: - $ref: '#/definitions/ErrorResponse' + '204': + description: Images have been deleted successfully. '401': description: Authentication failure. schema: @@ -14830,14 +21140,13 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Color not found. + description: Account branding images not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Updates light theme branding color. + summary: Delete images in the dark theme. tags: - - User interface configuration - colors + - User interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/branding-images/dark: get: description: 'Retrieve metadata for all dark theme branding images. @@ -14846,7 +21155,7 @@ paths: `curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getAllDarkImageData @@ -14882,13 +21191,13 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getDarkImageData parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -14920,6 +21229,8 @@ paths: post: description: 'Revert an account branding image to dark theme default. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14928,13 +21239,13 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/clear \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: clearDarkImage parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -14968,6 +21279,8 @@ paths: description: 'Upload a new account branding image in the dark theme in PNG or JPEG format. + Note: This endpoint is restricted to administrators. + **Example:** @@ -14976,7 +21289,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/upload \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: image/png'' --data-binary ''@myimage.png'' @@ -14984,7 +21297,7 @@ paths: operationId: uploadDarkImage parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15033,12 +21346,14 @@ paths: post: consumes: - multipart/form-data - description: Upload a new account branding image as form data in the dark theme + description: 'Upload a new account branding image as form data in the dark theme in PNG or JPEG format. + + Note: This endpoint is restricted to administrators.' operationId: uploadDarkImageMultipart parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15083,6 +21398,39 @@ paths: - User interface configuration - images x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/branding-images/light: + delete: + description: 'Delete account light theme branding images. + + Note: This endpoint is restricted to administrators. + + + **Example usage:** + + `curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-images/light + -H ''Authorization: Bearer ''`' + operationId: deleteAllLightImages + parameters: [] + produces: + - application/json + responses: + '204': + description: Images have been deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Account branding images not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete images in the light theme. + tags: + - User interface configuration - images + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: description: 'Retrieve the metadata of all light theme branding images. @@ -15093,7 +21441,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getAllLightImageData @@ -15129,13 +21477,13 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getLightImageData parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15167,6 +21515,8 @@ paths: post: description: 'Revert an account branding image to light theme default. + Note: This endpoint is restricted to administrators. + **Example:** @@ -15175,13 +21525,13 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/clear \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: clearLightImage parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15215,6 +21565,8 @@ paths: description: 'Upload a new account light theme branding image in PNG or JPEG format. + Note: This endpoint is restricted to administrators. + **Example:** @@ -15223,7 +21575,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/upload \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: image/png'' --data-binary ''@myimage.png'' @@ -15231,7 +21583,7 @@ paths: operationId: uploadLightImage parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15280,12 +21632,14 @@ paths: post: consumes: - multipart/form-data - description: Upload a new account branding image as form data in the light theme - in PNG or JPEG format. + description: 'Upload a new account branding image as form data in the light + theme in PNG or JPEG format. + + Note: This endpoint is restricted to administrators.' operationId: uploadLightImageMultipart parameters: - description: Name of the branding images (icon or picture). - enum: *id020 + enum: *id026 in: path name: reference required: true @@ -15342,7 +21696,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ``` @@ -15352,7 +21706,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments?device_id__eq=01612df56f3b0a580a010fc700000000 \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getCertificateEnrollments @@ -15509,7 +21863,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments/01612df56f3b0a580a010fc700000000 \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getCertificateEnrollment @@ -15552,59 +21906,53 @@ paths:
- **Example usage:** - + **Example:** ``` - curl \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations + \ - -H ''authorization: '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json;charset=UTF-8'' \ - https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \ - ``` +
+ ``` - curl \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms + \ - -H ''authorization: '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json;charset=UTF-8'' \ - https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms - \ - ``` - Note: This endpoint does not implement pagination and therefore, list control - parameters such as `limit` or `after` will be ignored by the system. - - ' + **Note:** This endpoint does not implement pagination, and therefore ignores + list control parameters such as `limit` or `after`.' operationId: getCertificateIssuerConfigs parameters: - - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. + - description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. in: query maximum: 1000 minimum: 2 name: limit type: integer - - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' in: query name: order type: string - - description: The ID of The item after which to retrieve the next page. + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`' + `total_count`.' in: query name: include type: string @@ -15633,21 +21981,20 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Get certificate issuer configurations. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-filter: reference: - eq x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml post: - description: "Configure the certificate issuer to be used when creating the\ - \ device custom certificates.\n
\n**Example usage:**\n\n```\ncurl -X POST\ - \ \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8'\ - \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations\ + description: "Configure the certificate issuer to use when creating device custom\ + \ certificates.\n
\n**Example:**\n\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ \ \\\n-d '{\n \"reference\": \"customer.dlms\",\n \"certificate_issuer_id\"\ - : \"01621a36719d507b9d48a91b00000000\"\n}'\n```\n" + : \"01621a36719d507b9d48a91b00000000\"\n}'\n```" operationId: createCertificateIssuerConfig parameters: - - description: Certificate issuer configuration request + - description: Certificate issuer configuration request. in: body name: CreateCertificateIssuerConfig required: true @@ -15671,24 +22018,20 @@ paths: schema: $ref: '#/definitions/ErrorObjectResponse' '409': - description: 'A certificate issuer configuration with this reference already + description: A certificate issuer configuration with this reference already exists. - - ' schema: $ref: '#/definitions/ErrorObjectResponse' summary: Create certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/certificate-issuer-configurations/lwm2m: get: - description: 'Provides the configured certificate issuer to be used when creating + description: 'Provides the configured certificate issuer used when creating device - certificates for LwM2M communication.
- - ' + certificates for LwM2M.' operationId: getCertificateIssuerConfig responses: '200': @@ -15709,15 +22052,14 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Get certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml put: - description: "Configure the certificate issuer to be used when creating device\ - \ certificates\nfor LwM2M communication.\n
\n**Example usage:**\n\n```\n\ - curl -X PUT \\\n-H 'authorization: ' \\\n-H 'content-type:\ - \ application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations/lwm2m\ + description: "Configure the certificate issuer used when creating device certificates\n\ + for LwM2M.\n
\n**Example:**\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations/lwm2m\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ \ \\\n-d '{\n \"certificate_issuer_id\": \"01621a36719d507b9d48a91b00000000\"\ - \n}'\n```\n" + \n}'\n```" operationId: updateCertificateIssuerConfig parameters: - description: Certificate Issuer Configuration Request @@ -15749,21 +22091,17 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Update certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}: delete: - description: 'Delete the configured certificate issuer configuration. - - You can only delete the configurations of custom certificates. + description: 'Delete certificate issuer configuration. - ' + You can only delete custom certificate configurations.' operationId: deleteCertificateIssuerConfigByID parameters: - - &id021 - description: 'The ID of the certificate issuer configuration. - - ' + - &id027 + description: Certificate issuer ID configuration. in: path name: certificate-issuer-configuration-id required: true @@ -15789,15 +22127,13 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Delete certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml get: - description: 'Provides the configured certificate issuer. - - ' + description: Provides the configured certificate issuer. operationId: getCertificateIssuerConfigByID parameters: - - *id021 + - *id027 responses: '200': description: OK. @@ -15821,21 +22157,19 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Get certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml put: - description: 'Update the configured certificate issuer configuration. - - ' + description: Update certificate issuer configuration. operationId: updateCertificateIssuerConfigByID parameters: - - description: Certificate issuer configuration request + - description: Certificate issuer configuration request. in: body name: CertificateIssuerConfigRequest required: true schema: $ref: '#/definitions/CertificateIssuerConfigRequest' - - *id021 + - *id027 responses: '200': description: OK. @@ -15859,36 +22193,31 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Update certificate issuer configuration. tags: - - Certificate Issuers Activation + - Security and identity - certificate issuer configurations x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/certificate-issuers: get: - description: 'Note: This endpoint does not implement pagination and therefore, - list control parameters such as `limit` or `after` will be ignored by the - system. - - ' + description: '**Note:** This endpoint does not use pagination, and therefore + ignores list control parameters such as `limit` or `after`.' operationId: getCertificateIssuers parameters: - - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. + - description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. in: query maximum: 1000 minimum: 2 name: limit type: integer - - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' in: query name: order type: string - - description: The ID of The item after which to retrieve the next page. + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`' + `total_count`.' in: query name: include type: string @@ -15907,15 +22236,15 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Get certificate issuers list. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml post: - description: "Create a certificate issuer.\nThe maximum number of issuers is\ - \ limited to 20 per account.\nMultiple certificate issuers of the same issuer\ - \ type can be created, provided they have a different name. This allows verification\ - \ of the certificate issuer configuration before activating it.\n
\n**Example\ - \ usage:**\n\n```\ncurl -X POST \\\n-H 'authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers\ + description: "Create a certificate issuer.\n
\nThe maximum number of issuers\ + \ is limited to 20 per account.\n
\nYou can create multiple certificate\ + \ issuers of the same type, provided they have different names. This allows\ + \ verification of the certificate issuer configuration before activation.\n\ +
\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ \ \\\n-d '{\n \"issuer_type\": \"GLOBAL_SIGN\",\n \"name\": \"GS Issuer\"\ ,\n \"description\": \"Sample GlobalSign certificate issuer\",\n \"issuer_attributes\"\ : null,\n \"issuer_credentials\": {\n \"api_key\": \"e510e289e6cd8947\"\ @@ -15936,7 +22265,7 @@ paths: nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\\\ n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\\\ n-----END RSA PRIVATE KEY-----\",\n \"passphrase\": \"helloworld\"\n\ - \ }\n}'\n```\n" + \ }\n}'\n```" operationId: createCertificateIssuer parameters: - description: Certificate issuer request. @@ -15952,9 +22281,7 @@ paths: $ref: '#/definitions/CertificateIssuerInfo' '400': description: 'Validation error: The data used to create the certificate - issuer failed validation. - - ' + issuer failed validation.' schema: $ref: '#/definitions/ErrorObjectResponse' '401': @@ -15966,20 +22293,16 @@ paths: schema: $ref: '#/definitions/ErrorObjectResponse' '409': - description: 'Conflict. A certificate issuer with this name already exists. - - ' + description: Conflict. A certificate issuer with this name already exists. schema: $ref: '#/definitions/ErrorObjectResponse' '424': - description: 'The request failed due to customer configured external service. - - ' + description: The request failed due to customer configured external service. schema: $ref: '#/definitions/ErrorObjectResponse' summary: Create certificate issuer. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/certificate-issuers/{certificate-issuer-id}: delete: @@ -15987,27 +22310,21 @@ paths:
- **Example usage:** - + **Example:** ``` - curl -X DELETE \ - - -H ''authorization: '' \ - - https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000 + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000 + \ - ``` + -H ''Authorization: Bearer '' \ - ' + ```' operationId: deleteCertificateIssuer parameters: - - description: 'Certificate issuer ID.
The ID of the certificate issuer. - - An active certificate issuer may not be deleted. + - description: 'Certificate issuer ID. - ' + An active certificate issuer cannot be deleted.' in: path name: certificate-issuer-id required: true @@ -16016,9 +22333,7 @@ paths: '204': description: Certificate issuer deleted. '400': - description: 'Validation error: An active certificate issuer cannot be deleted. - - ' + description: 'Validation error: An active certificate issuer cannot be deleted.' schema: $ref: '#/definitions/ErrorObjectResponse' '401': @@ -16035,16 +22350,12 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Delete certificate issuer. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml get: operationId: getCertificateIssuer parameters: - - description: 'Certificate issuer ID. - - The ID of the certificate issuer. - - ' + - description: Certificate issuer ID. in: path name: certificate-issuer-id required: true @@ -16056,9 +22367,7 @@ paths: $ref: '#/definitions/CertificateIssuerInfo' '400': description: 'Validation error: The data used to get the certificate issuer - failed validation. - - ' + failed validation.' schema: $ref: '#/definitions/ErrorObjectResponse' '401': @@ -16075,19 +22384,17 @@ paths: $ref: '#/definitions/ErrorObjectResponse' summary: Get certificate issuer by ID. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml put: - description: "Update a certificate issuer.\n
\n**Example usage:**\n\n```\n\ - curl -X PUT \\\n-H 'authorization: ' \\\n-H 'content-type:\ - \ application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000\ + description: "Update a certificate issuer.\n
\n**Example:**\n\n```\ncurl\ + \ -X PUT https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ \ \\\n-d '{\n \"description\": \"Sample GlobalSign certificate issuer - updated.\"\ - ,\n \"name\": \"GlobalSign Issuer\"\n}'\n```\n" + ,\n \"name\": \"GlobalSign Issuer\"\n}'\n```" operationId: updateCertificateIssuer parameters: - - description: 'Certificate issuer ID.
The ID of the certificate issuer. - - ' + - description: Certificate issuer ID. in: path name: certificate-issuer-id required: true @@ -16105,9 +22412,7 @@ paths: $ref: '#/definitions/CertificateIssuerInfo' '400': description: 'Validation error: The data used to update the certificate - issuer failed validation. - - ' + issuer failed validation.' schema: $ref: '#/definitions/ErrorObjectResponse' '401': @@ -16123,28 +22428,22 @@ paths: schema: $ref: '#/definitions/ErrorObjectResponse' '409': - description: 'Conflict. A certificate issuer with this name already exists. - - ' + description: Conflict. A certificate issuer with this name already exists. schema: $ref: '#/definitions/ErrorObjectResponse' '424': - description: 'The request failed due to customer configured external service. - - ' + description: The request failed due to customer-configured external service. schema: $ref: '#/definitions/ErrorObjectResponse' summary: Update certificate issuer. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/certificate-issuers/{certificate-issuer-id}/verify: post: - description: 'A utility API that can be used to validate the user configuration - before activating a certificate issuer. - - Verifies that the certificate issuer is accessible and can be used to generate - certificates by Device Management. + description: 'Validates the certificate issuer by sending a signing request + for a test certificate. This should be done before the configuration is made + active.
@@ -16152,31 +22451,25 @@ paths: The API requests the 3rd party CA to sign a test certificate. - For some 3rd party CAs, this operation may make use of the account quota. + For some 3rd party CAs, this operation may use the account quota.
- **Example usage:** - + **Example:** ``` - curl -X POST \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify + \ - -H ''authorization: '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json;charset=UTF-8'' \ - https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify - - ``` - - ' + ```' operationId: verifyCertificateIssuer parameters: - - description: 'Certificate issuer ID.
The ID of the certificate issuer. - - ' + - description: Certificate issuer ID. in: path name: certificate-issuer-id required: true @@ -16203,14 +22496,12 @@ paths: schema: $ref: '#/definitions/ErrorObjectResponse' '424': - description: 'The request failed due to customer configured external service. - - ' + description: The request failed due to customer configured external service. schema: $ref: '#/definitions/ErrorObjectResponse' summary: Verify certificate issuer. tags: - - Certificate Issuers + - Security and identity - certificate issuers x-origin: /home/circleci/project/cloud-vault/public/swagger.yaml /v3/developer-certificates: post: @@ -16219,7 +22510,7 @@ paths: **Note:** The number of developer certificates allowed per account is limited. - Please see [Using your own certificate authority](../provisioning-process/using-CA.html). + Please see [Setting up a Certificate Authority](https://www.pelion.com/docs/device-management/current/provisioning-process/integrating-with-a-third-party-ca.html). **Example:** @@ -16229,7 +22520,7 @@ paths: curl -X POST http://api.us-east-1.mbedcloud.com/v3/developer-certificates \ - -H "Authorization: Bearer " \ + -H "Authorization: Bearer " \ -H "content-type: application/json" \ @@ -16522,7 +22813,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Create a new developer certificate to connect to the bootstrap server. tags: - - Device security - developer class certificates + - Security and identity - developer class certificates x-origin: /home/circleci/project/connector-ca/public/swagger.yaml /v3/developer-certificates/{developerCertificateId}: get: @@ -16537,7 +22828,7 @@ paths: curl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' operationId: getDeveloperCertificate @@ -16798,7 +23089,7 @@ paths: summary: Fetch an existing developer certificate to connect to the bootstrap server. tags: - - Device security - developer class certificates + - Security and identity - developer class certificates x-origin: /home/circleci/project/connector-ca/public/swagger.yaml /v3/device-block-categories/: get: @@ -16808,7 +23099,7 @@ paths: **Example:** - Get all defined categories of why device is blocked from the device management + Get all defined device suspension categories: ``` @@ -16821,7 +23112,7 @@ paths: operationId: Block_Categories_list parameters: - description: This endpoint doesn't support paging. Parameter is accepted for - API compatibility. Value is ignored + API compatibility. Value is ignored. in: query maximum: 1000 minimum: 2 @@ -16832,7 +23123,7 @@ paths: name: order type: string - description: This endpoint doesn't support paging. Parameter is accepted for - API compatibility. Value is ignored + API compatibility. Value is ignored. in: query name: after type: string @@ -16918,133 +23209,19 @@ paths: 200: description: OK schema: - $ref: '#/definitions/DeviceBlockCategory' - 401: - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - 404: - description: Not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Get a device block category. - tags: - - Device directory - lifecycle - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-enrollment-denials: - get: - description: 'This produces a list of failed attempts to bootstrap using a particular - certificate which is blacklisted (trusted_certificate). - - Returned list can be filtered by endpoint name. Trusted certificate ID filter - is required. - - - **Example usage:** - - ``` - - curl -X GET -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials?trusted_certificate_id__eq={cert-id}&endpoint_name__eq={endpoint_name} - - ``` - - ' - operationId: listEnrollmentDenialAttempts - parameters: - - description: filtering based on trusted certificate id - in: query - name: trusted_certificate_id__eq - required: true - type: string - - description: filtering based on endpoint name - in: query - name: endpoint_name__eq - type: string - - description: Optional parameter for pagination. Denied device ID. - in: query - name: after - type: string - - description: Optional parameter for pagination. - enum: - - ASC - - DESC - in: query - name: order - type: string - - description: Optional parameter for pagination. - in: query - name: limit - type: integer - produces: - - application/json - responses: - 200: - description: Query Success. Responding with List of Devices. - schema: - $ref: '#/definitions/DenialAttemptsResponse' - 401: - description: JWT validation failed. - schema: - $ref: '#/definitions/ErrorResponse' - 404: - description: ID set in pagination parameter `after` not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Return list of devices which were denied to bootstrap due to being - subjected to blacklisting. - tags: - - EnrollmentDenials - x-filter: - endpoint_name: - - eq - trusted_certificate_id: - - eq - x-origin: /home/circleci/project/enrollment-denial-service/public/swagger.yaml - /v3/device-enrollment-denials/{device_enrollment_denial_id}: - get: - description: 'Query for a single attempt to bootstrap with a blacklisted certificate - by ID. - - - **Example usage:** - - ``` - - curl -X GET -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials/{device_enrollment_denial_id} - - ``` - - ' - operationId: getEnrollmentDenialAttempt - parameters: - - description: id of the recorded failed bootstrap attempt - in: path - name: device_enrollment_denial_id - required: true - type: string - produces: - - application/json - responses: - 200: - description: Query Success. Responding with blacklisted device. - schema: - $ref: '#/definitions/BlackListedDeviceData' + $ref: '#/definitions/DeviceBlockCategory' 401: - description: JWT validation failed. + description: Unauthorized. schema: $ref: '#/definitions/ErrorResponse' 404: - description: ID not found. + description: Not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Query for a single device by ID + summary: Get a device block category. tags: - - EnrollmentDenials - x-origin: /home/circleci/project/enrollment-denial-service/public/swagger.yaml + - Device directory - lifecycle + x-origin: /home/circleci/project/device-directory/public/swagger.yml /v3/device-enrollments: get: description: 'Provides a list of pending and claimed enrollments. @@ -17056,7 +23233,7 @@ paths: curl -X GET \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ https://api.us-east-1.mbedcloud.com/v3/device-enrollments @@ -17068,7 +23245,7 @@ paths: curl -X GET \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ ''https://api.us-east-1.mbedcloud.com/v3/device-enrollments?limit=10'' @@ -17119,7 +23296,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Get a list of enrollments per account. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml post: description: 'When the device connects to the bootstrap server and provides @@ -17133,7 +23310,7 @@ paths: curl -X POST \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -17170,7 +23347,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Create a single enrollment. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-enrollments-bulk-deletes: post: @@ -17178,7 +23355,7 @@ paths: - multipart/form-data description: "With bulk delete, you can upload a `CSV` file containing a number\ \ of enrollment IDs to delete.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ - \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ + \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes\n\ \n```\n**To ensure your CSV file is valid:**\n1. The first line of the file\ \ (header) is ignored.\n1. Each line can contain comma-separated values, where\ @@ -17201,7 +23378,7 @@ paths: \ , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A\ \ file containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ , First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ - \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ + \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23,\ \ Too-short identity.\n\"\", Empty quotation marks are an invalid identity.\n\ \" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\ \ \", Whitespace inside quotation marks is not trimmed, causing an error.\n\ @@ -17230,7 +23407,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Bulk delete. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-enrollments-bulk-deletes/{id}: get: @@ -17278,7 +23455,7 @@ paths: curl -X GET \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes/{id} @@ -17312,7 +23489,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Get bulk delete entity. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-enrollments-bulk-uploads: post: @@ -17320,7 +23497,7 @@ paths: - multipart/form-data description: "With bulk upload, you can upload a `CSV` file containing a number\ \ of enrollment IDs.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ - \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ + \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads\n\ \n```\n **To ensure your CSV file is valid:**\n 1. The first line of the\ \ file (header) is ignored.\n 1. Each line can contain comma-separated values,\ @@ -17373,7 +23550,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Bulk upload. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-enrollments-bulk-uploads/{id}: get: @@ -17421,7 +23598,7 @@ paths: curl -X GET \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/{id} @@ -17455,14 +23632,14 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Get bulk upload entity. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-enrollments/{id}: delete: description: 'To free a device from your account, delete the enrollment claim. To bypass the device ownership, you need to delete the enrollment and factory reset the device. For more information, see [Transferring ownership using - First-to-Claim](../connecting/device-ownership-first-to-claim-by-enrollment-list.html). + First-to-Claim](https://www.pelion.com/docs/device-management/current/connecting/device-ownership-first-to-claim-by-enrollment-list.html).
@@ -17472,7 +23649,7 @@ paths: curl -X DELETE \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} @@ -17497,7 +23674,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Delete an enrollment by ID. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml get: description: 'Check detailed enrollment info, for example, date of claim or @@ -17510,7 +23687,7 @@ paths: curl -X GET \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} @@ -17537,35 +23714,19 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Get details of an single enrollment by ID. tags: - - Public API + - Device ownership - enrollments x-origin: /home/circleci/project/enrollment-service/public/swagger.yaml /v3/device-events/: get: - description: 'List all device events for an account. - - - **Example:** - - Following example gets device-events limiting returned results to max 5 events - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5 \ - - -H ''Authorization: Bearer '' - - ``` - - or to get events for certain device filter based on device_id: - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id= - \ - - -H ''Authorization: Bearer '' - - ```' + description: "List all or a filtered list of device events for the account.\ + \ Device events are events significant to operation or lifetime, such as creation,\ + \ firmware update, and suspension.\n\nTo see statistics for device connectivity\ + \ and usage, use the [Statistics API](https://www.pelion.com/docs/device-management-api/connect-statistics/).\n\ + \n **Example:**\n Following example gets device-events limiting returned results\ + \ to max 5 events\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5\ + \ \\\n -H 'Authorization: Bearer '\n ```\n or to get events for certain\ + \ device filter based on device_id:\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id=\ + \ \\\n -H 'Authorization: Bearer '\n ```" operationId: Device_Event_list parameters: - description: How many objects to retrieve in the page (2-1000). Limit values @@ -17591,7 +23752,7 @@ paths: - description: "URL-encoded query string parameter to filter returned data.\n\ \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ \ is made up of key/value pairs separated by ampersands. So for a query\ - \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ + \ of\n`key1=value1&key2=value2&key3=value3`, this is encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ \n###### Filterable fields:\n\nThe below table lists all filterable fields:\n\ \n\n \n \n \n \n \n \n\ @@ -17609,202 +23770,546 @@ paths: \ in *unencoded* form.\n\n###### By id:\n\n`id={id}`\n\n###### By state\ \ change:\n\n`state_change=[True|False]`\n\n###### By event type:\n\n`event_type={value}`\n\ \n###### On date-time fields:\n\nDate-time fields should be specified in\ - \ UTC RFC3339 format: `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\n\ + \ UTC RFC3339 format: `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\n\ + variations:\n\n* UTC RFC3339 with milliseconds, for example, 2016-11-30T16:25:12.1234Z.\n\ + * UTC RFC3339 without milliseconds, for example, 2016-11-30T16:25:12Z.\n\ + * UTC RFC3339 shortened - without milliseconds and punctuation, for example,\ + \ 20161130T162512Z.\n\nDate-time filtering supports three operators:\n\n\ + * Equality.\n* Greater than or equal to – field name suffixed with\ + \ `__gte`.\n* Less than or equal to – field name suffixed with `__lte`.\n\ + Lower and upper limits to a date-time range may be specified by including\ + \ both the `__gte` and `__lte` forms in\nthe filter:\n\n`{field name}[|__lte|__gte]={UTC\ + \ RFC3339 date-time}`\n\n##### Multi-field example\n\n`id=0158d38771f70000000000010010038c&state_change=True&date_time__gte=2016-11-30T16:25:12.1234Z`\n\ + \nEncoded:\n\n`?filter=id%3D0158d38771f70000000000010010038c%26state_change%3DTrue%26date_time__gte%3D2016-11-30T16%3A25%3A12.1234Z`\n\ + \n##### Filtering with filter operators\n\nString field filtering supports\ + \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ + * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ + \ of parameters must be comma-separated:\n\n`event_type__in=update.device.device-created,update.device.device-updated`" + in: query + name: filter + type: string + - description: in filter for the "date_time" field + in: query + name: date_time__in + type: string + - description: nin filter for the "date_time" field + in: query + name: date_time__nin + type: string + - description: lte filter for the "date_time" field + format: date-time + in: query + name: date_time__lte + type: string + - description: gte filter for the "date_time" field + format: date-time + in: query + name: date_time__gte + type: string + - description: eq filter for the "description" field + in: query + name: description__eq + type: string + - description: neq filter for the "description" field + in: query + name: description__neq + type: string + - description: in filter for the "description" field + in: query + name: description__in + type: string + - description: nin filter for the "description" field + in: query + name: description__nin + type: string + - description: eq filter for the "id" field + in: query + name: id__eq + type: string + - description: neq filter for the "id" field + in: query + name: id__neq + type: string + - description: in filter for the "id" field + in: query + name: id__in + type: string + - description: nin filter for the "id" field + in: query + name: id__nin + type: string + - description: eq filter for the "device_id" field + in: query + name: device_id__eq + type: string + - description: neq filter for the "device_id" field + in: query + name: device_id__neq + type: string + - description: in filter for the "device_id" field + in: query + name: device_id__in + type: string + - description: nin filter for the "device_id" field + in: query + name: device_id__nin + type: string + - description: eq filter for the "event_type" field + in: query + name: event_type__eq + type: string + - description: neq filter for the "event_type" field + in: query + name: event_type__neq + type: string + - description: in filter for the "event_type" field + in: query + name: event_type__in + type: string + - description: nin filter for the "event_type" field + in: query + name: event_type__nin + type: string + - description: eq filter for the "state_change" field + in: query + name: state_change__eq + type: boolean + - description: neq filter for the "state_change" field + in: query + name: state_change__neq + type: boolean + responses: + '200': + description: Request successful. + schema: + $ref: '#/definitions/DeviceEventPage' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find page. + summary: List all device events. + tags: + - Device directory - events + x-filter: + date_time: + - in + - nin + - lte + - gte + description: + - eq + - neq + - in + - nin + device_id: + - eq + - neq + - in + - nin + event_type: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + state_change: + - eq + - neq + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-events/{device_event_id}/: + get: + description: '"Retrieve a specific device event. See ''/v3/device-events/'' + for information on device events, and how to get the device_event_id." + + + **Example:** + + To fetch a specific event you can use the ''id'' field from ''/v3/device-events''. + Form of ''016c03d40a4e000000000001001003b4'' + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: Device_Event_retrieve + parameters: + - in: path + name: device_event_id + required: true + type: string + responses: + '200': + description: Retrieved result successfully. + schema: + $ref: '#/definitions/DeviceEventData' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find device. + summary: Retrieve a device event. + tags: + - Device directory - events + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-groups/: + get: + description: List all groups. + operationId: Group_list + parameters: + - description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + in: query + maximum: 1000 + minimum: 2 + name: limit + type: integer + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + in: query + name: order + type: string + - description: The ID of the item after which to retrieve the next page. + in: query + name: after + type: string + - description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + in: query + name: include + type: string + - description: "URL-encoded query string parameter to filter returned data.\n\ + \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ + \ is made up of key/value pairs separated by ampersands. So for a query\ + \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ + \n###### Filterable fields:\n\nThe table lists all filterable fields:\n\n\ +
Field= / __eq\ \ / __neq__in / __nin__lte / __gte
\n \n \n \n \n \n \n\ + \ \n \n \n \n \n \n \n \n \n \n\ + \ \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n
Field= / __eq /\ + \ __neq__in / __nin__lte / __gte
id\u2713\ + \u2713 
devices_count\u2713\u2713\u2713
name\u2713\u2713 
custom_attributes\u2713  
component_attributes\u2713  
created_at\u2713\u2713\u2713
updated_at\u2713\u2713\u2713
etag\u2713\u2713\u2713
\n \n\nThe examples below show the queries in\ + \ *unencoded* form.\n\n###### By device group properties:\n\n`name__eq=mygroup`\n\ + \n###### On date-time fields:\n\nDate-time fields should be specified in\ + \ UTC RFC3339 format `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\n\ variations:\n\n* UTC RFC3339 with milliseconds, for example, 2016-11-30T16:25:12.1234Z.\n\ * UTC RFC3339 without milliseconds, for example, 2016-11-30T16:25:12Z.\n\ * UTC RFC3339 shortened - without milliseconds and punctuation, for example,\ \ 20161130T162512Z.\n\nDate-time filtering supports three operators:\n\n\ * Equality.\n* Greater than or equal to – field name suffixed with\ \ `__gte`.\n* Less than or equal to – field name suffixed with `__lte`.\n\ - Lower and upper limits to a date-time range may be specified by including\ + \nLower and upper limits to a date-time range may be specified by including\ \ both the `__gte` and `__lte` forms in\nthe filter:\n\n`{field name}[|__lte|__gte]={UTC\ - \ RFC3339 date-time}`\n\n##### Multi-field example\n\n`id=0158d38771f70000000000010010038c&state_change=True&date_time__gte=2016-11-30T16:25:12.1234Z`\n\ - \nEncoded:\n\n`?filter=id%3D0158d38771f70000000000010010038c%26state_change%3DTrue%26date_time__gte%3D2016-11-30T16%3A25%3A12.1234Z`\n\ + \ RFC3339 date-time}`\n\n###### By device group custom attributes:\n\n`custom_attributes__{param}={value}`\n\ + \n`custom_attributes__tag=TAG1`\n\n###### By device group component attributes:\n\ + \n`component_attributes__{name}={version}`\n`component_attributes__{name}__{operator}={version}`\n\ + \n`component_attributes__ble=1.2.3`\n`component_attributes__main__gt=1.2.3`\n\ + \n##### Multi-field example\n\n`name__eq=mygroup&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \nEncoded:\n\n`?filter=name__eq%3Dmygroup%26created_at__gte%3D2016-11-30T16%3A25%3A12.1234Z%26created_at__lte%3D2016-12-30T00%3A00%3A00Z`\n\ \n##### Filtering with filter operators\n\nString field filtering supports\ \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n\n`event_type__in=update.device.device-created,update.device.device-updated`" + \ of parameters must be comma-separated:\n`name__in=group1,group2`" in: query name: filter type: string - - description: in filter for the "date_time" field + - description: eq filter for the "id" field in: query - name: date_time__in + name: id__eq type: string - - description: nin filter for the "date_time" field + - description: neq filter for the "id" field in: query - name: date_time__nin + name: id__neq type: string - - description: lte filter for the "date_time" field - format: date-time + - description: in filter for the "id" field in: query - name: date_time__lte + name: id__in type: string - - description: gte filter for the "date_time" field - format: date-time + - description: nin filter for the "id" field in: query - name: date_time__gte + name: id__nin type: string - - description: eq filter for the "description" field + - description: eq filter for the "devices_count" field in: query - name: description__eq - type: string - - description: neq filter for the "description" field + name: devices_count__eq + type: integer + - description: neq filter for the "devices_count" field in: query - name: description__neq - type: string - - description: in filter for the "description" field + name: devices_count__neq + type: integer + - description: in filter for the "devices_count" field in: query - name: description__in + name: devices_count__in type: string - - description: nin filter for the "description" field + - description: nin filter for the "devices_count" field in: query - name: description__nin + name: devices_count__nin type: string - - description: eq filter for the "id" field + - description: lte filter for the "devices_count" field in: query - name: id__eq - type: string - - description: neq filter for the "id" field + name: devices_count__lte + type: integer + - description: gte filter for the "devices_count" field in: query - name: id__neq - type: string - - description: in filter for the "id" field + name: devices_count__gte + type: integer + - description: eq filter for the "name" field in: query - name: id__in + name: name__eq type: string - - description: nin filter for the "id" field + - description: neq filter for the "name" field in: query - name: id__nin + name: name__neq type: string - - description: eq filter for the "device_id" field + - description: in filter for the "name" field in: query - name: device_id__eq + name: name__in type: string - - description: neq filter for the "device_id" field + - description: nin filter for the "name" field in: query - name: device_id__neq + name: name__nin type: string - - description: in filter for the "device_id" field + - description: in filter for the "created_at" field in: query - name: device_id__in + name: created_at__in type: string - - description: nin filter for the "device_id" field + - description: nin filter for the "created_at" field in: query - name: device_id__nin + name: created_at__nin type: string - - description: eq filter for the "event_type" field + - description: lte filter for the "created_at" field + format: date-time in: query - name: event_type__eq + name: created_at__lte type: string - - description: neq filter for the "event_type" field + - description: gte filter for the "created_at" field + format: date-time in: query - name: event_type__neq + name: created_at__gte type: string - - description: in filter for the "event_type" field + - description: in filter for the "updated_at" field in: query - name: event_type__in + name: updated_at__in type: string - - description: nin filter for the "event_type" field + - description: nin filter for the "updated_at" field in: query - name: event_type__nin + name: updated_at__nin type: string - - description: eq filter for the "state_change" field + - description: lte filter for the "updated_at" field + format: date-time in: query - name: state_change__eq - type: boolean - - description: neq filter for the "state_change" field + name: updated_at__lte + type: string + - description: gte filter for the "updated_at" field + format: date-time in: query - name: state_change__neq - type: boolean + name: updated_at__gte + type: string responses: '200': - description: Request successful. + description: Ok. schema: - $ref: '#/definitions/DeviceEventPage' - '400': - description: Bad request. + $ref: '#/definitions/DeviceGroupPage' '401': - description: Not authenticated. + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Unable to find page. - summary: List all device events. + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: List all groups. tags: - - Device directory - events + - Device directory - groups x-filter: - date_time: + created_at: - in - nin - lte - gte - description: + devices_count: - eq - neq - in - nin - device_id: + - lte + - gte + id: - eq - neq - in - nin - event_type: + name: - eq - neq - in - nin - id: - - eq - - neq + updated_at: - in - nin - state_change: - - eq - - neq + - lte + - gte + x-origin: /home/circleci/project/device-directory/public/swagger.yml + post: + description: Create a group. + operationId: Group_create + parameters: + - description: Group + in: body + name: group + required: true + schema: + properties: + custom_attributes: *id028 + description: *id029 + name: *id030 + type: object + responses: + '201': + description: Created. + schema: + $ref: '#/definitions/DeviceGroup' + '400': + description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: Conflict - Group name already exists. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a group. + tags: + - Device directory - groups + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-groups/{device-group-id}/: + delete: + description: Delete a group. This deletes the group, but not the devices in + the group. + operationId: Group_delete + parameters: + - description: The ID of the group. + in: path + name: device-group-id + required: true + type: string + responses: + '204': + description: Success - group deleted. + '401': + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete a group. + tags: + - Device directory - groups x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-events/{device_event_id}/: get: - description: 'Retrieve a specific device event. - - - **Example:** - - To fetch a specific event you can use the ''id'' field form the ''/v3/device-events''. - Form of ''016c03d40a4e000000000001001003b4'' - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: Device_Event_retrieve + description: Returns [DeviceGroup](https://www.pelion.com/docs/device-management-api/device-directory/) + info what contains info of the group, for example, name and updated date. + To list the devices in the group, use '/v3/device-groups/{device-group-id}/devices/'. + operationId: Group_retrieve + parameters: + - description: The group ID + in: path + name: device-group-id + required: true + type: string + responses: + '200': + description: Ok. + schema: + $ref: '#/definitions/DeviceGroup' + '400': + description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get a group. + tags: + - Device directory - groups + x-origin: /home/circleci/project/device-directory/public/swagger.yml + put: + description: Modify the attributes of a group, such as the description. + operationId: Group_update parameters: - in: path - name: device_event_id + name: device-group-id required: true type: string + - description: Group + in: body + name: group + required: true + schema: + properties: + custom_attributes: *id028 + description: *id029 + name: *id030 + type: object responses: '200': - description: Retrieved result successfully. + description: Ok. schema: - $ref: '#/definitions/DeviceEventData' + $ref: '#/definitions/DeviceGroup' '400': description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated. + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Unable to find device. - summary: Retrieve a device event. + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Modify the attributes of a group. tags: - - Device directory - events + - Device directory - groups x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-groups/: + /v3/device-groups/{device-group-id}/devices/: get: - description: List all groups. - operationId: Group_list + description: Get a page of devices in a specified group. + operationId: Group_members_retrieve parameters: + - in: path + name: device-group-id + required: true + type: string - description: How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit. in: query @@ -17825,102 +24330,199 @@ paths: in: query name: include type: string - - description: "URL-encoded query string parameter to filter returned data.\n\ - \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ - \ is made up of key/value pairs separated by ampersands. So for a query\ - \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ - \n###### Filterable fields:\n\nThe table lists all filterable fields:\n\n\ - \n \n \n \n \n \n \n\ - \ \n \n \n \n \n \n \n \n \n \n\ - \ \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n \n \n
Field= / __eq /\ - \ __neq__in / __nin__lte / __gte
id\u2713\ - \u2713 
devices_count\u2713\u2713\u2713
name\u2713\u2713 
custom_attributes\u2713  
created_at\u2713\u2713\u2713
updated_at\u2713\u2713\u2713
etag\u2713\u2713\u2713\ -
\n \n\nThe examples below show\ - \ the queries in *unencoded* form.\n\n###### By device group properties:\n\ - \n`name__eq=mygroup`\n\n###### On date-time fields:\n\nDate-time fields\ - \ should be specified in UTC RFC3339 format `YYYY-MM-DDThh:mm:ss.msZ`. There\ - \ are three permitted\nvariations:\n\n* UTC RFC3339 with milliseconds, for\ - \ example, 2016-11-30T16:25:12.1234Z.\n* UTC RFC3339 without milliseconds,\ - \ for example, 2016-11-30T16:25:12Z.\n* UTC RFC3339 shortened - without\ - \ milliseconds and punctuation, for example, 20161130T162512Z.\n\nDate-time\ - \ filtering supports three operators:\n\n* Equality.\n* Greater than or\ - \ equal to – field name suffixed with `__gte`.\n* Less than or equal\ - \ to – field name suffixed with `__lte`.\n\nLower and upper limits\ - \ to a date-time range may be specified by including both the `__gte` and\ - \ `__lte` forms in\nthe filter:\n\n`{field name}[|__lte|__gte]={UTC RFC3339\ - \ date-time}`\n\n###### By device group custom attributes:\n\n`custom_attributes__{param}={value}`\n\ - \n`custom_attributes__tag=TAG1`\n\n##### Multi-field example\n\n`name__eq=mygroup&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \nEncoded:\n\n`?filter=name__eq%3Dmygroup%26created_at__gte%3D2016-11-30T16%3A25%3A12.1234Z%26created_at__lte%3D2016-12-30T00%3A00%3A00Z`\n\ - \n##### Filtering with filter operators\n\nString field filtering supports\ - \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ - * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n`name__in=group1,group2`" + - description: eq filter for the "lifecycle_status" field in: query - name: filter + name: lifecycle_status__eq type: string - - description: eq filter for the "id" field + - description: neq filter for the "lifecycle_status" field in: query - name: id__eq + name: lifecycle_status__neq type: string - - description: neq filter for the "id" field + - description: in filter for the "lifecycle_status" field in: query - name: id__neq + name: lifecycle_status__in type: string - - description: in filter for the "id" field + - description: nin filter for the "lifecycle_status" field in: query - name: id__in + name: lifecycle_status__nin type: string - - description: nin filter for the "id" field + - description: eq filter for the "operator_suspended" field in: query - name: id__nin + name: operator_suspended__eq + type: boolean + - description: neq filter for the "operator_suspended" field + in: query + name: operator_suspended__neq + type: boolean + - description: eq filter for the "last_operator_suspended_category" field + in: query + name: last_operator_suspended_category__eq type: string - - description: eq filter for the "devices_count" field + - description: neq filter for the "last_operator_suspended_category" field in: query - name: devices_count__eq - type: integer - - description: neq filter for the "devices_count" field + name: last_operator_suspended_category__neq + type: string + - description: in filter for the "last_operator_suspended_category" field in: query - name: devices_count__neq - type: integer - - description: in filter for the "devices_count" field + name: last_operator_suspended_category__in + type: string + - description: nin filter for the "last_operator_suspended_category" field in: query - name: devices_count__in + name: last_operator_suspended_category__nin type: string - - description: nin filter for the "devices_count" field + - description: in filter for the "last_operator_suspended_updated_at" field in: query - name: devices_count__nin + name: last_operator_suspended_updated_at__in type: string - - description: lte filter for the "devices_count" field + - description: nin filter for the "last_operator_suspended_updated_at" field in: query - name: devices_count__lte - type: integer - - description: gte filter for the "devices_count" field + name: last_operator_suspended_updated_at__nin + type: string + - description: lte filter for the "last_operator_suspended_updated_at" field + format: date-time in: query - name: devices_count__gte - type: integer - - description: eq filter for the "name" field + name: last_operator_suspended_updated_at__lte + type: string + - description: gte filter for the "last_operator_suspended_updated_at" field + format: date-time + in: query + name: last_operator_suspended_updated_at__gte + type: string + - description: eq filter for the "system_suspended" field + in: query + name: system_suspended__eq + type: boolean + - description: neq filter for the "system_suspended" field + in: query + name: system_suspended__neq + type: boolean + - description: eq filter for the "last_system_suspended_category" field + in: query + name: last_system_suspended_category__eq + type: string + - description: neq filter for the "last_system_suspended_category" field + in: query + name: last_system_suspended_category__neq + type: string + - description: in filter for the "last_system_suspended_category" field + in: query + name: last_system_suspended_category__in + type: string + - description: nin filter for the "last_system_suspended_category" field + in: query + name: last_system_suspended_category__nin + type: string + - description: in filter for the "last_system_suspended_updated_at" field + in: query + name: last_system_suspended_updated_at__in + type: string + - description: nin filter for the "last_system_suspended_updated_at" field + in: query + name: last_system_suspended_updated_at__nin + type: string + - description: lte filter for the "last_system_suspended_updated_at" field + format: date-time + in: query + name: last_system_suspended_updated_at__lte + type: string + - description: gte filter for the "last_system_suspended_updated_at" field + format: date-time + in: query + name: last_system_suspended_updated_at__gte + type: string + - description: eq filter for the "account_id" field + in: query + name: account_id__eq + type: string + - description: neq filter for the "account_id" field + in: query + name: account_id__neq + type: string + - description: in filter for the "account_id" field + in: query + name: account_id__in + type: string + - description: nin filter for the "account_id" field + in: query + name: account_id__nin + type: string + - description: eq filter for the "auto_update" field + in: query + name: auto_update__eq + type: boolean + - description: neq filter for the "auto_update" field + in: query + name: auto_update__neq + type: boolean + - description: in filter for the "bootstrap_expiration_date" field + in: query + name: bootstrap_expiration_date__in + type: string + - description: nin filter for the "bootstrap_expiration_date" field + in: query + name: bootstrap_expiration_date__nin + type: string + - description: lte filter for the "bootstrap_expiration_date" field + format: date + in: query + name: bootstrap_expiration_date__lte + type: string + - description: gte filter for the "bootstrap_expiration_date" field + format: date + in: query + name: bootstrap_expiration_date__gte + type: string + - description: in filter for the "bootstrapped_timestamp" field + in: query + name: bootstrapped_timestamp__in + type: string + - description: nin filter for the "bootstrapped_timestamp" field + in: query + name: bootstrapped_timestamp__nin + type: string + - description: lte filter for the "bootstrapped_timestamp" field + format: date-time + in: query + name: bootstrapped_timestamp__lte + type: string + - description: gte filter for the "bootstrapped_timestamp" field + format: date-time + in: query + name: bootstrapped_timestamp__gte + type: string + - description: eq filter for the "ca_id" field + in: query + name: ca_id__eq + type: string + - description: neq filter for the "ca_id" field + in: query + name: ca_id__neq + type: string + - description: in filter for the "ca_id" field + in: query + name: ca_id__in + type: string + - description: nin filter for the "ca_id" field + in: query + name: ca_id__nin + type: string + - description: in filter for the "connector_expiration_date" field in: query - name: name__eq + name: connector_expiration_date__in type: string - - description: neq filter for the "name" field + - description: nin filter for the "connector_expiration_date" field in: query - name: name__neq + name: connector_expiration_date__nin type: string - - description: in filter for the "name" field + - description: lte filter for the "connector_expiration_date" field + format: date in: query - name: name__in + name: connector_expiration_date__lte type: string - - description: nin filter for the "name" field + - description: gte filter for the "connector_expiration_date" field + format: date in: query - name: name__nin + name: connector_expiration_date__gte type: string - description: in filter for the "created_at" field in: query @@ -17940,616 +24542,876 @@ paths: in: query name: created_at__gte type: string - - description: in filter for the "updated_at" field + - description: eq filter for the "deployed_state" field in: query - name: updated_at__in + name: deployed_state__eq type: string - - description: nin filter for the "updated_at" field + - description: neq filter for the "deployed_state" field in: query - name: updated_at__nin + name: deployed_state__neq type: string - - description: lte filter for the "updated_at" field - format: date-time + - description: in filter for the "deployed_state" field in: query - name: updated_at__lte + name: deployed_state__in type: string - - description: gte filter for the "updated_at" field - format: date-time + - description: nin filter for the "deployed_state" field in: query - name: updated_at__gte + name: deployed_state__nin type: string - responses: - '200': - description: Ok. - schema: - $ref: '#/definitions/DeviceGroupPage' - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Not Found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: List all groups. - tags: - - Device directory - groups - x-filter: - created_at: - - in - - nin - - lte - - gte - devices_count: - - eq - - neq - - in - - nin - - lte - - gte - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - updated_at: - - in - - nin - - lte - - gte - x-origin: /home/circleci/project/device-directory/public/swagger.yml - post: - description: Create a group. - operationId: Group_create - parameters: - - description: Group - in: body - name: group - required: true - schema: - properties: - custom_attributes: *id022 - description: *id023 - name: *id024 - type: object - responses: - '201': - description: Created. - schema: - $ref: '#/definitions/DeviceGroup' - '400': - description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: Conflict - Group name already exists. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Create a group. - tags: - - Device directory - groups - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-groups/{device-group-id}/: - delete: - description: Delete a group. - operationId: Group_delete - parameters: - - description: The ID of the group. - in: path - name: device-group-id - required: true + - description: eq filter for the "deployment" field + in: query + name: deployment__eq type: string - responses: - '204': - description: Success - group deleted. - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Not Found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Delete a group. - tags: - - Device directory - groups - x-origin: /home/circleci/project/device-directory/public/swagger.yml - get: - description: Get a group. - operationId: Group_retrieve - parameters: - - description: The group ID - in: path - name: device-group-id - required: true + - description: neq filter for the "deployment" field + in: query + name: deployment__neq type: string - responses: - '200': - description: Ok. - schema: - $ref: '#/definitions/DeviceGroup' - '400': - description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Not Found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Get a group. - tags: - - Device directory - groups - x-origin: /home/circleci/project/device-directory/public/swagger.yml - put: - description: Modify the attributes of a group. - operationId: Group_update - parameters: - - in: path - name: device-group-id - required: true + - description: in filter for the "deployment" field + in: query + name: deployment__in type: string - - description: Group - in: body - name: group - required: true - schema: - properties: - custom_attributes: *id022 - description: *id023 - name: *id024 - type: object - responses: - '200': - description: Ok. - schema: - $ref: '#/definitions/DeviceGroup' - '400': - description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Not Found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Modify the attributes of a group. - tags: - - Device directory - groups - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-groups/{device-group-id}/devices/: - get: - description: Get a page of devices. - operationId: Group_members_retrieve - parameters: - - in: path - name: device-group-id - required: true + - description: nin filter for the "deployment" field + in: query + name: deployment__nin type: string - - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + - description: eq filter for the "description" field + in: query + name: description__eq + type: string + - description: neq filter for the "description" field + in: query + name: description__neq + type: string + - description: in filter for the "description" field + in: query + name: description__in + type: string + - description: nin filter for the "description" field + in: query + name: description__nin + type: string + - description: eq filter for the "device_class" field + in: query + name: device_class__eq + type: string + - description: neq filter for the "device_class" field + in: query + name: device_class__neq + type: string + - description: in filter for the "device_class" field + in: query + name: device_class__in + type: string + - description: nin filter for the "device_class" field + in: query + name: device_class__nin + type: string + - description: eq filter for the "device_execution_mode" field + in: query + name: device_execution_mode__eq + type: integer + - description: neq filter for the "device_execution_mode" field in: query - maximum: 1000 - minimum: 2 - name: limit + name: device_execution_mode__neq type: integer - - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + - description: in filter for the "device_execution_mode" field in: query - name: order + name: device_execution_mode__in type: string - - description: The ID of the item after which to retrieve the next page. + - description: nin filter for the "device_execution_mode" field in: query - name: after + name: device_execution_mode__nin type: string - - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' + - description: eq filter for the "device_key" field in: query - name: include + name: device_key__eq type: string - - description: eq filter for the "lifecycle_status" field + - description: neq filter for the "device_key" field in: query - name: lifecycle_status__eq + name: device_key__neq type: string - - description: neq filter for the "lifecycle_status" field + - description: in filter for the "device_key" field in: query - name: lifecycle_status__neq + name: device_key__in type: string - - description: in filter for the "lifecycle_status" field + - description: nin filter for the "device_key" field in: query - name: lifecycle_status__in + name: device_key__nin type: string - - description: nin filter for the "lifecycle_status" field + - description: eq filter for the "endpoint_name" field in: query - name: lifecycle_status__nin + name: endpoint_name__eq type: string - - description: eq filter for the "operator_suspended" field + - description: neq filter for the "endpoint_name" field in: query - name: operator_suspended__eq - type: boolean - - description: neq filter for the "operator_suspended" field + name: endpoint_name__neq + type: string + - description: in filter for the "endpoint_name" field in: query - name: operator_suspended__neq - type: boolean - - description: eq filter for the "last_operator_suspended_category" field + name: endpoint_name__in + type: string + - description: nin filter for the "endpoint_name" field in: query - name: last_operator_suspended_category__eq + name: endpoint_name__nin type: string - - description: neq filter for the "last_operator_suspended_category" field + - description: eq filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__neq + name: endpoint_type__eq type: string - - description: in filter for the "last_operator_suspended_category" field + - description: neq filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__in + name: endpoint_type__neq type: string - - description: nin filter for the "last_operator_suspended_category" field + - description: in filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__nin + name: endpoint_type__in type: string - - description: in filter for the "last_operator_suspended_updated_at" field + - description: nin filter for the "endpoint_type" field in: query - name: last_operator_suspended_updated_at__in + name: endpoint_type__nin type: string - - description: nin filter for the "last_operator_suspended_updated_at" field + - description: in filter for the "enrolment_list_timestamp" field in: query - name: last_operator_suspended_updated_at__nin + name: enrolment_list_timestamp__in type: string - - description: lte filter for the "last_operator_suspended_updated_at" field - format: date-time + - description: nin filter for the "enrolment_list_timestamp" field in: query - name: last_operator_suspended_updated_at__lte + name: enrolment_list_timestamp__nin type: string - - description: gte filter for the "last_operator_suspended_updated_at" field + - description: lte filter for the "enrolment_list_timestamp" field format: date-time in: query - name: last_operator_suspended_updated_at__gte + name: enrolment_list_timestamp__lte type: string - - description: eq filter for the "system_suspended" field - in: query - name: system_suspended__eq - type: boolean - - description: neq filter for the "system_suspended" field - in: query - name: system_suspended__neq - type: boolean - - description: eq filter for the "last_system_suspended_category" field + - description: gte filter for the "enrolment_list_timestamp" field + format: date-time in: query - name: last_system_suspended_category__eq + name: enrolment_list_timestamp__gte type: string - - description: neq filter for the "last_system_suspended_category" field + - description: eq filter for the "firmware_checksum" field in: query - name: last_system_suspended_category__neq + name: firmware_checksum__eq type: string - - description: in filter for the "last_system_suspended_category" field + - description: neq filter for the "firmware_checksum" field in: query - name: last_system_suspended_category__in + name: firmware_checksum__neq type: string - - description: nin filter for the "last_system_suspended_category" field + - description: in filter for the "firmware_checksum" field in: query - name: last_system_suspended_category__nin + name: firmware_checksum__in type: string - - description: in filter for the "last_system_suspended_updated_at" field + - description: nin filter for the "firmware_checksum" field in: query - name: last_system_suspended_updated_at__in + name: firmware_checksum__nin type: string - - description: nin filter for the "last_system_suspended_updated_at" field + - description: eq filter for the "host_gateway" field in: query - name: last_system_suspended_updated_at__nin + name: host_gateway__eq type: string - - description: lte filter for the "last_system_suspended_updated_at" field - format: date-time + - description: neq filter for the "host_gateway" field in: query - name: last_system_suspended_updated_at__lte + name: host_gateway__neq type: string - - description: gte filter for the "last_system_suspended_updated_at" field - format: date-time + - description: in filter for the "host_gateway" field in: query - name: last_system_suspended_updated_at__gte + name: host_gateway__in type: string - - description: eq filter for the "account_id" field + - description: nin filter for the "host_gateway" field in: query - name: account_id__eq + name: host_gateway__nin type: string - - description: neq filter for the "account_id" field + - description: eq filter for the "id" field in: query - name: account_id__neq + name: id__eq type: string - - description: in filter for the "account_id" field + - description: neq filter for the "id" field in: query - name: account_id__in + name: id__neq type: string - - description: nin filter for the "account_id" field + - description: in filter for the "id" field in: query - name: account_id__nin + name: id__in type: string - - description: eq filter for the "auto_update" field - in: query - name: auto_update__eq - type: boolean - - description: neq filter for the "auto_update" field - in: query - name: auto_update__neq - type: boolean - - description: in filter for the "bootstrap_expiration_date" field + - description: nin filter for the "id" field in: query - name: bootstrap_expiration_date__in + name: id__nin type: string - - description: nin filter for the "bootstrap_expiration_date" field + - description: eq filter for the "manifest" field in: query - name: bootstrap_expiration_date__nin + name: manifest__eq type: string - - description: lte filter for the "bootstrap_expiration_date" field - format: date + - description: neq filter for the "manifest" field in: query - name: bootstrap_expiration_date__lte + name: manifest__neq type: string - - description: gte filter for the "bootstrap_expiration_date" field - format: date + - description: in filter for the "manifest" field in: query - name: bootstrap_expiration_date__gte + name: manifest__in type: string - - description: in filter for the "bootstrapped_timestamp" field + - description: nin filter for the "manifest" field in: query - name: bootstrapped_timestamp__in + name: manifest__nin type: string - - description: nin filter for the "bootstrapped_timestamp" field + - description: in filter for the "manifest_timestamp" field in: query - name: bootstrapped_timestamp__nin + name: manifest_timestamp__in type: string - - description: lte filter for the "bootstrapped_timestamp" field - format: date-time + - description: nin filter for the "manifest_timestamp" field in: query - name: bootstrapped_timestamp__lte + name: manifest_timestamp__nin type: string - - description: gte filter for the "bootstrapped_timestamp" field + - description: lte filter for the "manifest_timestamp" field format: date-time in: query - name: bootstrapped_timestamp__gte - type: string - - description: eq filter for the "ca_id" field - in: query - name: ca_id__eq + name: manifest_timestamp__lte type: string - - description: neq filter for the "ca_id" field + - description: gte filter for the "manifest_timestamp" field + format: date-time in: query - name: ca_id__neq + name: manifest_timestamp__gte type: string - - description: in filter for the "ca_id" field + - description: eq filter for the "mechanism" field in: query - name: ca_id__in + name: mechanism__eq type: string - - description: nin filter for the "ca_id" field + - description: neq filter for the "mechanism" field in: query - name: ca_id__nin + name: mechanism__neq type: string - - description: in filter for the "connector_expiration_date" field + - description: in filter for the "mechanism" field in: query - name: connector_expiration_date__in + name: mechanism__in type: string - - description: nin filter for the "connector_expiration_date" field + - description: nin filter for the "mechanism" field in: query - name: connector_expiration_date__nin + name: mechanism__nin type: string - - description: lte filter for the "connector_expiration_date" field - format: date + - description: eq filter for the "mechanism_url" field in: query - name: connector_expiration_date__lte + name: mechanism_url__eq type: string - - description: gte filter for the "connector_expiration_date" field - format: date + - description: neq filter for the "mechanism_url" field in: query - name: connector_expiration_date__gte + name: mechanism_url__neq type: string - - description: in filter for the "created_at" field + - description: in filter for the "mechanism_url" field in: query - name: created_at__in + name: mechanism_url__in type: string - - description: nin filter for the "created_at" field + - description: nin filter for the "mechanism_url" field in: query - name: created_at__nin + name: mechanism_url__nin type: string - - description: lte filter for the "created_at" field - format: date-time + - description: eq filter for the "name" field in: query - name: created_at__lte + name: name__eq type: string - - description: gte filter for the "created_at" field - format: date-time + - description: neq filter for the "name" field in: query - name: created_at__gte + name: name__neq type: string - - description: eq filter for the "deployed_state" field + - description: in filter for the "name" field in: query - name: deployed_state__eq + name: name__in type: string - - description: neq filter for the "deployed_state" field + - description: nin filter for the "name" field in: query - name: deployed_state__neq + name: name__nin type: string - - description: in filter for the "deployed_state" field + - description: eq filter for the "net_id" field in: query - name: deployed_state__in + name: net_id__eq type: string - - description: nin filter for the "deployed_state" field + - description: neq filter for the "net_id" field in: query - name: deployed_state__nin + name: net_id__neq type: string - - description: eq filter for the "deployment" field + - description: in filter for the "net_id" field in: query - name: deployment__eq + name: net_id__in type: string - - description: neq filter for the "deployment" field + - description: nin filter for the "net_id" field in: query - name: deployment__neq + name: net_id__nin type: string - - description: in filter for the "deployment" field + - description: eq filter for the "serial_number" field in: query - name: deployment__in + name: serial_number__eq type: string - - description: nin filter for the "deployment" field + - description: neq filter for the "serial_number" field in: query - name: deployment__nin + name: serial_number__neq type: string - - description: eq filter for the "description" field + - description: in filter for the "serial_number" field in: query - name: description__eq + name: serial_number__in type: string - - description: neq filter for the "description" field + - description: nin filter for the "serial_number" field in: query - name: description__neq + name: serial_number__nin type: string - - description: in filter for the "description" field + - description: eq filter for the "state" field in: query - name: description__in + name: state__eq type: string - - description: nin filter for the "description" field + - description: neq filter for the "state" field in: query - name: description__nin + name: state__neq type: string - - description: eq filter for the "device_class" field + - description: in filter for the "state" field in: query - name: device_class__eq + name: state__in type: string - - description: neq filter for the "device_class" field + - description: nin filter for the "state" field in: query - name: device_class__neq + name: state__nin type: string - - description: in filter for the "device_class" field + - description: in filter for the "updated_at" field in: query - name: device_class__in + name: updated_at__in type: string - - description: nin filter for the "device_class" field + - description: nin filter for the "updated_at" field in: query - name: device_class__nin + name: updated_at__nin type: string - - description: eq filter for the "device_execution_mode" field + - description: lte filter for the "updated_at" field + format: date-time in: query - name: device_execution_mode__eq - type: integer - - description: neq filter for the "device_execution_mode" field + name: updated_at__lte + type: string + - description: gte filter for the "updated_at" field + format: date-time in: query - name: device_execution_mode__neq - type: integer - - description: in filter for the "device_execution_mode" field + name: updated_at__gte + type: string + - description: eq filter for the "vendor_id" field in: query - name: device_execution_mode__in + name: vendor_id__eq type: string - - description: nin filter for the "device_execution_mode" field + - description: neq filter for the "vendor_id" field in: query - name: device_execution_mode__nin + name: vendor_id__neq type: string - - description: eq filter for the "device_key" field + - description: in filter for the "vendor_id" field in: query - name: device_key__eq + name: vendor_id__in type: string - - description: neq filter for the "device_key" field + - description: nin filter for the "vendor_id" field in: query - name: device_key__neq + name: vendor_id__nin + type: string + responses: + 200: + description: Ok. + schema: + $ref: '#/definitions/DevicePage' + 400: + description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get a page of devices. + tags: + - Device directory - groups + x-filter: &id031 + account_id: + - eq + - neq + - in + - nin + auto_update: + - eq + - neq + bootstrap_expiration_date: + - in + - nin + - lte + - gte + bootstrapped_timestamp: + - in + - nin + - lte + - gte + ca_id: + - eq + - neq + - in + - nin + connector_expiration_date: + - in + - nin + - lte + - gte + created_at: + - in + - nin + - lte + - gte + deployed_state: + - eq + - neq + - in + - nin + deployment: + - eq + - neq + - in + - nin + description: + - eq + - neq + - in + - nin + device_class: + - eq + - neq + - in + - nin + device_execution_mode: + - eq + - neq + - in + - nin + device_key: + - eq + - neq + - in + - nin + endpoint_name: + - eq + - neq + - in + - nin + endpoint_type: + - eq + - neq + - in + - nin + enrolment_list_timestamp: + - in + - nin + - lte + - gte + firmware_checksum: + - eq + - neq + - in + - nin + host_gateway: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + last_operator_suspended_category: + - eq + - neq + - in + - nin + last_operator_suspended_updated_at: + - in + - nin + - lte + - gte + last_system_suspended_category: + - eq + - neq + - in + - nin + last_system_suspended_updated_at: + - in + - nin + - lte + - gte + lifecycle_status: + - eq + - neq + - in + - nin + manifest: + - eq + - neq + - in + - nin + manifest_timestamp: + - in + - nin + - lte + - gte + mechanism: + - eq + - neq + - in + - nin + mechanism_url: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + net_id: + - eq + - neq + - in + - nin + operator_suspended: + - eq + - neq + serial_number: + - eq + - neq + - in + - nin + state: + - eq + - neq + - in + - nin + system_suspended: + - eq + - neq + updated_at: + - in + - nin + - lte + - gte + vendor_id: + - eq + - neq + - in + - nin + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-groups/{device-group-id}/devices/add/: + post: + description: Add one device to a group. A device can be in multiple groups. + operationId: Group_members_add + parameters: + - description: The ID of the group. + in: path + name: device-group-id + required: true type: string - - description: in filter for the "device_key" field - in: query - name: device_key__in + - description: Body of the request. + in: body + name: body + required: true + schema: + $ref: '#/definitions/DeviceGroupManipulation' + responses: + '204': + description: Success - device added. + '400': + description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add a device to a group. + tags: + - Device directory - groups + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-groups/{device-group-id}/devices/remove/: + post: + description: Remove one device from a group. + operationId: Group_members_remove + parameters: + - description: The ID of the group. + in: path + name: device-group-id + required: true type: string - - description: nin filter for the "device_key" field + - description: Body of the request. + in: body + name: body + required: true + schema: + $ref: '#/definitions/DeviceGroupManipulation' + responses: + '204': + description: Success - device removed. + '400': + description: Bad request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove a device from a group. + tags: + - Device directory - groups + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-logs: + get: + description: 'List logs for all devices based on a combination of filters. + + + **Example usage:** + + ``` + + curl -X GET \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-logs + + ``` + + ' + operationId: ListGatewayDeviceLogs + parameters: + - description: The device ID for which to retrieve logs. in: query - name: device_key__nin + name: device_id__in + required: false type: string - - description: eq filter for the "endpoint_name" field + - default: 100 + description: Limit the number of returned results. The default value is 100. in: query - name: endpoint_name__eq - type: string - - description: neq filter for the "endpoint_name" field + maximum: 1000 + minimum: 2 + name: limit + required: false + type: integer + - description: The entity ID to fetch after the given one. in: query - name: endpoint_name__neq + name: after + required: false type: string - - description: in filter for the "endpoint_name" field + - default: DESC + description: 'Record order. Acceptable values: ASC, DESC.' + enum: &id032 + - ASC + - DESC in: query - name: endpoint_name__in + name: order + required: false type: string - - description: nin filter for the "endpoint_name" field + - description: 'Comma-separated additional data to return. Currently supported: + total_count' in: query - name: endpoint_name__nin + name: include + required: false type: string - - description: eq filter for the "endpoint_type" field + - description: RFC 3339 UTC timestamp range upper limit. + format: date-time in: query - name: endpoint_type__eq + name: timestamp__lte + required: false type: string - - description: neq filter for the "endpoint_type" field + - description: RFC 3339 UTC timestamp range lower limit. + format: date-time in: query - name: endpoint_type__neq + name: timestamp__gte + required: false type: string - - description: in filter for the "endpoint_type" field + - description: Name of the application on a device that generated logs. in: query - name: endpoint_type__in + name: app_name__eq + required: false type: string - - description: nin filter for the "endpoint_type" field + - description: Device log type filter. in: query - name: endpoint_type__nin + name: type__eq + required: false type: string - - description: in filter for the "enrolment_list_timestamp" field + - description: Device log message filter. in: query - name: enrolment_list_timestamp__in + name: message__eq + required: false type: string - - description: nin filter for the "enrolment_list_timestamp" field + - description: Minimum severity level of logs to retrieve. + enum: &id033 + - DEBUG + - TRACE + - INFO + - WARNING + - ERROR + - CRITICAL in: query - name: enrolment_list_timestamp__nin + name: level__gte + required: false type: string - - description: lte filter for the "enrolment_list_timestamp" field - format: date-time - in: query - name: enrolment_list_timestamp__lte + responses: + '200': + description: Retrieved logs successfully + schema: + $ref: '#/definitions/LogsPage' + '400': + description: Bad request + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated + schema: + $ref: '#/definitions/ErrorResponse' + summary: List all device logs based on filters + tags: + - Gateway Logs Public API + x-filter: + app_name: + - eq + device_id: + - in + level: + - gte + message: + - eq + timestamp: + - lte + - gte + type: + - eq + x-origin: /home/circleci/project/gateway/public/logs.yaml + /v3/device-logs/{device_log_id}: + get: + description: 'Retrieve a device log from a device by log ID. + + + **Example usage:** + + ``` + + curl -X GET \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-logs/(device_log_id) + + ``` + + ' + operationId: GetDeviceLogBasedOnLogID + parameters: + - description: The ID of the device log. + in: path + name: device_log_id + required: true type: string - - description: gte filter for the "enrolment_list_timestamp" field - format: date-time + responses: + '200': + description: Retrieved result successfully + schema: + $ref: '#/definitions/Log' + '401': + description: Not authenticated + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not found + schema: + $ref: '#/definitions/ErrorResponse' + summary: Retrieve a device log by ID. + tags: + - Gateway Logs Public API + x-origin: /home/circleci/project/gateway/public/logs.yaml + /v3/device-queries/: + get: + description: List all device queries. + operationId: Device_Query_list + parameters: + - description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. in: query - name: enrolment_list_timestamp__gte - type: string - - description: eq filter for the "firmware_checksum" field + maximum: 1000 + minimum: 2 + name: limit + type: integer + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' in: query - name: firmware_checksum__eq + name: order type: string - - description: neq filter for the "firmware_checksum" field + - description: The ID of the item after which to retrieve the next page. in: query - name: firmware_checksum__neq + name: after type: string - - description: in filter for the "firmware_checksum" field + - description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' in: query - name: firmware_checksum__in + name: include type: string - - description: nin filter for the "firmware_checksum" field + - description: "URL-encoded query string parameter to filter returned data.\n\ + \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ + \ is made up of key/value pairs separated by ampersands. So for a query\ + \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as: `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ + \n###### Filterable fields\n\nThe below table lists all filterable fields:\n\ + \n\n \n \n \n \n \n \n\ + \ \n \n \n \n \n \ + \ \n \n \n \ + \ \n \n \n \n \n \n \n \n \n \ + \ \n \n \n \ + \ \n \n \n \n \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n
Field= / __eq\ + \ / __neq__in / __nin__lte / __gte
created_at\u2713\u2713\u2713
etag\u2713\u2713\ + \u2713
id\u2713\u2713 
name\u2713\u2713\ +  
query\u2713\u2713 
updated_at\u2713\u2713\u2713
\n\ +  \n\nThe examples below show the queries in *unencoded* form.\n\n######\ + \ By device query properties (all properties are filterable):\n\nFor example:\n\ + `description={value}`\n\n###### On date-time fields:\n\nDate-time fields\ + \ should be specified in UTC RFC3339 format `YYYY-MM-DDThh:mm:ss.msZ`. There\ + \ are three permitted\nvariations:\n\n* UTC RFC3339 with milliseconds, for\ + \ example, 2016-11-30T16:25:12.1234Z.\n* UTC RFC3339 without milliseconds,\ + \ for example, 2016-11-30T16:25:12Z.\n* UTC RFC3339 shortened - without\ + \ milliseconds and punctuation, for example, 20161130T162512Z.\n\nDate-time\ + \ filtering supports three operators:\n\n* Equality.\n* Greater than or\ + \ equal to – field name suffixed with `__gte`.\n* Less than or equal\ + \ to – field name suffixed with `__lte`.\n\nLower and upper limits\ + \ to a date-time range may be specified by including both the `__gte` and\ + \ `__lte` forms in\nthe filter: `{field name}[|__lte|__gte]={UTC RFC3339\ + \ date-time}`.\n\n##### Multi-field example\n\n`query_id=0158d38771f70000000000010010038c&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \nEncoded:\n\n`filter=query_id%3D0158d38771f70000000000010010038c%26created_at__gte%3D2016-11-30T16%3A25%3A12.1234Z%26created_at__lte%3D2016-11-30T00%3A00%3A00Z`\n\ + \n##### Filtering with filter operators\n\nString field filtering supports\ + \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ + * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ + \ of parameters must be comma-separated:\n`name__nin=query1,query2`" in: query - name: firmware_checksum__nin + name: filter type: string - - description: eq filter for the "host_gateway" field + - description: in filter for the "created_at" field in: query - name: host_gateway__eq + name: created_at__in type: string - - description: neq filter for the "host_gateway" field + - description: nin filter for the "created_at" field in: query - name: host_gateway__neq + name: created_at__nin type: string - - description: in filter for the "host_gateway" field + - description: lte filter for the "created_at" field + format: date-time in: query - name: host_gateway__in + name: created_at__lte type: string - - description: nin filter for the "host_gateway" field + - description: gte filter for the "created_at" field + format: date-time in: query - name: host_gateway__nin + name: created_at__gte type: string - description: eq filter for the "id" field in: query @@ -18567,419 +25429,450 @@ paths: in: query name: id__nin type: string - - description: eq filter for the "manifest" field + - description: eq filter for the "name" field in: query - name: manifest__eq + name: name__eq type: string - - description: neq filter for the "manifest" field + - description: neq filter for the "name" field in: query - name: manifest__neq + name: name__neq type: string - - description: in filter for the "manifest" field + - description: in filter for the "name" field in: query - name: manifest__in + name: name__in type: string - - description: nin filter for the "manifest" field + - description: nin filter for the "name" field in: query - name: manifest__nin + name: name__nin type: string - - description: in filter for the "manifest_timestamp" field + - description: eq filter for the "query" field in: query - name: manifest_timestamp__in + name: query__eq type: string - - description: nin filter for the "manifest_timestamp" field + - description: neq filter for the "query" field in: query - name: manifest_timestamp__nin + name: query__neq type: string - - description: lte filter for the "manifest_timestamp" field + - description: in filter for the "query" field + in: query + name: query__in + type: string + - description: nin filter for the "query" field + in: query + name: query__nin + type: string + - description: in filter for the "updated_at" field + in: query + name: updated_at__in + type: string + - description: nin filter for the "updated_at" field + in: query + name: updated_at__nin + type: string + - description: lte filter for the "updated_at" field format: date-time in: query - name: manifest_timestamp__lte + name: updated_at__lte type: string - - description: gte filter for the "manifest_timestamp" field + - description: gte filter for the "updated_at" field format: date-time in: query - name: manifest_timestamp__gte + name: updated_at__gte type: string - - description: eq filter for the "mechanism" field + responses: + '200': + description: Request successful. + schema: + $ref: '#/definitions/DeviceQueryPage' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find page. + summary: List device queries. + tags: + - Device directory - device queries + x-filter: + created_at: + - in + - nin + - lte + - gte + id: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + query: + - eq + - neq + - in + - nin + updated_at: + - in + - nin + - lte + - gte + x-origin: /home/circleci/project/device-directory/public/swagger.yml + post: + description: Create a new device query. + operationId: Device_Query_create + parameters: + - in: body + name: Device + required: true + schema: + $ref: '#/definitions/DeviceQueryPostPutRequest' + responses: + '201': + description: Update device query created. + schema: + $ref: '#/definitions/DeviceQuery' + '400': + description: 'Validation error: The data used to create the device query + did not validate.' + '401': + description: Not authenticated. + summary: Create a device query. + tags: + - Device directory - device queries + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/device-queries/{query_id}/: + delete: + description: Delete a device query. + operationId: Device_Query_destroy + parameters: + - in: path + name: query_id + required: true + type: string + responses: + '204': + description: Update device query deleted. + '400': + description: 'Validation error: The data used to create the device query + did not validate.' + '401': + description: Not authenticated. + '404': + description: Unable to delete update device query because it can't be found. + summary: Delete a device query. + tags: + - Device directory - device queries + x-origin: /home/circleci/project/device-directory/public/swagger.yml + get: + description: Retrieve a specific device query. + operationId: Device_Query_retrieve + parameters: + - in: path + name: query_id + required: true + type: string + responses: + '200': + description: Retrieved result successfully. + schema: + $ref: '#/definitions/DeviceQuery' + '400': + description: 'Validation error: The data used to create the device query + did not validate.' + '401': + description: Not authenticated. + '404': + description: Unable to find device query. + summary: Retrieve a device query. + tags: + - Device directory - device queries + x-origin: /home/circleci/project/device-directory/public/swagger.yml + put: + description: Update a specifc device query. + operationId: Device_Query_update + parameters: + - in: path + name: query_id + required: true + type: string + - description: Device query update object. + in: body + name: body + required: true + schema: + $ref: '#/definitions/DeviceQueryPostPutRequest' + responses: + '200': + description: Device updated. + schema: + $ref: '#/definitions/DeviceQuery' + '400': + description: 'Validation error: The data used to update the device query + did not validate.' + '401': + description: Not authenticated. + '404': + description: Unable to update device query because it can't be found. + summary: Update a device query. + tags: + - Device directory - device queries + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/devicelog/: + get: + deprecated: true + description: 'DEPRECATED: This API is replaced with `/v3/device-events/`.' + operationId: Device_Log_list + parameters: + - description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. in: query - name: mechanism__eq + maximum: 1000 + minimum: 2 + name: limit + type: integer + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + in: query + name: order type: string - - description: neq filter for the "mechanism" field + - description: The ID of the item after which to retrieve the next page. in: query - name: mechanism__neq + name: after type: string - - description: in filter for the "mechanism" field + - description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' in: query - name: mechanism__in + name: include type: string - - description: nin filter for the "mechanism" field + - description: "URL-encoded query string parameter to filter returned data.\n\ + \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ + \ is made up of key/value pairs separated by ampersands. So for a query\ + \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ + \n###### Filterable fields:\n\nThe below table lists all filterable fields:\n\ + \n\n \n \n \n \n \n \n\ + \ \n \n \n \n \n \ + \ \n \n \n \ + \ \n \n \n \n \ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n\ + \ \n \n \n \n\ + \ \n \n \n \ + \ \n \n
Field= / __eq\ + \ / __neq__in / __nin__lte / __gte
date_time\u2713\u2713\u2713
description\u2713\u2713 
id\u2713\u2713 
device_id\u2713\u2713 
event_type\u2713\u2713 
state_change\u2713\u2713 
\n \n\nThe examples below show the queries\ + \ in *unencoded* form.\n\n###### By id:\n\n`id={id}`\n\n###### By state\ + \ change:\n\n`state_change=[True|False]`\n\n###### By event type:\n\n`event_type={value}`\n\ + \n###### On date-time fields:\n\nDate-time fields should be specified in\ + \ UTC RFC3339 format `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\n\ + variations:\n\n* UTC RFC3339 with milliseconds, for example, 2016-11-30T16:25:12.1234Z.\n\ + * UTC RFC3339 without milliseconds, for example, 2016-11-30T16:25:12Z.\n\ + * UTC RFC3339 shortened - without milliseconds and punctuation, for example,\ + \ 20161130T162512Z.\n\nDate-time filtering supports three operators:\n\n\ + * Equality.\n* Greater than or equal to – field name suffixed with\ + \ `__gte`.\n* Less than or equal to – field name suffixed with `__lte`.\n\ + \nLower and upper limits to a date-time range may be specified by including\ + \ both the `__gte` and `__lte` forms in\nthe filter:\n\n`{field name}[|__lte|__gte]={UTC\ + \ RFC3339 date-time}`\n\n##### Multi-field example\n\n`id=0158d38771f70000000000010010038c&state_change=True&date_time__gte=2016-11-30T16:25:12.1234Z`\n\ + \nEncoded:\n\n`?filter=id%3D0158d38771f70000000000010010038c%26state_change%3DTrue%26date_time__gte%3D2016-11-30T16%3A25%3A12.1234Z`\n\ + \n##### Filtering with filter operators\n\nString field filtering supports\ + \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ + * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ + \ of parameters must be comma-separated:\n`event_type__in=update.device.device-created,update.device.device-updated`." in: query - name: mechanism__nin + name: filter type: string - - description: eq filter for the "mechanism_url" field + - description: in filter for the "date_time" field in: query - name: mechanism_url__eq + name: date_time__in type: string - - description: neq filter for the "mechanism_url" field + - description: nin filter for the "date_time" field in: query - name: mechanism_url__neq + name: date_time__nin type: string - - description: in filter for the "mechanism_url" field + - description: lte filter for the "date_time" field + format: date-time in: query - name: mechanism_url__in + name: date_time__lte type: string - - description: nin filter for the "mechanism_url" field + - description: gte filter for the "date_time" field + format: date-time in: query - name: mechanism_url__nin + name: date_time__gte type: string - - description: eq filter for the "name" field + - description: eq filter for the "description" field in: query - name: name__eq + name: description__eq type: string - - description: neq filter for the "name" field + - description: neq filter for the "description" field in: query - name: name__neq + name: description__neq type: string - - description: in filter for the "name" field + - description: in filter for the "description" field in: query - name: name__in + name: description__in type: string - - description: nin filter for the "name" field + - description: nin filter for the "description" field in: query - name: name__nin + name: description__nin type: string - - description: eq filter for the "serial_number" field + - description: eq filter for the "id" field in: query - name: serial_number__eq + name: id__eq type: string - - description: neq filter for the "serial_number" field + - description: neq filter for the "id" field in: query - name: serial_number__neq + name: id__neq type: string - - description: in filter for the "serial_number" field + - description: in filter for the "id" field in: query - name: serial_number__in + name: id__in type: string - - description: nin filter for the "serial_number" field + - description: nin filter for the "id" field in: query - name: serial_number__nin + name: id__nin type: string - - description: eq filter for the "state" field + - description: eq filter for the "device_id" field in: query - name: state__eq + name: device_id__eq type: string - - description: neq filter for the "state" field + - description: neq filter for the "device_id" field in: query - name: state__neq + name: device_id__neq type: string - - description: in filter for the "state" field + - description: in filter for the "device_id" field in: query - name: state__in + name: device_id__in type: string - - description: nin filter for the "state" field + - description: nin filter for the "device_id" field in: query - name: state__nin + name: device_id__nin type: string - - description: in filter for the "updated_at" field + - description: eq filter for the "event_type" field in: query - name: updated_at__in + name: event_type__eq type: string - - description: nin filter for the "updated_at" field + - description: neq filter for the "event_type" field in: query - name: updated_at__nin + name: event_type__neq type: string - - description: lte filter for the "updated_at" field - format: date-time + - description: in filter for the "event_type" field in: query - name: updated_at__lte + name: event_type__in type: string - - description: gte filter for the "updated_at" field - format: date-time + - description: nin filter for the "event_type" field in: query - name: updated_at__gte + name: event_type__nin type: string - - description: eq filter for the "vendor_id" field + - description: eq filter for the "state_change" field in: query - name: vendor_id__eq - type: string - - description: neq filter for the "vendor_id" field + name: state_change__eq + type: boolean + - description: neq filter for the "state_change" field in: query - name: vendor_id__neq - type: string - - description: in filter for the "vendor_id" field + name: state_change__neq + type: boolean + - description: in filter for the "state_change" field in: query - name: vendor_id__in + name: state_change__in type: string - - description: nin filter for the "vendor_id" field + - description: nin filter for the "state_change" field in: query - name: vendor_id__nin - type: string - responses: - 200: - description: Ok. - schema: - $ref: '#/definitions/DevicePage' - 400: - description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' - 401: - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - 404: - description: Not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Get a page of devices. - tags: - - Device directory - groups - x-filter: &id025 - account_id: - - eq - - neq - - in - - nin - auto_update: - - eq - - neq - bootstrap_expiration_date: - - in - - nin - - lte - - gte - bootstrapped_timestamp: - - in - - nin - - lte - - gte - ca_id: - - eq - - neq - - in - - nin - connector_expiration_date: - - in - - nin - - lte - - gte - created_at: - - in - - nin - - lte - - gte - deployed_state: - - eq - - neq - - in - - nin - deployment: - - eq - - neq - - in - - nin - description: - - eq - - neq - - in - - nin - device_class: - - eq - - neq - - in - - nin - device_execution_mode: - - eq - - neq - - in - - nin - device_key: - - eq - - neq - - in - - nin - endpoint_name: - - eq - - neq - - in - - nin - endpoint_type: - - eq - - neq - - in - - nin - enrolment_list_timestamp: - - in - - nin - - lte - - gte - firmware_checksum: - - eq - - neq - - in - - nin - host_gateway: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - last_operator_suspended_category: - - eq - - neq - - in - - nin - last_operator_suspended_updated_at: - - in - - nin - - lte - - gte - last_system_suspended_category: - - eq - - neq - - in - - nin - last_system_suspended_updated_at: - - in - - nin - - lte - - gte - lifecycle_status: - - eq - - neq - - in - - nin - manifest: - - eq - - neq - - in - - nin - manifest_timestamp: + name: state_change__nin + type: string + responses: + '200': + description: Request successful. + schema: + $ref: '#/definitions/DeviceEventPage' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find page. + summary: 'DEPRECATED: List all device events.' + tags: + - Device directory - events + x-filter: + date_time: - in - nin - lte - gte - mechanism: - - eq - - neq - - in - - nin - mechanism_url: - - eq - - neq - - in - - nin - name: + description: - eq - neq - in - nin - operator_suspended: - - eq - - neq - serial_number: + device_id: - eq - neq - in - nin - state: + event_type: - eq - neq - in - nin - system_suspended: + id: - eq - neq - updated_at: - in - nin - - lte - - gte - vendor_id: + state_change: - eq - neq - in - nin x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-groups/{device-group-id}/devices/add/: - post: - description: Add one device to a group. - operationId: Group_members_add + /v3/devicelog/{device_event_id}/: + get: + deprecated: true + description: 'DEPRECATED: This API is replaced by `/v3/device-events/` and `/v3/device-events/{device_event_id}/`.' + operationId: Device_Log_retrieve parameters: - - description: The ID of the group. - in: path - name: device-group-id + - in: path + name: device_event_id required: true type: string - - description: Body of the request. - in: body - name: body - required: true - schema: - $ref: '#/definitions/DeviceGroupManipulation' responses: - '204': - description: Success - device added. - '400': - description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Not found. + '200': + description: Retrieved result successfully. schema: - $ref: '#/definitions/ErrorResponse' - summary: Add a device to a group. - tags: - - Device directory - groups - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-groups/{device-group-id}/devices/remove/: - post: - description: Remove one device from a group. - operationId: Group_members_remove - parameters: - - description: The ID of the group. - in: path - name: device-group-id - required: true - type: string - - description: Body of the request. - in: body - name: body - required: true - schema: - $ref: '#/definitions/DeviceGroupManipulation' - responses: - '204': - description: Success - device removed. + $ref: '#/definitions/DeviceEventData' '400': description: Bad request. - schema: - $ref: '#/definitions/ErrorResponse' '401': - description: Unauthorized. - schema: - $ref: '#/definitions/ErrorResponse' + description: Not authenticated. '404': - description: Not found. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Remove a device from a group. + description: Unable to find device. + summary: 'DEPRECATED: Retrieve a device event.' tags: - - Device directory - groups + - Device directory - events x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-queries/: + /v3/devices/: get: - description: List all device queries. - operationId: Device_Query_list + description: 'List all devices enrolled to Device Management for the account. + + + **Example:** + + Following example filters devices according to state field and returns only + devices in ''registered'' state: + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: Device_list parameters: - description: How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit. @@ -18996,938 +25889,1361 @@ paths: in: query name: after type: string + - description: 'URL encoded query string parameter to filter returned data. + + + ##### Filtering + + ```?filter={URL encoded query string}``` + + + The query string is made up of key/value pairs separated by ampersands. + So for a query of + + ```key1=value1&key2=value2&key3=value3``` this would be encoded as follows: + + ```?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3``` + + The examples below show the queries in *unencoded* form. + + + ###### By device properties (all properties are filterable): + + ```state=[unenrolled|cloud_enrolling|bootstrapped|registered]``` + + + ```device_class={value}``` + + + ###### On date-time fields: + + Date-time fields should be specified in UTC RFC3339 format ```YYYY-MM-DDThh:mm:ss.msZ```. + There are three permitted + + variations: + + + * UTC RFC3339 with milliseconds e.g. 2016-11-30T16:25:12.1234Z + + * UTC RFC3339 without milliseconds e.g. 2016-11-30T16:25:12Z + + * UTC RFC3339 shortened - without milliseconds and punctuation e.g. 20161130T162512Z + + + Date-time filtering supports three operators: + + + * equality + + * greater than or equal to – field name suffixed with ```__gte``` + + * less than or equal to – field name suffixed with ```__lte``` + + + Lower and upper limits to a date-time range may be specified by including + both the ```__gte``` and ```__lte``` forms in + + the filter. + + + ```{field name}[|__lte|__gte]={UTC RFC3339 date-time}``` + + + ###### On device custom attributes: + + + ```custom_attributes__{param}={value}``` + + ```custom_attributes__tag=TAG1``` + + + ###### On device component attributes: + + + ```component_attributes__{name}={version}``` + + ```component_attributes__ble=1.2.3``` + + + ##### Multi-field example + + + ```state=bootstrapped&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z``` + + + Encoded: + + + ```?filter=state%3Dbootstrapped%26created_at__gte%3D2016-11-30T16%3A25%3A12.1234Z%26created_at__lte%3D2016-11-30T00%3A00%3A00Z``` + + + ##### Filtering with filter operators + + + String field filtering supports the following operators: + + + * equality: `__eq` + + * non-equality: `__neq` + + * in : `__in` + + * not in: `__nin` + + + For `__in` and `__nin` filters list of parameters must be comma-separated: + + + `state__nin=unenrolled,dergistered`' + in: query + name: filter + type: string - description: 'Comma-separated list of data fields to return. Currently supported: `total_count`.' in: query name: include type: string - - description: "URL-encoded query string parameter to filter returned data.\n\ - \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ - \ is made up of key/value pairs separated by ampersands. So for a query\ - \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as: `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ - \nThe below table lists all filterable fields:\n\n\n \n \ - \ \n \n \n \n \n \n \n \n\ - \ \n \n \n \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n
Field= / __eq / __neq__in\ - \ / __nin__lte / __gte
created_at\u2713\u2713\ - \u2713
etag\u2713\u2713\u2713
id\u2713\u2713\ -  
name\u2713\u2713 
query\u2713\u2713 
updated_at\u2713\u2713\u2713
\n \n\nThe examples below show the queries\ - \ in *unencoded* form.\n\n###### By device query properties (all properties\ - \ are filterable):\n\nFor example:\n`description={value}`\n\n###### On date-time\ - \ fields:\n\nDate-time fields should be specified in UTC RFC3339 format\ - \ `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\nvariations:\n\n\ - * UTC RFC3339 with milliseconds, for example, 2016-11-30T16:25:12.1234Z.\n\ - * UTC RFC3339 without milliseconds, for example, 2016-11-30T16:25:12Z.\n\ - * UTC RFC3339 shortened - without milliseconds and punctuation, for example,\ - \ 20161130T162512Z.\n\nDate-time filtering supports three operators:\n\n\ - * Equality.\n* Greater than or equal to – field name suffixed with\ - \ `__gte`.\n* Less than or equal to – field name suffixed with `__lte`.\n\ - \nLower and upper limits to a date-time range may be specified by including\ - \ both the `__gte` and `__lte` forms in\nthe filter: `{field name}[|__lte|__gte]={UTC\ - \ RFC3339 date-time}`.\n\n##### Multi-field example\n\n`query_id=0158d38771f70000000000010010038c&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \nEncoded:\n\n`filter=query_id%3D0158d38771f70000000000010010038c%26created_at__gte%3D2016-11-30T16%3A25%3A12.1234Z%26created_at__lte%3D2016-11-30T00%3A00%3A00Z`\n\ - \n##### Filtering with filter operators\n\nString field filtering supports\ - \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ - * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n`name__nin=query1,query2`" + - description: eq filter for the "lifecycle_status" field + in: query + name: lifecycle_status__eq + type: string + - description: neq filter for the "lifecycle_status" field + in: query + name: lifecycle_status__neq + type: string + - description: in filter for the "lifecycle_status" field + in: query + name: lifecycle_status__in + type: string + - description: nin filter for the "lifecycle_status" field + in: query + name: lifecycle_status__nin + type: string + - description: eq filter for the "operator_suspended" field + in: query + name: operator_suspended__eq + type: boolean + - description: neq filter for the "operator_suspended" field + in: query + name: operator_suspended__neq + type: boolean + - description: eq filter for the "last_operator_suspended_category" field + in: query + name: last_operator_suspended_category__eq + type: string + - description: neq filter for the "last_operator_suspended_category" field + in: query + name: last_operator_suspended_category__neq + type: string + - description: in filter for the "last_operator_suspended_category" field + in: query + name: last_operator_suspended_category__in + type: string + - description: nin filter for the "last_operator_suspended_category" field in: query - name: filter + name: last_operator_suspended_category__nin type: string - - description: in filter for the "created_at" field + - description: in filter for the "last_operator_suspended_updated_at" field in: query - name: created_at__in + name: last_operator_suspended_updated_at__in type: string - - description: nin filter for the "created_at" field + - description: nin filter for the "last_operator_suspended_updated_at" field in: query - name: created_at__nin + name: last_operator_suspended_updated_at__nin type: string - - description: lte filter for the "created_at" field + - description: lte filter for the "last_operator_suspended_updated_at" field format: date-time in: query - name: created_at__lte + name: last_operator_suspended_updated_at__lte type: string - - description: gte filter for the "created_at" field + - description: gte filter for the "last_operator_suspended_updated_at" field format: date-time in: query - name: created_at__gte + name: last_operator_suspended_updated_at__gte type: string - - description: eq filter for the "id" field + - description: eq filter for the "system_suspended" field in: query - name: id__eq - type: string - - description: neq filter for the "id" field + name: system_suspended__eq + type: boolean + - description: neq filter for the "system_suspended" field in: query - name: id__neq - type: string - - description: in filter for the "id" field + name: system_suspended__neq + type: boolean + - description: eq filter for the "last_system_suspended_category" field in: query - name: id__in + name: last_system_suspended_category__eq type: string - - description: nin filter for the "id" field + - description: neq filter for the "last_system_suspended_category" field in: query - name: id__nin + name: last_system_suspended_category__neq type: string - - description: eq filter for the "name" field + - description: in filter for the "last_system_suspended_category" field in: query - name: name__eq + name: last_system_suspended_category__in type: string - - description: neq filter for the "name" field + - description: nin filter for the "last_system_suspended_category" field in: query - name: name__neq + name: last_system_suspended_category__nin type: string - - description: in filter for the "name" field + - description: in filter for the "last_system_suspended_updated_at" field in: query - name: name__in + name: last_system_suspended_updated_at__in type: string - - description: nin filter for the "name" field + - description: nin filter for the "last_system_suspended_updated_at" field in: query - name: name__nin + name: last_system_suspended_updated_at__nin type: string - - description: eq filter for the "query" field + - description: lte filter for the "last_system_suspended_updated_at" field + format: date-time in: query - name: query__eq + name: last_system_suspended_updated_at__lte type: string - - description: neq filter for the "query" field + - description: gte filter for the "last_system_suspended_updated_at" field + format: date-time in: query - name: query__neq + name: last_system_suspended_updated_at__gte type: string - - description: in filter for the "query" field + - description: eq filter for the "account_id" field in: query - name: query__in + name: account_id__eq type: string - - description: nin filter for the "query" field + - description: neq filter for the "account_id" field in: query - name: query__nin + name: account_id__neq type: string - - description: in filter for the "updated_at" field + - description: in filter for the "account_id" field in: query - name: updated_at__in + name: account_id__in type: string - - description: nin filter for the "updated_at" field + - description: nin filter for the "account_id" field in: query - name: updated_at__nin + name: account_id__nin type: string - - description: lte filter for the "updated_at" field - format: date-time + - description: eq filter for the "auto_update" field in: query - name: updated_at__lte - type: string - - description: gte filter for the "updated_at" field - format: date-time + name: auto_update__eq + type: boolean + - description: neq filter for the "auto_update" field in: query - name: updated_at__gte + name: auto_update__neq + type: boolean + - description: in filter for the "bootstrap_expiration_date" field + in: query + name: bootstrap_expiration_date__in type: string - responses: - '200': - description: Request successful. - schema: - $ref: '#/definitions/DeviceQueryPage' - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to find page. - summary: List device queries. - tags: - - Device directory - filter queries - x-filter: - created_at: - - in - - nin - - lte - - gte - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - query: - - eq - - neq - - in - - nin - updated_at: - - in - - nin - - lte - - gte - x-origin: /home/circleci/project/device-directory/public/swagger.yml - post: - description: Create a new device query. - operationId: Device_Query_create - parameters: - - in: body - name: Device - required: true - schema: - $ref: '#/definitions/DeviceQueryPostPutRequest' - responses: - '201': - description: Update device query created. - schema: - $ref: '#/definitions/DeviceQuery' - '400': - description: 'Validation error: The data used to create the device query - did not validate.' - '401': - description: Not authenticated. - summary: Create a device query. - tags: - - Device directory - filter queries - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/device-queries/{query_id}/: - delete: - description: Delete a device query. - operationId: Device_Query_destroy - parameters: - - in: path - name: query_id - required: true + - description: nin filter for the "bootstrap_expiration_date" field + in: query + name: bootstrap_expiration_date__nin type: string - responses: - '204': - description: Update device query deleted. - '400': - description: 'Validation error: The data used to create the device query - did not validate.' - '401': - description: Not authenticated. - '404': - description: Unable to delete update device query because it can't be found. - summary: Delete a device query. - tags: - - Device directory - filter queries - x-origin: /home/circleci/project/device-directory/public/swagger.yml - get: - description: Retrieve a specific device query. - operationId: Device_Query_retrieve - parameters: - - in: path - name: query_id - required: true + - description: lte filter for the "bootstrap_expiration_date" field + format: date + in: query + name: bootstrap_expiration_date__lte type: string - responses: - '200': - description: Retrieved result successfully. - schema: - $ref: '#/definitions/DeviceQuery' - '400': - description: 'Validation error: The data used to create the device query - did not validate.' - '401': - description: Not authenticated. - '404': - description: Unable to find device query. - summary: Retrieve a device query. - tags: - - Device directory - filter queries - x-origin: /home/circleci/project/device-directory/public/swagger.yml - put: - description: Update a specifc device query. - operationId: Device_Query_update - parameters: - - in: path - name: query_id - required: true + - description: gte filter for the "bootstrap_expiration_date" field + format: date + in: query + name: bootstrap_expiration_date__gte type: string - - description: Device query update object. - in: body - name: body - required: true - schema: - $ref: '#/definitions/DeviceQueryPostPutRequest' - responses: - '200': - description: Device updated. - schema: - $ref: '#/definitions/DeviceQuery' - '400': - description: 'Validation error: The data used to update the device query - did not validate.' - '401': - description: Not authenticated. - '404': - description: Unable to update device query because it can't be found. - summary: Update a device query. - tags: - - Device directory - filter queries - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devicelog/: - get: - deprecated: true - description: 'DEPRECATED: List all device events. Use `/v3/device-events/` instead.' - operationId: Device_Log_list - parameters: - - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + - description: in filter for the "bootstrapped_timestamp" field in: query - maximum: 1000 - minimum: 2 - name: limit - type: integer - - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + name: bootstrapped_timestamp__in + type: string + - description: nin filter for the "bootstrapped_timestamp" field in: query - name: order + name: bootstrapped_timestamp__nin type: string - - description: The ID of the item after which to retrieve the next page. + - description: lte filter for the "bootstrapped_timestamp" field + format: date-time in: query - name: after + name: bootstrapped_timestamp__lte type: string - - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' + - description: gte filter for the "bootstrapped_timestamp" field + format: date-time in: query - name: include + name: bootstrapped_timestamp__gte type: string - - description: "URL-encoded query string parameter to filter returned data.\n\ - \n##### Filtering\n\n`?filter={URL encoded query string}`\n\nThe query string\ - \ is made up of key/value pairs separated by ampersands. So for a query\ - \ of\n`key1=value1&key2=value2&key3=value3`, this would be encoded as `?filter=key1%3Dvalue1%26key2%3Dvalue2%26key3%3Dvalue3`.\n\ - \n###### Filterable fields:\n\nThe below table lists all filterable fields:\n\ - \n\n \n \n \n \n \n \n\ - \ \n \n \n \n \n \ - \ \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n\ - \ \n \n \n \n\ - \ \n \n \n \ - \ \n \n
Field= / __eq\ - \ / __neq__in / __nin__lte / __gte
date_time\u2713\u2713\u2713
description\u2713\u2713 
id\u2713\u2713 
device_id\u2713\u2713 
event_type\u2713\u2713 
state_change\u2713\u2713 
\n \n\nThe examples below show the queries\ - \ in *unencoded* form.\n\n###### By id:\n\n`id={id}`\n\n###### By state\ - \ change:\n\n`state_change=[True|False]`\n\n###### By event type:\n\n`event_type={value}`\n\ - \n###### On date-time fields:\n\nDate-time fields should be specified in\ - \ UTC RFC3339 format `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\n\ - variations:\n\n* UTC RFC3339 with milliseconds, for example, 2016-11-30T16:25:12.1234Z.\n\ - * UTC RFC3339 without milliseconds, for example, 2016-11-30T16:25:12Z.\n\ - * UTC RFC3339 shortened - without milliseconds and punctuation, for example,\ - \ 20161130T162512Z.\n\nDate-time filtering supports three operators:\n\n\ - * Equality.\n* Greater than or equal to – field name suffixed with\ - \ `__gte`.\n* Less than or equal to – field name suffixed with `__lte`.\n\ - \nLower and upper limits to a date-time range may be specified by including\ - \ both the `__gte` and `__lte` forms in\nthe filter:\n\n`{field name}[|__lte|__gte]={UTC\ - \ RFC3339 date-time}`\n\n##### Multi-field example\n\n`id=0158d38771f70000000000010010038c&state_change=True&date_time__gte=2016-11-30T16:25:12.1234Z`\n\ - \nEncoded:\n\n`?filter=id%3D0158d38771f70000000000010010038c%26state_change%3DTrue%26date_time__gte%3D2016-11-30T16%3A25%3A12.1234Z`\n\ - \n##### Filtering with filter operators\n\nString field filtering supports\ - \ the following operators:\n\n* Equality: `__eq`.\n* Non-equality: `__neq`.\n\ - * In : `__in`.\n* Not in: `__nin`.\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n`event_type__in=update.device.device-created,update.device.device-updated`." + - description: eq filter for the "ca_id" field in: query - name: filter + name: ca_id__eq type: string - - description: in filter for the "date_time" field + - description: neq filter for the "ca_id" field in: query - name: date_time__in + name: ca_id__neq type: string - - description: nin filter for the "date_time" field + - description: in filter for the "ca_id" field in: query - name: date_time__nin + name: ca_id__in type: string - - description: lte filter for the "date_time" field - format: date-time + - description: nin filter for the "ca_id" field in: query - name: date_time__lte + name: ca_id__nin type: string - - description: gte filter for the "date_time" field - format: date-time + - description: in filter for the "connector_expiration_date" field in: query - name: date_time__gte + name: connector_expiration_date__in type: string - - description: eq filter for the "description" field + - description: nin filter for the "connector_expiration_date" field in: query - name: description__eq + name: connector_expiration_date__nin type: string - - description: neq filter for the "description" field + - description: lte filter for the "connector_expiration_date" field + format: date in: query - name: description__neq + name: connector_expiration_date__lte type: string - - description: in filter for the "description" field + - description: gte filter for the "connector_expiration_date" field + format: date in: query - name: description__in + name: connector_expiration_date__gte type: string - - description: nin filter for the "description" field + - description: in filter for the "created_at" field in: query - name: description__nin + name: created_at__in type: string - - description: eq filter for the "id" field + - description: nin filter for the "created_at" field in: query - name: id__eq + name: created_at__nin type: string - - description: neq filter for the "id" field + - description: lte filter for the "created_at" field + format: date-time in: query - name: id__neq + name: created_at__lte type: string - - description: in filter for the "id" field + - description: gte filter for the "created_at" field + format: date-time in: query - name: id__in + name: created_at__gte type: string - - description: nin filter for the "id" field + - description: eq filter for the "deployed_state" field in: query - name: id__nin + name: deployed_state__eq type: string - - description: eq filter for the "device_id" field + - description: neq filter for the "deployed_state" field in: query - name: device_id__eq + name: deployed_state__neq type: string - - description: neq filter for the "device_id" field + - description: in filter for the "deployed_state" field in: query - name: device_id__neq + name: deployed_state__in type: string - - description: in filter for the "device_id" field + - description: nin filter for the "deployed_state" field in: query - name: device_id__in + name: deployed_state__nin type: string - - description: nin filter for the "device_id" field + - description: eq filter for the "deployment" field in: query - name: device_id__nin + name: deployment__eq type: string - - description: eq filter for the "event_type" field + - description: neq filter for the "deployment" field in: query - name: event_type__eq + name: deployment__neq type: string - - description: neq filter for the "event_type" field + - description: in filter for the "deployment" field in: query - name: event_type__neq + name: deployment__in type: string - - description: in filter for the "event_type" field + - description: nin filter for the "deployment" field in: query - name: event_type__in + name: deployment__nin type: string - - description: nin filter for the "event_type" field + - description: eq filter for the "description" field in: query - name: event_type__nin + name: description__eq type: string - - description: eq filter for the "state_change" field + - description: neq filter for the "description" field in: query - name: state_change__eq - type: boolean - - description: neq filter for the "state_change" field + name: description__neq + type: string + - description: in filter for the "description" field in: query - name: state_change__neq - type: boolean - - description: in filter for the "state_change" field + name: description__in + type: string + - description: nin filter for the "description" field in: query - name: state_change__in + name: description__nin type: string - - description: nin filter for the "state_change" field + - description: eq filter for the "device_class" field in: query - name: state_change__nin + name: device_class__eq type: string - responses: - '200': - description: Request successful. - schema: - $ref: '#/definitions/DeviceEventPage' - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to find page - summary: 'DEPRECATED: List all device events.' - tags: - - Device directory - events - x-filter: - date_time: - - in - - nin - - lte - - gte - description: - - eq - - neq - - in - - nin - device_id: - - eq - - neq - - in - - nin - event_type: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - state_change: - - eq - - neq - - in - - nin - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devicelog/{device_event_id}/: - get: - deprecated: true - description: Retrieve device event (deprecated, use /v3/device-events/{device_event_id}/ - instead). - operationId: Device_Log_retrieve - parameters: - - in: path - name: device_event_id - required: true + - description: neq filter for the "device_class" field + in: query + name: device_class__neq type: string - responses: - '200': - description: Retrieved result successfully. - schema: - $ref: '#/definitions/DeviceEventData' - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to find device. - summary: 'DEPRECATED: Retrieve a device event.' - tags: - - Device directory - events - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devices/: - get: - description: 'List all devices. - - - **Example:** - - Following example filters devices according to state field and returns only - devices in ''registered'' state: - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered - \ - - -H ''Authorization: Bearer '' - - ```' - operationId: Device_list - parameters: - - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + - description: in filter for the "device_class" field + in: query + name: device_class__in + type: string + - description: nin filter for the "device_class" field + in: query + name: device_class__nin + type: string + - description: eq filter for the "device_execution_mode" field in: query - maximum: 1000 - minimum: 2 - name: limit + name: device_execution_mode__eq type: integer - - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + - description: neq filter for the "device_execution_mode" field in: query - name: order + name: device_execution_mode__neq + type: integer + - description: in filter for the "device_execution_mode" field + in: query + name: device_execution_mode__in type: string - - description: The ID of the item after which to retrieve the next page. + - description: nin filter for the "device_execution_mode" field in: query - name: after + name: device_execution_mode__nin type: string - - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' + - description: eq filter for the "device_key" field in: query - name: include + name: device_key__eq type: string - - description: eq filter for the "lifecycle_status" field + - description: neq filter for the "device_key" field in: query - name: lifecycle_status__eq + name: device_key__neq type: string - - description: neq filter for the "lifecycle_status" field + - description: in filter for the "device_key" field in: query - name: lifecycle_status__neq + name: device_key__in type: string - - description: in filter for the "lifecycle_status" field + - description: nin filter for the "device_key" field in: query - name: lifecycle_status__in + name: device_key__nin type: string - - description: nin filter for the "lifecycle_status" field + - description: eq filter for the "endpoint_name" field in: query - name: lifecycle_status__nin + name: endpoint_name__eq type: string - - description: eq filter for the "operator_suspended" field + - description: neq filter for the "endpoint_name" field in: query - name: operator_suspended__eq - type: boolean - - description: neq filter for the "operator_suspended" field + name: endpoint_name__neq + type: string + - description: in filter for the "endpoint_name" field in: query - name: operator_suspended__neq - type: boolean - - description: eq filter for the "last_operator_suspended_category" field + name: endpoint_name__in + type: string + - description: nin filter for the "endpoint_name" field in: query - name: last_operator_suspended_category__eq + name: endpoint_name__nin type: string - - description: neq filter for the "last_operator_suspended_category" field + - description: eq filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__neq + name: endpoint_type__eq type: string - - description: in filter for the "last_operator_suspended_category" field + - description: neq filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__in + name: endpoint_type__neq type: string - - description: nin filter for the "last_operator_suspended_category" field + - description: in filter for the "endpoint_type" field in: query - name: last_operator_suspended_category__nin + name: endpoint_type__in type: string - - description: in filter for the "last_operator_suspended_updated_at" field + - description: nin filter for the "endpoint_type" field in: query - name: last_operator_suspended_updated_at__in + name: endpoint_type__nin type: string - - description: nin filter for the "last_operator_suspended_updated_at" field + - description: in filter for the "enrolment_list_timestamp" field in: query - name: last_operator_suspended_updated_at__nin + name: enrolment_list_timestamp__in type: string - - description: lte filter for the "last_operator_suspended_updated_at" field + - description: nin filter for the "enrolment_list_timestamp" field + in: query + name: enrolment_list_timestamp__nin + type: string + - description: lte filter for the "enrolment_list_timestamp" field format: date-time in: query - name: last_operator_suspended_updated_at__lte + name: enrolment_list_timestamp__lte type: string - - description: gte filter for the "last_operator_suspended_updated_at" field + - description: gte filter for the "enrolment_list_timestamp" field format: date-time in: query - name: last_operator_suspended_updated_at__gte + name: enrolment_list_timestamp__gte type: string - - description: eq filter for the "system_suspended" field + - description: eq filter for the "firmware_checksum" field in: query - name: system_suspended__eq - type: boolean - - description: neq filter for the "system_suspended" field + name: firmware_checksum__eq + type: string + - description: neq filter for the "firmware_checksum" field in: query - name: system_suspended__neq - type: boolean - - description: eq filter for the "last_system_suspended_category" field + name: firmware_checksum__neq + type: string + - description: in filter for the "firmware_checksum" field in: query - name: last_system_suspended_category__eq + name: firmware_checksum__in type: string - - description: neq filter for the "last_system_suspended_category" field + - description: nin filter for the "firmware_checksum" field in: query - name: last_system_suspended_category__neq + name: firmware_checksum__nin type: string - - description: in filter for the "last_system_suspended_category" field + - description: eq filter for the "host_gateway" field in: query - name: last_system_suspended_category__in + name: host_gateway__eq type: string - - description: nin filter for the "last_system_suspended_category" field + - description: neq filter for the "host_gateway" field in: query - name: last_system_suspended_category__nin + name: host_gateway__neq type: string - - description: in filter for the "last_system_suspended_updated_at" field + - description: in filter for the "host_gateway" field in: query - name: last_system_suspended_updated_at__in + name: host_gateway__in type: string - - description: nin filter for the "last_system_suspended_updated_at" field + - description: nin filter for the "host_gateway" field in: query - name: last_system_suspended_updated_at__nin + name: host_gateway__nin type: string - - description: lte filter for the "last_system_suspended_updated_at" field + - description: eq filter for the "id" field + in: query + name: id__eq + type: string + - description: neq filter for the "id" field + in: query + name: id__neq + type: string + - description: in filter for the "id" field + in: query + name: id__in + type: string + - description: nin filter for the "id" field + in: query + name: id__nin + type: string + - description: eq filter for the "manifest" field + in: query + name: manifest__eq + type: string + - description: neq filter for the "manifest" field + in: query + name: manifest__neq + type: string + - description: in filter for the "manifest" field + in: query + name: manifest__in + type: string + - description: nin filter for the "manifest" field + in: query + name: manifest__nin + type: string + - description: in filter for the "manifest_timestamp" field + in: query + name: manifest_timestamp__in + type: string + - description: nin filter for the "manifest_timestamp" field + in: query + name: manifest_timestamp__nin + type: string + - description: lte filter for the "manifest_timestamp" field format: date-time in: query - name: last_system_suspended_updated_at__lte + name: manifest_timestamp__lte type: string - - description: gte filter for the "last_system_suspended_updated_at" field + - description: gte filter for the "manifest_timestamp" field format: date-time in: query - name: last_system_suspended_updated_at__gte + name: manifest_timestamp__gte type: string - - description: eq filter for the "account_id" field + - description: eq filter for the "mechanism" field in: query - name: account_id__eq + name: mechanism__eq type: string - - description: neq filter for the "account_id" field + - description: neq filter for the "mechanism" field in: query - name: account_id__neq + name: mechanism__neq type: string - - description: in filter for the "account_id" field + - description: in filter for the "mechanism" field in: query - name: account_id__in + name: mechanism__in type: string - - description: nin filter for the "account_id" field + - description: nin filter for the "mechanism" field in: query - name: account_id__nin + name: mechanism__nin type: string - - description: eq filter for the "auto_update" field + - description: eq filter for the "mechanism_url" field in: query - name: auto_update__eq - type: boolean - - description: neq filter for the "auto_update" field + name: mechanism_url__eq + type: string + - description: neq filter for the "mechanism_url" field in: query - name: auto_update__neq - type: boolean - - description: in filter for the "bootstrap_expiration_date" field + name: mechanism_url__neq + type: string + - description: in filter for the "mechanism_url" field in: query - name: bootstrap_expiration_date__in + name: mechanism_url__in type: string - - description: nin filter for the "bootstrap_expiration_date" field + - description: nin filter for the "mechanism_url" field in: query - name: bootstrap_expiration_date__nin + name: mechanism_url__nin type: string - - description: lte filter for the "bootstrap_expiration_date" field - format: date + - description: eq filter for the "name" field in: query - name: bootstrap_expiration_date__lte + name: name__eq type: string - - description: gte filter for the "bootstrap_expiration_date" field - format: date + - description: neq filter for the "name" field in: query - name: bootstrap_expiration_date__gte + name: name__neq type: string - - description: in filter for the "bootstrapped_timestamp" field + - description: in filter for the "name" field in: query - name: bootstrapped_timestamp__in + name: name__in type: string - - description: nin filter for the "bootstrapped_timestamp" field + - description: nin filter for the "name" field in: query - name: bootstrapped_timestamp__nin + name: name__nin type: string - - description: lte filter for the "bootstrapped_timestamp" field - format: date-time + - description: eq filter for the "net_id" field in: query - name: bootstrapped_timestamp__lte + name: net_id__eq type: string - - description: gte filter for the "bootstrapped_timestamp" field - format: date-time + - description: neq filter for the "net_id" field in: query - name: bootstrapped_timestamp__gte + name: net_id__neq type: string - - description: eq filter for the "ca_id" field + - description: in filter for the "net_id" field in: query - name: ca_id__eq + name: net_id__in type: string - - description: neq filter for the "ca_id" field + - description: nin filter for the "net_id" field in: query - name: ca_id__neq + name: net_id__nin type: string - - description: in filter for the "ca_id" field + - description: eq filter for the "serial_number" field in: query - name: ca_id__in + name: serial_number__eq type: string - - description: nin filter for the "ca_id" field + - description: neq filter for the "serial_number" field in: query - name: ca_id__nin + name: serial_number__neq type: string - - description: in filter for the "connector_expiration_date" field + - description: in filter for the "serial_number" field in: query - name: connector_expiration_date__in + name: serial_number__in + type: string + - description: nin filter for the "serial_number" field + in: query + name: serial_number__nin + type: string + - description: eq filter for the "state" field + in: query + name: state__eq type: string - - description: nin filter for the "connector_expiration_date" field + - description: neq filter for the "state" field in: query - name: connector_expiration_date__nin + name: state__neq type: string - - description: lte filter for the "connector_expiration_date" field - format: date + - description: in filter for the "state" field in: query - name: connector_expiration_date__lte + name: state__in type: string - - description: gte filter for the "connector_expiration_date" field - format: date + - description: nin filter for the "state" field in: query - name: connector_expiration_date__gte + name: state__nin type: string - - description: in filter for the "created_at" field + - description: in filter for the "updated_at" field in: query - name: created_at__in + name: updated_at__in type: string - - description: nin filter for the "created_at" field + - description: nin filter for the "updated_at" field in: query - name: created_at__nin + name: updated_at__nin type: string - - description: lte filter for the "created_at" field + - description: lte filter for the "updated_at" field format: date-time in: query - name: created_at__lte + name: updated_at__lte type: string - - description: gte filter for the "created_at" field + - description: gte filter for the "updated_at" field format: date-time in: query - name: created_at__gte + name: updated_at__gte type: string - - description: eq filter for the "deployed_state" field + - description: eq filter for the "vendor_id" field in: query - name: deployed_state__eq + name: vendor_id__eq type: string - - description: neq filter for the "deployed_state" field + - description: neq filter for the "vendor_id" field in: query - name: deployed_state__neq + name: vendor_id__neq type: string - - description: in filter for the "deployed_state" field + - description: in filter for the "vendor_id" field in: query - name: deployed_state__in + name: vendor_id__in type: string - - description: nin filter for the "deployed_state" field + - description: nin filter for the "vendor_id" field in: query - name: deployed_state__nin + name: vendor_id__nin type: string - - description: eq filter for the "deployment" field + responses: + '200': + description: Request successful. + schema: + $ref: '#/definitions/DevicePage' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find page. + summary: List all devices. + tags: + - Device directory - devices + x-filter: *id031 + x-origin: /home/circleci/project/device-directory/public/swagger.yml + post: + description: Create a new device in Device Management. Usually you do not need + to create a device this way, as it is automatically created when it bootstraps + or connects to Device Management. + operationId: Device_create + parameters: + - in: body + name: Device + required: true + schema: + $ref: '#/definitions/DeviceDataPostRequest' + responses: + '201': + description: Device created. + schema: + $ref: '#/definitions/DeviceData' + '400': + description: 'Validation error: The data used to create the device did not + validate.' + '401': + description: Not authenticated. + '403': + description: Account limit reached. Could not create device. + '409': + description: Unique-constrained fields are used by other resources. + summary: Create a device. + tags: + - Device directory - devices + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/devices/{device-id}/certificates/{certificate-name}/renew: + post: + description: 'Request a certificate renewal. + + + **Example:** + + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-length: 0'' + + ```' + operationId: RequestCertificateRenewal + parameters: + - description: The device ID. + in: path + name: device-id + pattern: '[0-9a-fA-F]{32}' + required: true + type: string + - description: The certificate name. + in: path + name: certificate-name + pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + required: true + type: string + responses: + '201': + description: Created. + schema: + $ref: '#/definitions/CertificateEnrollment' + '400': + description: 'Validation error: There is no certificate issuer configured + for this certificate.' + schema: + $ref: '#/definitions/ErrorObjectResponse' + '401': + description: You are not authorized to perform the action. + schema: + $ref: '#/definitions/ErrorObjectResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorObjectResponse' + '404': + description: The device ID or certificate name is not found. + schema: + $ref: '#/definitions/ErrorObjectResponse' + '409': + description: Conflict. A renewal request for this certificate is in progress. + schema: + $ref: '#/definitions/ErrorObjectResponse' + '423': + description: 'Either: + + - Operation not supported for this device. + + - The device is not connected.' + schema: + $ref: '#/definitions/ErrorObjectResponse' + summary: Request certificate renewal. + tags: + - Device security - device certificate renewals + x-origin: /home/circleci/project/certificate-enrollment/public/swagger.yaml + /v3/devices/{device-id}/echo: + get: + description: 'Retrieve the Device Echo object, which represents the last known + state of the device. The state includes the resources and their reported values + with the desired state of the device. + + Auto-observable and subscribed resources are stored as the reported state + of the device. To change the desired state, issue write commands with `/v2/device-requests/{device-id}`. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/{device-id}/echo + -H ''Authorization: Bearer '' + + ```' + operationId: getDeviceEchoObject + parameters: + - description: The device ID generated by Device Management. + format: UUID, 32 hexadecimal characters + in: path + name: device-id + required: true + type: string + produces: + - application/json + responses: + 200: + description: Device found and returned. + schema: + $ref: '#/definitions/EchoDevice' + 401: + description: Authentication failure. + 404: + description: Device not found from Device Echo. + summary: Get the Device Echo object. + tags: + - Device Echo + x-origin: /home/circleci/project/device-server/public/swagger.yaml + /v3/devices/{device_id}/logs: + get: + description: 'Retrieve logs for a given device based on a combination of filters. + + + **Example usage:** + + ``` + + curl -X GET \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/devices/{device_id}/logs + + ``` + + ' + operationId: ListSingleGatewayDeviceLogs + parameters: + - description: The id of the device + in: path + name: device_id + required: true + type: string + - default: 100 + description: Limit the number of returned results. The default value is 100. in: query - name: deployment__eq + maximum: 1000 + minimum: 2 + name: limit + required: false + type: integer + - description: The entity ID to fetch after the given one. + in: query + name: after + required: false type: string - - description: neq filter for the "deployment" field + - default: DESC + description: 'Record order. Acceptable values: ASC, DESC.' + enum: *id032 in: query - name: deployment__neq + name: order + required: false type: string - - description: in filter for the "deployment" field + - description: 'Comma-separated additional data to return. Currently supported: + total_count' in: query - name: deployment__in + name: include + required: false type: string - - description: nin filter for the "deployment" field + - description: RFC 3339 UTC timestamp range upper limit. + format: date-time in: query - name: deployment__nin + name: timestamp__lte + required: false type: string - - description: eq filter for the "description" field + - description: RFC 3339 UTC timestamp range lower limit. + format: date-time in: query - name: description__eq + name: timestamp__gte + required: false type: string - - description: neq filter for the "description" field + - description: Name of the application on a device that generated logs. in: query - name: description__neq + name: app_name__eq + required: false type: string - - description: in filter for the "description" field + - description: Device log type filter. in: query - name: description__in + name: type__eq + required: false type: string - - description: nin filter for the "description" field + - description: Device log message filter. in: query - name: description__nin + name: message__eq + required: false + type: string + - description: Minimum severity level of logs to retrieve. + enum: *id033 + in: query + name: level__gte + required: false + type: string + responses: + '200': + description: Retrieved logs successfully + schema: + $ref: '#/definitions/LogsPage' + '400': + description: Bad request + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Not found + schema: + $ref: '#/definitions/ErrorResponse' + summary: Return the logs for a specific device. + tags: + - Gateway Logs Public API + x-filter: + app_name: + - eq + level: + - gte + message: + - eq + timestamp: + - lte + - gte + type: + - eq + x-origin: /home/circleci/project/gateway/public/logs.yaml + /v3/devices/{id}/: + delete: + description: Delete device. Only available for devices with a developer certificate. + Attempting to delete a device with a production certificate returns a 400 + response. + operationId: Device_destroy + parameters: + - description: The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) + created by Device Management. + in: path + name: id + required: true type: string - - description: eq filter for the "device_class" field - in: query - name: device_class__eq + responses: + '204': + description: Device deleted. + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to delete device because it can't be found. + summary: Delete a device. + tags: + - Device directory - devices + x-origin: /home/circleci/project/device-directory/public/swagger.yml + get: + description: 'Retrieve information about a specific device. This API returns + [DeviceData](https://www.pelion.com/docs/device-management-api/device-directory/). + If you want to see the structure of resources in the device or the actual + resource values, use the [Connect API](https://www.pelion.com/docs/device-management-api/connect/). + + + **Example:** + + Following example must be updated with the device''s ID to the URL. The id + is from of "01667c6e992c00000000000100100370" + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \ + + -H ''Authorization: Bearer '' + + ```' + operationId: Device_retrieve + parameters: + - description: The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) + created by Device Management. + in: path + name: id + required: true type: string - - description: neq filter for the "device_class" field - in: query - name: device_class__neq + responses: + '200': + description: Retrieved result successfully. + schema: + $ref: '#/definitions/DeviceData' + '400': + description: Bad request. + '401': + description: Not authenticated. + '404': + description: Unable to find device. + summary: Get a device. + tags: + - Device directory - devices + x-origin: /home/circleci/project/device-directory/public/swagger.yml + put: + description: 'Update a specific device. + + + **Example:** + + Following example will update the specific devices description field to contain + "Testing description field". + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"description": "Testing description field"}'' + + ```' + operationId: Device_update + parameters: + - description: The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) + created by Device Management. + in: path + name: id + required: true type: string - - description: in filter for the "device_class" field - in: query - name: device_class__in + - in: body + name: Device + required: true + schema: + $ref: '#/definitions/DeviceDataPutRequest' + responses: + '200': + description: Device updated. + schema: + $ref: '#/definitions/DeviceData' + '400': + description: 'Validation error: The data used to update the device did not + validate.' + '401': + description: Not authenticated. + '404': + description: Unable to update device because it can't be found. + summary: Update a device. + tags: + - Device directory - devices + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/devices/{id}/resume: + post: + description: '[Returning a device to service](https://www.pelion.com/docs/device-management/current/device-management/managing-devices-in-your-account.html#using-the-api-suspending-and-resuming-devices) + allows the device to connect to Device Management again. The connection is + established according to the device''s reconnection logic. The device reports + a [registration event](https://www.pelion.com/docs/device-management-api/connect/) + through a [notification channel](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html). + + + The default reconnection logic is a progressive back-off for 2, 4, 8, or 16 + seconds, up to one week. All API functionality is restored. + + + **Example:** + + + The following example enables a device to reconnect to Pelion Device Management. + The category must match the reason device was suspended. This device was reported + stolen, but was found: + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices//resume + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "category": "lost_or_stolen", "description": "Was found, was not stolen + but miss placed"}'' + + ```' + operationId: Device_resume + parameters: + - description: The ID of the device. + in: path + name: id + required: true type: string - - description: nin filter for the "device_class" field - in: query - name: device_class__nin + - description: The device block. + in: body + name: Block + required: true + schema: &id034 + properties: + category: + description: The reference of the block category. + example: maintenance + pattern: '[a-z0-9_]{0,32}' + type: string + description: + description: The most recent description of why the device was suspended + or returned to service. + example: Suspended for maintenance. + maxLength: 2000 + type: string + type: object + responses: + '204': + description: Ok - Device returned to service. + '400': + description: Bad request. + '401': + description: Unauthorized. + '404': + description: Not Found - Could not find device. + summary: Return a device to service. + tags: + - Device directory - lifecycle + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/devices/{id}/suspend: + post: + description: "[Suspending a device](https://www.pelion.com/docs/device-management/current/device-management/managing-devices-in-your-account.html#suspending-and-resuming-devices)\ + \ prevents it from connecting to Device Management. If a device is currently\ + \ connected, it disconnects and shows as deregistered.\n\nYou can also receive\ + \ [deregistration events](https://www.pelion.com/docs/device-management-api/connect/)\ + \ in [notification channels](https://www.pelion.com/docs/device-management/current/integrate-web-app/event-notification.html).\n\ + \nAPI operations needing device transactions fail while a device is suspended.\n\ + \nExample use case to use suspending is that device is reported lost or stolen.\ + \ You can block the device to connect and this way prevent device to cause\ + \ unreliable data to your system.\n\n ***Example:*\n\n The following example\ + \ suspends a device with category \"Lost or stolen\". You can see available\ + \ categories with '/v3/device-block-categories/'.\n ```\n curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices//suspend\ + \ \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ + \ \\\n -d '{ \"category\": \"lost_or_stolen\", \"description\": \"EXAMPLE:\ + \ Customer contacted via phone and reported device being stolen. Specific\ + \ time of the theft was not know. Device last used in May/2019\"}'\n ```" + operationId: Device_suspend + parameters: + - description: The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) + created by Device Management. + in: path + name: id + required: true type: string - - description: eq filter for the "device_execution_mode" field - in: query - name: device_execution_mode__eq - type: integer - - description: neq filter for the "device_execution_mode" field + - description: The device block. + in: body + name: Block + required: true + schema: *id034 + responses: + '204': + description: Ok - Device suspended. + '400': + description: Bad request. + '401': + description: Unauthorized. + '404': + description: Not found - Could not find device. + summary: Suspend a device. + tags: + - Device directory - lifecycle + x-origin: /home/circleci/project/device-directory/public/swagger.yml + /v3/firmware-images: + get: + description: 'List all firmware images. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Image_list + parameters: + - description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to + the closest limit. in: query - name: device_execution_mode__neq + maximum: 1000 + minimum: 2 + name: limit type: integer - - description: in filter for the "device_execution_mode" field - in: query - name: device_execution_mode__in - type: string - - description: nin filter for the "device_execution_mode" field - in: query - name: device_execution_mode__nin - type: string - - description: eq filter for the "device_key" field - in: query - name: device_key__eq - type: string - - description: neq filter for the "device_key" field + - description: ASC or DESC. in: query - name: device_key__neq + name: order type: string - - description: in filter for the "device_key" field + - description: The ID of the item after which to retrieve the next page. in: query - name: device_key__in + name: after type: string - - description: nin filter for the "device_key" field + - description: 'A comma-separated list of data fields to return. Currently supported: + total_count.' in: query - name: device_key__nin + name: include type: string - - description: eq filter for the "endpoint_name" field + - description: "URL-encoded query string parameter to filter returned data.\n\ + \n`?filter={URL-encoded query string}`\n\n###### Filterable fields:\n\n\ + The table lists all the fields that can be filtered on with certain filters:\n\ + \n\n \n \n \n \n \n \n\ + \ \n \n \n \n \n \ + \ \n \n \n \ + \ \n \n \n \n \ + \ \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \n \n \n
Field= / __eq\ + \ / __neq__in / __nin__lte / __gte
created_at\u2713\u2713\u2713
datafile\u2713\u2713 
datafile_checksum\u2713\u2713 
datafile_size\u2713\u2713 
description\u2713\u2713 
etag\u2713\u2713\u2713
id\u2713\u2713 
name\u2713\u2713 
updated_at\u2713\u2713\ + \u2713
\n \n\n\ + The query string is made up of key-value pairs separated by ampersands.\ + \ For example, this query:\n`key1=value1&key2=value2&key3=value3`\n\nwould\ + \ be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ + \n\n**Filtering by properties**\n`name__eq=myimage`\n\n**Filtering on date-time\ + \ fields**\n\nDate-time fields should be specified in UTC RFC3339 format,\ + \ `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\n*\ + \ UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ + * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ + \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ + \nDate-time filtering supports three operators:\n\n* equality by appending\ + \ `__eq` to the field name\n* greater than or equal to by appending `__gte`\ + \ to the field name\n* less than or equal to by appending `__lte` to the\ + \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ + \nTime ranges may be specified by including both the `__gte` and `__lte`\ + \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering on multiple fields**\n\n`name__eq=myimage&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering with filter operators**\n\nString field filtering supports\ + \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ + * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ + \ of parameters must be comma-separated:\n\n`name__in=fw-image1,fw-image2`" in: query - name: endpoint_name__eq + name: filter type: string - - description: neq filter for the "endpoint_name" field + - description: in filter for the "created_at" field in: query - name: endpoint_name__neq + name: created_at__in type: string - - description: in filter for the "endpoint_name" field + - description: nin filter for the "created_at" field in: query - name: endpoint_name__in + name: created_at__nin type: string - - description: nin filter for the "endpoint_name" field + - description: lte filter for the "created_at" field + format: date-time in: query - name: endpoint_name__nin + name: created_at__lte type: string - - description: eq filter for the "endpoint_type" field + - description: gte filter for the "created_at" field + format: date-time in: query - name: endpoint_type__eq + name: created_at__gte type: string - - description: neq filter for the "endpoint_type" field + - description: eq filter for the "datafile" field in: query - name: endpoint_type__neq + name: datafile__eq type: string - - description: in filter for the "endpoint_type" field + - description: neq filter for the "datafile" field in: query - name: endpoint_type__in + name: datafile__neq type: string - - description: nin filter for the "endpoint_type" field + - description: in filter for the "datafile" field in: query - name: endpoint_type__nin + name: datafile__in type: string - - description: in filter for the "enrolment_list_timestamp" field + - description: nin filter for the "datafile" field in: query - name: enrolment_list_timestamp__in + name: datafile__nin type: string - - description: nin filter for the "enrolment_list_timestamp" field + - description: eq filter for the "datafile_checksum" field in: query - name: enrolment_list_timestamp__nin + name: datafile_checksum__eq type: string - - description: lte filter for the "enrolment_list_timestamp" field - format: date-time + - description: neq filter for the "datafile_checksum" field in: query - name: enrolment_list_timestamp__lte + name: datafile_checksum__neq type: string - - description: gte filter for the "enrolment_list_timestamp" field - format: date-time + - description: in filter for the "datafile_checksum" field in: query - name: enrolment_list_timestamp__gte + name: datafile_checksum__in type: string - - description: eq filter for the "firmware_checksum" field + - description: nin filter for the "datafile_checksum" field in: query - name: firmware_checksum__eq + name: datafile_checksum__nin type: string - - description: neq filter for the "firmware_checksum" field + - description: eq filter for the "datafile_size" field + format: int64 in: query - name: firmware_checksum__neq - type: string - - description: in filter for the "firmware_checksum" field + name: datafile_size__eq + type: integer + - description: neq filter for the "datafile_size" field + format: int64 in: query - name: firmware_checksum__in + name: datafile_size__neq + type: integer + - description: in filter for the "datafile_size" field + in: query + name: datafile_size__in type: string - - description: nin filter for the "firmware_checksum" field + - description: nin filter for the "datafile_size" field in: query - name: firmware_checksum__nin + name: datafile_size__nin type: string - - description: eq filter for the "host_gateway" field + - description: eq filter for the "description" field in: query - name: host_gateway__eq + name: description__eq type: string - - description: neq filter for the "host_gateway" field + - description: neq filter for the "description" field in: query - name: host_gateway__neq + name: description__neq type: string - - description: in filter for the "host_gateway" field + - description: in filter for the "description" field in: query - name: host_gateway__in + name: description__in type: string - - description: nin filter for the "host_gateway" field + - description: nin filter for the "description" field in: query - name: host_gateway__nin + name: description__nin type: string - description: eq filter for the "id" field in: query @@ -19945,71 +27261,279 @@ paths: in: query name: id__nin type: string - - description: eq filter for the "manifest" field + - description: eq filter for the "name" field in: query - name: manifest__eq + name: name__eq type: string - - description: neq filter for the "manifest" field + - description: neq filter for the "name" field in: query - name: manifest__neq + name: name__neq type: string - - description: in filter for the "manifest" field + - description: in filter for the "name" field in: query - name: manifest__in + name: name__in type: string - - description: nin filter for the "manifest" field + - description: nin filter for the "name" field in: query - name: manifest__nin + name: name__nin type: string - - description: in filter for the "manifest_timestamp" field + - description: in filter for the "updated_at" field in: query - name: manifest_timestamp__in + name: updated_at__in type: string - - description: nin filter for the "manifest_timestamp" field + - description: nin filter for the "updated_at" field in: query - name: manifest_timestamp__nin + name: updated_at__nin + type: string + - description: lte filter for the "updated_at" field + format: date-time + in: query + name: updated_at__lte + type: string + - description: gte filter for the "updated_at" field + format: date-time + in: query + name: updated_at__gte + type: string + responses: + '200': + description: Request successful. + schema: + $ref: '#/definitions/FirmwareImagePage' + '400': + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Unable to find content. + schema: + $ref: '#/definitions/ErrorResponse' + summary: List all images + tags: + - Device update - firmware images + x-filter: + created_at: + - in + - nin + - lte + - gte + datafile: + - eq + - neq + - in + - nin + datafile_checksum: + - eq + - neq + - in + - nin + datafile_size: + - eq + - neq + - in + - nin + description: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + updated_at: + - in + - nin + - lte + - gte + x-origin: /home/circleci/project/update-service/public/swagger.yml + post: + consumes: + - multipart/form-data + description: 'Create a firmware image. + +
**Note:** Only use this API for images smaller than 100 MB. For larger + images, [upload in chunks](https://www.pelion.com/docs/device-management/current/updating-firmware/uploading-a-large-firmware-image.html). + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-images \ + + -H ''Authorization: Bearer '' \ + + -H ''Content-Type: multipart/form-data'' \ + + -F ''datafile=@myimage.bin;type=application/octet-stream'' + + -F ''description=bla bla'' \ + + -F ''name=My Linux Image'' + + ``` + + ' + operationId: Firmware_Image_create + parameters: + - description: The firmware image file to upload. File name must not exceed + 166 characters. + in: formData + maxLength: 166 + name: datafile + required: true + type: file + - description: The description of the firmware image. + format: free text + in: formData + maxLength: 2000 + name: description + required: false type: string - - description: lte filter for the "manifest_timestamp" field - format: date-time - in: query - name: manifest_timestamp__lte + - description: The name of the firmware image. + format: free text + in: formData + maxLength: 128 + name: name type: string - - description: gte filter for the "manifest_timestamp" field - format: date-time + responses: + '201': + description: Firmware image created. The API gateway enforces the account-specific + file size. + schema: + $ref: '#/definitions/FirmwareImage' + '400': + description: Cannot validate the data used to create the firmware image. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + 413: + description: Firmware image too large. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create an image + tags: + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + /v3/firmware-images/upload-jobs: + get: + description: 'Get all upload jobs. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Upload_Job_List + parameters: + - description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to + the closest limit. in: query - name: manifest_timestamp__gte - type: string - - description: eq filter for the "mechanism" field + maximum: 1000 + minimum: 2 + name: limit + type: integer + - description: ASC or DESC. in: query - name: mechanism__eq + name: order type: string - - description: neq filter for the "mechanism" field + - description: The ID of the item after which to retrieve the next page. in: query - name: mechanism__neq + name: after type: string - - description: in filter for the "mechanism" field + - description: 'A comma-separated list of data fields to return. Currently supported: + total_count.' in: query - name: mechanism__in + name: include type: string - - description: nin filter for the "mechanism" field + - description: "URL-encoded query string parameter to filter returned data.\n\ + \n`?filter={URL-encoded query string}`\n\n###### Filterable fields:\n\n\ + The table lists all the fields that can be filtered on with certain filters:\n\ + \n\n \n \n \n \n \n \n\ + \ \n \n \n \n \n \n \n \n \n \n\ + \ \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n
Field= / __eq\ + \ / __neq__in / __nin__lte / __gte
name\u2713\ + \u2713 
description\u2713\u2713 
complete\u2713\u2713
id\u2713\u2713 
firmware_image_id\u2713\ + \u2713 
status\u2713\u2713 
created_at\u2713\u2713\u2713
etag\u2713\u2713\ + \u2713
updated_at\u2713\u2713\u2713
\n \n\nThe query string is made up of\ + \ key-value pairs separated by ampersands. For example, this query:\n`key1=value1&key2=value2&key3=value3`\n\ + \nwould be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ + \n\n**Filtering by properties**\n`name__eq=myimage`\n\n**Filtering on date-time\ + \ fields**\n\nDate-time fields should be specified in UTC RFC3339 format,\ + \ `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\n*\ + \ UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ + * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ + \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ + \nDate-time filtering supports three operators:\n\n* equality by appending\ + \ `__eq` to the field name\n* greater than or equal to by appending `__gte`\ + \ to the field name\n* less than or equal to by appending `__lte` to the\ + \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ + \nTime ranges may be specified by including both the `__gte` and `__lte`\ + \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering on multiple fields**\n\n`name__eq=myimage&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering with filter operators**\n\nString field filtering supports\ + \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ + * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ + \ of parameters must be comma-separated:\n\n`name__in=fw-image1,fw-image2`" in: query - name: mechanism__nin + name: filter type: string - - description: eq filter for the "mechanism_url" field + - description: in filter for the "updated_at" field in: query - name: mechanism_url__eq + name: updated_at__in type: string - - description: neq filter for the "mechanism_url" field + - description: nin filter for the "updated_at" field in: query - name: mechanism_url__neq + name: updated_at__nin type: string - - description: in filter for the "mechanism_url" field + - description: lte filter for the "updated_at" field + format: date-time in: query - name: mechanism_url__in + name: updated_at__lte type: string - - description: nin filter for the "mechanism_url" field + - description: gte filter for the "updated_at" field + format: date-time in: query - name: mechanism_url__nin + name: updated_at__gte type: string - description: eq filter for the "name" field in: query @@ -20027,414 +27551,330 @@ paths: in: query name: name__nin type: string - - description: eq filter for the "serial_number" field + - description: in filter for the "created_at" field in: query - name: serial_number__eq + name: created_at__in type: string - - description: neq filter for the "serial_number" field + - description: nin filter for the "created_at" field in: query - name: serial_number__neq + name: created_at__nin type: string - - description: in filter for the "serial_number" field + - description: lte filter for the "created_at" field + format: date-time in: query - name: serial_number__in + name: created_at__lte type: string - - description: nin filter for the "serial_number" field + - description: gte filter for the "created_at" field + format: date-time in: query - name: serial_number__nin + name: created_at__gte type: string - - description: eq filter for the "state" field + - description: eq filter for the "description" field in: query - name: state__eq + name: description__eq type: string - - description: neq filter for the "state" field + - description: neq filter for the "description" field in: query - name: state__neq + name: description__neq type: string - - description: in filter for the "state" field + - description: in filter for the "description" field in: query - name: state__in + name: description__in type: string - - description: nin filter for the "state" field + - description: nin filter for the "description" field in: query - name: state__nin + name: description__nin type: string - - description: in filter for the "updated_at" field + - description: eq filter for the "id" field in: query - name: updated_at__in + name: id__eq type: string - - description: nin filter for the "updated_at" field + - description: neq filter for the "id" field in: query - name: updated_at__nin + name: id__neq type: string - - description: lte filter for the "updated_at" field - format: date-time + - description: in filter for the "id" field in: query - name: updated_at__lte + name: id__in type: string - - description: gte filter for the "updated_at" field - format: date-time + - description: nin filter for the "id" field in: query - name: updated_at__gte + name: id__nin type: string - - description: eq filter for the "vendor_id" field + - description: eq filter for the "complete" field in: query - name: vendor_id__eq + name: complete__eq + type: boolean + - description: neq filter for the "complete" field + in: query + name: complete__neq + type: boolean + - description: eq filter for the "status" field + in: query + name: status__eq type: string - - description: neq filter for the "vendor_id" field + - description: neq filter for the "status" field in: query - name: vendor_id__neq + name: status__neq type: string - - description: in filter for the "vendor_id" field + - description: in filter for the "status" field in: query - name: vendor_id__in + name: status__in type: string - - description: nin filter for the "vendor_id" field + - description: nin filter for the "status" field in: query - name: vendor_id__nin + name: status__nin type: string responses: - '200': - description: Request successful. + 200: + description: Ok. schema: - $ref: '#/definitions/DevicePage' - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to find page. - summary: List all devices. + $ref: '#/definitions/UploadJobPage' + 400: + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get all upload jobs tags: - - Device directory - devices - x-filter: *id025 - x-origin: /home/circleci/project/device-directory/public/swagger.yml + - Device update - firmware images + x-filter: + complete: + - eq + - neq + created_at: + - in + - nin + - lte + - gte + description: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + status: + - eq + - neq + - in + - nin + updated_at: + - in + - nin + - lte + - gte + x-origin: /home/circleci/project/update-service/public/swagger.yml post: - description: Create a new device. - operationId: Device_create + description: "Create a new upload job\n
\n**Usage example:**\n```\ncurl -X\ + \ POST https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"name\": \"New Linux update\",\n \"description\": \"New Linux\ + \ update for my devices\"\n}'\n```\n" + operationId: Upload_Job_Create parameters: - - in: body - name: Device + - description: Upload job. + in: body + name: Upload job required: true schema: - $ref: '#/definitions/DeviceDataPostRequest' + properties: + description: *id035 + name: *id036 + type: object responses: - '201': - description: Device created. + 201: + description: Success - New job created. + headers: + Location: + description: URL of the metadata for the created upload job. + type: string schema: - $ref: '#/definitions/DeviceData' - '400': - description: 'Validation error: The data used to create the device did not - validate.' - '401': - description: Not authenticated. - '403': - description: Account limit reached. Could not create device. - '409': - description: Unique-constrained fields are used by other resources. - summary: Create a device. + $ref: '#/definitions/UploadJob' + 400: + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 409: + description: Conflict. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Create a new upload job. tags: - - Device directory - devices - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devices/{device-id}/certificates/{certificate-name}/renew: - post: - description: 'Request a certificate renewal. - + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + /v3/firmware-images/upload-jobs/{upload_job_id}: + delete: + description: 'Delete an upload job. - **Example:** +
+ **Usage example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012 \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' - -H ''content-length: 0'' + ``` - ```' - operationId: RequestCertificateRenewal + ' + operationId: Upload_Job_Delete parameters: - - description: The device ID. - in: path - name: device-id - pattern: '[0-9a-fA-F]{32}' - required: true - type: string - - description: The certificate name. + - description: The upload job ID. in: path - name: certificate-name - pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: - '201': - description: Created. - schema: - $ref: '#/definitions/CertificateEnrollment' - '400': - description: 'Validation error: There is no certificate issuer configured - for this certificate.' - schema: - $ref: '#/definitions/ErrorObjectResponse' - '401': - description: You are not authorized to perform the action. - schema: - $ref: '#/definitions/ErrorObjectResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorObjectResponse' - '404': - description: The device ID or certificate name is not found. + 204: + description: Job deleted - no content to show. + 400: + description: Bad Request. schema: - $ref: '#/definitions/ErrorObjectResponse' - '409': - description: Conflict. A renewal request for this certificate is in progress. + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. schema: - $ref: '#/definitions/ErrorObjectResponse' - '423': - description: 'Either: - - - Operation not supported for this device. - - - The device is not connected.' + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. schema: - $ref: '#/definitions/ErrorObjectResponse' - summary: Request certificate renewal. - tags: - - Device security - device certificate renewals - x-origin: /home/circleci/project/certificate-enrollment/public/swagger.yaml - /v3/devices/{id}/: - delete: - description: Delete device. Only available for devices with a developer certificate. - Attempting to delete a device with a production certicate returns a 400 response. - operationId: Device_destroy - parameters: - - description: The ID of the device. - in: path - name: id - required: true - type: string - responses: - '204': - description: Device deleted. - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to delete device because it can't be found. - summary: Delete a device. + $ref: '#/definitions/ErrorResponse' + summary: Delete an upload job tags: - - Device directory - devices - x-origin: /home/circleci/project/device-directory/public/swagger.yml + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml get: - description: 'Retrieve information about a specific device. + description: 'Get an upload job. +
- **Example:** - - Following example must be updated with the device''s ID to the URL. The id - is from of "01667c6e992c00000000000100100370" + **Usage example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \ - - -H ''Authorization: Bearer '' - - ```' - operationId: Device_retrieve - parameters: - - description: The ID of the device. - in: path - name: id - required: true - type: string - responses: - '200': - description: Retrieved result successfully. - schema: - $ref: '#/definitions/DeviceData' - '400': - description: Bad request. - '401': - description: Not authenticated. - '404': - description: Unable to find device. - summary: Get a device. - tags: - - Device directory - devices - x-origin: /home/circleci/project/device-directory/public/swagger.yml - put: - description: 'Update a specific device. - - - **Example:** + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012 + \ - Following example will update the specific devices description field to contain - "Testing description field". + -H ''Authorization: Bearer '' ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"description": "Testing description field"}'' - - ```' - operationId: Device_update + ' + operationId: Upload_Job_Retrieve parameters: - - description: The ID of the device. + - description: The upload job ID. in: path - name: id + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - in: body - name: Device - required: true - schema: - $ref: '#/definitions/DeviceDataPutRequest' responses: - '200': - description: Device updated. + 200: + description: Ok. schema: - $ref: '#/definitions/DeviceData' - '400': - description: 'Validation error: The data used to update the device did not - validate.' - '401': - description: Not authenticated. - '404': - description: Unable to update device because it can't be found. - summary: Update a device. + $ref: '#/definitions/UploadJob' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Retrieve information for an upload job tags: - - Device directory - devices - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devices/{id}/resume: - post: - description: 'Returning a device to service restores connectivity to the device. - All API functionality is restored. - - - **Example:** - - Following example enables device to connect again to Pelion Device Management. - Note that the category must match the reason why device was suspended. This - device was reported stolen but was now found. - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices//resume - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{ "category": "lost_or_stolen", "description": "Was found, was not stolen - but miss placed"}'' - - ```' - operationId: Device_resume + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + put: + description: "Update an upload job.\n
\n**Usage example:**\n```\ncurl -X\ + \ PUT https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012\ + \ \\\n-H 'Authorization: Bearer ' \\\n-d '{\n \"name\": \"New Linux\ + \ update\",\n \"description\": \"New Linux update for my class XX devices\"\ + \n}'\n```\n" + operationId: Upload_Job_Update parameters: - - description: The ID of the device. + - description: The upload job ID. in: path - name: id + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The device block. + - description: Upload job. in: body - name: Block + name: Upload job required: true - schema: &id026 + schema: properties: - category: - description: The reference of the block category. - example: maintenance - pattern: '[a-z0-9_]{0,32}' - type: string - description: - description: The most recent description of why the device was suspended - or returned to service. - example: Suspended for maintenance. - maxLength: 2000 - type: string + description: *id035 + name: *id036 type: object responses: - '204': - description: Ok - Device returned to service. - '400': - description: Bad request. - '401': - description: Unauthorized. - '404': - description: Not Found - Could not find device. - summary: Return a device to service. + 200: + description: Ok. + schema: + $ref: '#/definitions/UploadJob' + 400: + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update an upload job tags: - - Device directory - lifecycle - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/devices/{id}/suspend: - post: - description: 'Suspending a device prevents it from connecting to Device Management. - If a device is currently connected, it will be disconnected. Some API operations - will fail while a device is suspended. - + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + /v3/firmware-images/upload-jobs/{upload_job_id}/chunks: + get: + description: 'List all metadata for uploaded chunks. - ***Example:* +
- Following example suspends a device with category "Lost or stolen". You can - see available categories with ''/v3/device-block-categories/''. + **Usage example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices//suspend + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012/chunks \ - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ + -H ''Authorization: Bearer '' - -d ''{ "category": "lost_or_stolen", "description": "EXAMPLE: Customer contacted - via phone and reported device being stolen. Specific time of the theft was - not know. Device last used in May/2019"}'' + ``` - ```' - operationId: Device_suspend + ' + operationId: Upload_Job_Chunk_List parameters: - - description: The ID of the device. + - description: The upload job ID. in: path - name: id + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The device block. - in: body - name: Block - required: true - schema: *id026 - responses: - '204': - description: Ok - Device suspended. - '400': - description: Bad request. - '401': - description: Unauthorized. - '404': - description: Not found - Could not find device. - summary: Suspend a device. - tags: - - Device directory - lifecycle - x-origin: /home/circleci/project/device-directory/public/swagger.yml - /v3/firmware-images/: - get: - description: List all firmware images. - operationId: Firmware_Image_list - parameters: - description: How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit. @@ -20443,16 +27883,16 @@ paths: minimum: 2 name: limit type: integer - - description: ASC or DESC + - description: ASC or DESC. in: query name: order type: string - - description: The ID of the the item after which to retrieve the next page + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' in: query name: include type: string @@ -20463,26 +27903,21 @@ paths: \ / __neq\n __in / __nin\n __lte / __gte\n\ \ \n \n \n \n created_at\n \ \ \u2713\n \u2713\n \u2713\n \ - \ \n \n datafile\n \u2713\n \ - \ \u2713\n  \n \n \n datafile_checksum\n\ - \ \u2713\n \u2713\n  \n \ - \ \n \n datafile_size\n \u2713\n\ - \ \u2713\n  \n \n \n \ - \ description\n \u2713\n \u2713\n\ - \  \n \n \n etag\n \ - \ \u2713\n \u2713\n \u2713\n \n\ - \ \n id\n \u2713\n \u2713\n\ - \  \n \n \n name\n \ - \ \u2713\n \u2713\n  \n \n\ - \ \n updated_at\n \u2713\n \u2713\ - \n \u2713\n \n \n\n \n\n\ - The query string is made up of key-value pairs separated by ampersands.\ + \ \n \n etag\n \u2713\n \u2713\ + \n \u2713\n \n \n id\n \ + \ \u2713\n \u2713\n  \n \ + \ \n \n updated_at\n \u2713\n \ + \ \u2713\n \u2713\n \n \n \ + \ hash\n \u2713\n \u2713\n  \n\ + \ \n \n length\n \u2713\n \ + \ \u2713\n \u2713\n \n \n\n\ +  \n\nThe query string is made up of key-value pairs separated by ampersands.\ \ For example, this query:\n`key1=value1&key2=value2&key3=value3`\n\nwould\ \ be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ - \n\n**Filtering by properties**\n`name__eq=myimage`\n\n**Filtering on date-time\ - \ fields**\n\nDate-time fields should be specified in UTC RFC3339 format,\ - \ `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\n*\ - \ UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ + \n\n**Filtering by properties**\n`hash__eq=8FS70vXrq5y1VxAAssUMAg==`\n\n\ + **Filtering on date-time fields**\n\nDate-time fields should be specified\ + \ in UTC RFC3339 format, `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\ + \ variations:\n\n* UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ \nDate-time filtering supports three operators:\n\n* equality by appending\ @@ -20491,11 +27926,11 @@ paths: \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ \nTime ranges may be specified by including both the `__gte` and `__lte`\ \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering on multiple fields**\n\n`name__eq=myimage&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering on multiple fields**\n\n`status__eq=in_progress&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ \n**Filtering with filter operators**\n\nString field filtering supports\ \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n\n`name__in=fw-image1,fw-image2`" + \ of parameters must be comma-separated:\n\n`status__in=in_progress,success`" in: query name: filter type: string @@ -20517,80 +27952,14 @@ paths: in: query name: created_at__gte type: string - - description: eq filter for the "datafile" field - in: query - name: datafile__eq - type: string - - description: neq filter for the "datafile" field - in: query - name: datafile__neq - type: string - - description: in filter for the "datafile" field - in: query - name: datafile__in - type: string - - description: nin filter for the "datafile" field - in: query - name: datafile__nin - type: string - - description: eq filter for the "datafile_checksum" field - in: query - name: datafile_checksum__eq - type: string - - description: neq filter for the "datafile_checksum" field - in: query - name: datafile_checksum__neq - type: string - - description: in filter for the "datafile_checksum" field - in: query - name: datafile_checksum__in - type: string - - description: nin filter for the "datafile_checksum" field - in: query - name: datafile_checksum__nin - type: string - - description: eq filter for the "datafile_size" field - format: int64 - in: query - name: datafile_size__eq - type: integer - - description: neq filter for the "datafile_size" field - format: int64 - in: query - name: datafile_size__neq - type: integer - - description: in filter for the "datafile_size" field - in: query - name: datafile_size__in - type: string - - description: nin filter for the "datafile_size" field - in: query - name: datafile_size__nin - type: string - - description: eq filter for the "description" field - in: query - name: description__eq - type: string - - description: neq filter for the "description" field - in: query - name: description__neq - type: string - - description: in filter for the "description" field - in: query - name: description__in - type: string - - description: nin filter for the "description" field - in: query - name: description__nin - type: string - description: eq filter for the "id" field in: query name: id__eq - type: string + type: integer - description: neq filter for the "id" field in: query name: id__neq - type: string + type: integer - description: in filter for the "id" field in: query name: id__in @@ -20599,22 +27968,6 @@ paths: in: query name: id__nin type: string - - description: eq filter for the "name" field - in: query - name: name__eq - type: string - - description: neq filter for the "name" field - in: query - name: name__neq - type: string - - description: in filter for the "name" field - in: query - name: name__in - type: string - - description: nin filter for the "name" field - in: query - name: name__nin - type: string - description: in filter for the "updated_at" field in: query name: updated_at__in @@ -20633,40 +27986,73 @@ paths: in: query name: updated_at__gte type: string + - description: eq filter for the "hash" field + in: query + name: hash__eq + type: string + - description: neq filter for the "hash" field + in: query + name: hash__neq + type: string + - description: in filter for the "hash" field + in: query + name: hash__in + type: string + - description: nin filter for the "hash" field + in: query + name: hash__nin + type: string + - description: eq filter for the "length" field + in: query + name: length__eq + type: integer + - description: neq filter for the "length" field + in: query + name: length__neq + type: integer + - description: in filter for the "length" field + in: query + name: length__in + type: string + - description: nin filter for the "length" field + in: query + name: length__nin + type: string + - description: lte filter for the "length" field + in: query + name: length__lte + type: integer + - description: gte filter for the "length" field + in: query + name: length__gte + type: integer responses: - '200': - description: Request successful + 200: + description: Ok. schema: - $ref: '#/definitions/FirmwareImagePage' - '400': - description: Bad Request - '401': - description: Not authenticated - '404': - description: Unable to find content - summary: List all images + $ref: '#/definitions/UploadChunkInfoPage' + 400: + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: List all metadata for uploaded chunks + tags: + - Device update - firmware images x-filter: created_at: - in - nin - lte - gte - datafile: - - eq - - neq - - in - - nin - datafile_checksum: - - eq - - neq - - in - - nin - datafile_size: - - eq - - neq - - in - - nin - description: + hash: - eq - neq - in @@ -20676,11 +28062,13 @@ paths: - neq - in - nin - name: + length: - eq - neq - in - nin + - lte + - gte updated_at: - in - nin @@ -20689,45 +28077,244 @@ paths: x-origin: /home/circleci/project/update-service/public/swagger.yml post: consumes: - - multipart/form-data - description: Create a firmware image. - operationId: Firmware_Image_create + - application/octet-stream + description: 'Append a chunk to an upload job. To finish a job, upload a zero-length + chunk. + +
**Note:** Chunk size must be between 5MB and 100MB, the last chunk can + be less than 5MB; the maximum number of chunks is limited to 10,000. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012/chunks + \ + + -H ''Authorization: Bearer '' \ + + -H ''Content-MD5: Q2h1Y2sgSW51ZwDIAXR5IQ=='' \ + + -H ''Content-Type: binary/octet-stream'' \ + + --data-binary ''@chunkfile.bin'' + + ``` + + ' + operationId: Upload_Job_Chunk_Create parameters: - - description: The firmware image file to upload - in: formData - name: datafile + - description: The base64-encoded binary digest of the body (chunk data). + format: byte + in: header + name: Content-MD5 required: true - type: file - - description: The description of the firmware image - in: formData - name: description + type: string + - in: header + name: Content-Length + required: true + type: integer + - description: The upload job ID. + in: path + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + - description: Chunk. + in: body + name: chunk required: false + schema: + format: binary + type: string + responses: + 201: + description: Success - Chunk appended to the upload. + headers: + Content-Location: + description: URL of the metadata for the uploaded chunk. + type: string + Location: + description: URL of the metadata for the uploaded chunk. + type: string + schema: + $ref: '#/definitions/UploadChunkInfo' + 400: + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Append a chunk to an upload job + tags: + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + /v3/firmware-images/upload-jobs/{upload_job_id}/chunks/{chunk_id}: + get: + description: 'Get metadata about a chunk. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/upload-jobs/12345678901234567890123456789012/chunks/12345678901234567890123456789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Upload_Job_Chunk_retreive + parameters: + - description: The upload job ID. + in: path + name: upload_job_id + pattern: '[A-Fa-f0-9]{32}' + required: true type: string - - description: The name of the firmware image - in: formData - maxLength: 128 - name: name + - description: Chunk. + in: path + name: chunk_id + pattern: '[A-Fa-f0-9]{32}' + required: true type: string responses: - '201': - description: Firmware image created. The API gateway enforces the account-specific - file size. + 200: + description: Ok. + schema: + $ref: '#/definitions/UploadChunkInfo' + 401: + description: Not Authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + 404: + description: Not Found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get metadata about a chunk + tags: + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + /v3/firmware-images/{image_id}: + delete: + description: 'Delete a firmware image. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-images/11234567f9012ab56790120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Image_destroy + parameters: + - description: The firmware image ID. + in: path + name: image_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + responses: + '204': + description: Firmware image deleted. + '400': + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Firmware image not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete an image + tags: + - Device update - firmware images + x-origin: /home/circleci/project/update-service/public/swagger.yml + get: + description: 'Retrieve a firmware image. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/1123456f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Image_retrieve + parameters: + - description: The firmware image ID + in: path + name: image_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + responses: + '200': + description: Retrieved result successfully. schema: $ref: '#/definitions/FirmwareImage' '400': - description: Cannot validate the data used to create the firmware image. + description: Bad Request. + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated - '403': - description: Forbidden - 413: - description: Firmware image too large. - summary: Create an image + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Firmware image can't be found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get an image. + tags: + - Device update - firmware images x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-images/upload-jobs: + /v3/firmware-manifests/: get: - description: Get all upload jobs - operationId: Upload_Job_List + description: 'List all firmware manifests. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Manifest_list parameters: - description: How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to @@ -20737,16 +28324,16 @@ paths: minimum: 2 name: limit type: integer - - description: ASC or DESC + - description: ASC or DESC. in: query name: order type: string - - description: The ID of the the item after which to retrieve the next page + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' in: query name: include type: string @@ -20755,27 +28342,29 @@ paths: The table lists all the fields that can be filtered on with certain filters:\n\ \n\n \n \n \n \n \n \n\ - \ \n \n \n \n \n \n \n \n \n \n\ - \ \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n \n \n \n \n \n \ + \ \n \n \n \ + \ \n \n \n \n \ + \ \n \n \n \n \n\ + \ \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n\ + \ \n \n \n \n \ + \ \n \n \n \n\ + \ \n \n \n \n \n \n \n \n\ \ \n \n \n \ \ \n \n
Field= / __eq\ \ / __neq__in / __nin__lte / __gte
name\u2713\ - \u2713 
description\u2713\u2713 
complete\u2713\u2713
id\u2713\u2713 
firmware_image_id\u2713\ - \u2713 
status\u2713\u2713 
created_at\u2713\u2713\u2713
etag\u2713\u2713\ + \
created_at\u2713\u2713\u2713
datafile\u2713\u2713 
datafile_size\u2713\u2713 
description\u2713\u2713 
device_class\u2713\u2713 
etag\u2713\u2713\u2713
id\u2713\u2713 
name\u2713\u2713 
timestamp\u2713\u2713\ \u2713
updated_at\u2713\u2713\u2713
\n \n\nThe query string is made up of\ - \ key-value pairs separated by ampersands. For example, this query:\n`key1=value1&key2=value2&key3=value3`\n\ + \ key-value pairs separated by ampersands. For example, this query:\n`key1__eq=value1&key2__eq=value2&key3__eq=value3`\n\ \nwould be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ - \n\n**Filtering by properties**\n`name__eq=myimage`\n\n**Filtering on date-time\ - \ fields**\n\nDate-time fields should be specified in UTC RFC3339 format,\ - \ `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\n*\ - \ UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ + \n\n**Filtering by properties**\n`name__eq=mymanifest`\n\n**Filtering on\ + \ date-time fields**\n\nDate-time fields should be specified in UTC RFC3339\ + \ format, `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\ + \n* UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ \nDate-time filtering supports three operators:\n\n* equality by appending\ @@ -20784,65 +28373,65 @@ paths: \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ \nTime ranges may be specified by including both the `__gte` and `__lte`\ \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering on multiple fields**\n\n`name__eq=myimage&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ + \n**Filtering on multiple fields**\n\n`name__eq=mymanifest&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ \n**Filtering with filter operators**\n\nString field filtering supports\ \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n\n`name__in=fw-image1,fw-image2`" + \ of parameters must be comma-separated:\n\n`name__in=fw-manifest1,fw-manifest2`" in: query name: filter type: string - - description: in filter for the "updated_at" field + - description: in filter for the "created_at" field in: query - name: updated_at__in + name: created_at__in type: string - - description: nin filter for the "updated_at" field + - description: nin filter for the "created_at" field in: query - name: updated_at__nin + name: created_at__nin type: string - - description: lte filter for the "updated_at" field + - description: lte filter for the "created_at" field format: date-time in: query - name: updated_at__lte + name: created_at__lte type: string - - description: gte filter for the "updated_at" field + - description: gte filter for the "created_at" field format: date-time in: query - name: updated_at__gte + name: created_at__gte type: string - - description: eq filter for the "name" field + - description: eq filter for the "datafile" field in: query - name: name__eq + name: datafile__eq type: string - - description: neq filter for the "name" field + - description: neq filter for the "datafile" field in: query - name: name__neq + name: datafile__neq type: string - - description: in filter for the "name" field + - description: in filter for the "datafile" field in: query - name: name__in + name: datafile__in type: string - - description: nin filter for the "name" field + - description: nin filter for the "datafile" field in: query - name: name__nin + name: datafile__nin type: string - - description: in filter for the "created_at" field + - description: eq filter for the "datafile_size" field + format: int64 in: query - name: created_at__in - type: string - - description: nin filter for the "created_at" field + name: datafile_size__eq + type: integer + - description: neq filter for the "datafile_size" field + format: int64 in: query - name: created_at__nin - type: string - - description: lte filter for the "created_at" field - format: date-time + name: datafile_size__neq + type: integer + - description: in filter for the "datafile_size" field in: query - name: created_at__lte + name: datafile_size__in type: string - - description: gte filter for the "created_at" field - format: date-time + - description: nin filter for the "datafile_size" field in: query - name: created_at__gte + name: datafile_size__nin type: string - description: eq filter for the "description" field in: query @@ -20860,6 +28449,22 @@ paths: in: query name: description__nin type: string + - description: eq filter for the "device_class" field + in: query + name: device_class__eq + type: string + - description: neq filter for the "device_class" field + in: query + name: device_class__neq + type: string + - description: in filter for the "device_class" field + in: query + name: device_class__in + type: string + - description: nin filter for the "device_class" field + in: query + name: device_class__nin + type: string - description: eq filter for the "id" field in: query name: id__eq @@ -20876,73 +28481,119 @@ paths: in: query name: id__nin type: string - - description: eq filter for the "complete" field + - description: eq filter for the "name" field in: query - name: complete__eq - type: boolean - - description: neq filter for the "complete" field + name: name__eq + type: string + - description: neq filter for the "name" field in: query - name: complete__neq - type: boolean - - description: eq filter for the "status" field + name: name__neq + type: string + - description: in filter for the "name" field in: query - name: status__eq + name: name__in type: string - - description: neq filter for the "status" field + - description: nin filter for the "name" field in: query - name: status__neq + name: name__nin type: string - - description: in filter for the "status" field + - description: in filter for the "timestamp" field in: query - name: status__in + name: timestamp__in type: string - - description: nin filter for the "status" field + - description: nin filter for the "timestamp" field in: query - name: status__nin + name: timestamp__nin + type: string + - description: lte filter for the "timestamp" field + format: date-time + in: query + name: timestamp__lte + type: string + - description: gte filter for the "timestamp" field + format: date-time + in: query + name: timestamp__gte + type: string + - description: in filter for the "updated_at" field + in: query + name: updated_at__in + type: string + - description: nin filter for the "updated_at" field + in: query + name: updated_at__nin + type: string + - description: lte filter for the "updated_at" field + format: date-time + in: query + name: updated_at__lte + type: string + - description: gte filter for the "updated_at" field + format: date-time + in: query + name: updated_at__gte type: string responses: - 200: - description: Ok + '200': + description: Request successful. schema: - $ref: '#/definitions/UploadJobPage' - 400: - description: Bad Request + $ref: '#/definitions/FirmwareManifestPage' + '400': + description: Bad Request. schema: $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated + '401': + description: Not authenticated. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all upload jobs + '404': + description: Unable to find content. + schema: + $ref: '#/definitions/ErrorResponse' + summary: List all firmware manifests. + tags: + - Device update - firmware manifests x-filter: - complete: - - eq - - neq created_at: - in - nin - lte - gte + datafile: + - eq + - neq + - in + - nin + datafile_size: + - eq + - neq + - in + - nin description: - eq - neq - in - nin - id: + device_class: - eq - neq - in - nin - name: + id: - eq - neq - in - nin - status: + name: - eq - neq - in - nin + timestamp: + - in + - nin + - lte + - gte updated_at: - in - nin @@ -20950,839 +28601,805 @@ paths: - gte x-origin: /home/circleci/project/update-service/public/swagger.yml post: - description: Create a new upload job - operationId: Upload_Job_Create + consumes: + - multipart/form-data + description: 'Upload a firmware manifest. The API enforces a maximum manifest + size of 2KB. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \ + + -H ''Authorization: Bearer '' \ + + -H ''Content-Type: multipart/form-data'' \ + + -F ''datafile=@myimage.bin;type=application/octet-stream'' \ + + -F ''description=bla bla'' \ + + -F ''key_table=@myKeyTable.proto;type='' \ + + -F ''name=My Manifest'' + + ``` + + ' + operationId: Firmware_Manifest_create parameters: - - description: Upload job - in: body - name: Upload job + - description: The manifest file to create. The API gateway enforces the account-specific + file size. File name must not exceed 100 characters. + in: formData + name: datafile required: true - schema: - properties: - description: *id027 - name: *id028 - type: object - responses: - 201: - description: Success - New job created - headers: - Location: - description: URL of the metadata for the created Upload Job - type: string - schema: - $ref: '#/definitions/UploadJob' - 400: - description: Bad Request - schema: - $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated - schema: - $ref: '#/definitions/ErrorResponse' - 409: - description: Conflict - schema: - $ref: '#/definitions/ErrorResponse' - summary: Create a new upload job - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-images/upload-jobs/{upload_job_id}: - delete: - description: Delete an upload job - operationId: Upload_Job_Delete - parameters: - - description: Upload job - in: path - name: upload_job_id + type: file + - description: The description of the firmware manifest. + format: free text + in: formData + maxLength: 2000 + name: description + required: false + type: string + - description: The key table of pre-shared keys for devices. The table is generated + by the manifest tool. File name must not exceed 100 characters. + in: formData + name: key_table + required: false + type: file + - description: The name of the firmware manifest. + format: free text + in: formData + maxLength: 128 + name: name required: true type: string responses: - 204: - description: Job deleted - no content to show - 400: - description: Bad Request + '201': + description: Created. + schema: + $ref: '#/definitions/FirmwareManifest' + '400': + description: 'Validation error. The data used to create the firmware manifest + did not validate and/or the manifest uploaded exceeded 2 KB in size. + + ' schema: $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated + '401': + description: Not authenticated. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '403': + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete an upload job + summary: Upload a manifest + tags: + - Device update - firmware manifests x-origin: /home/circleci/project/update-service/public/swagger.yml - get: - description: Get an upload job - operationId: Upload_Job_Retrieve + /v3/firmware-manifests/{manifest_id}: + delete: + description: 'Delete a firmware manifest. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/11234567f9012ab56780120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Manifest_destroy parameters: - - description: Upload job + - description: The firmware manifest ID. in: path - name: upload_job_id + name: manifest_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: - 200: - description: Ok + '204': + description: Firmware manifest deleted. + '400': + description: Bad Request. schema: - $ref: '#/definitions/UploadJob' - 401: - description: Not Authenticated + $ref: '#/definitions/ErrorResponse' + '401': + description: Not authenticated. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '404': + description: Firmware manifest not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get an upload job + summary: Delete a manifest + tags: + - Device update - firmware manifests x-origin: /home/circleci/project/update-service/public/swagger.yml - put: - description: Update an upload job - operationId: Upload_Job_Update + get: + description: 'Retrieve a firmware manifest. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/1123467f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + operationId: Firmware_Manifest_retrieve parameters: - - description: Upload job id + - description: The firmware manifest ID. in: path - name: upload_job_id + name: manifest_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: Upload job - in: body - name: Upload job - required: true - schema: - properties: - description: *id027 - name: *id028 - type: object responses: - 200: - description: Ok + '200': + description: Retrieved result successfully. schema: - $ref: '#/definitions/UploadJob' - 400: - description: Bad Request + $ref: '#/definitions/FirmwareManifest' + '400': + description: Bad request. schema: $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated + '401': + description: Not authenticated. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '404': + description: Firmware manifest can't be found. schema: $ref: '#/definitions/ErrorResponse' - summary: Update an upload job + summary: Get a manifest + tags: + - Device update - firmware manifests x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-images/upload-jobs/{upload_job_id}/chunks: + /v3/identity-providers: get: - description: List all metadata for uploaded chunks - operationId: Upload_Job_Chunk_List + consumes: + - application/json + description: 'Retrieve an array of identity providers. + + Note: This endpoint is restricted to administrators.' + operationId: getAllIdentityProviders parameters: - - description: Upload job - in: path - name: upload_job_id - required: true - type: string - - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 in: query - maximum: 1000 - minimum: 2 name: limit + required: false type: integer - - description: ASC or DESC - in: query - name: order - type: string - - description: The ID of the the item after which to retrieve the next page + - description: The entity ID to retrieve after the given one. in: query name: after + required: false type: string - - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' - in: query - name: include - type: string - - description: "URL-encoded query string parameter to filter returned data\n\ - \n`?filter={URL-encoded query string}`\n\n###### Filterable fields:\n\n\ - The table lists all the fields that can be filtered on with certain filters:\n\ - \n\n \n \n \n \n \n \n\ - \ \n \n \n \n \n \ - \ \n \n \n \ - \ \n \n \n \n \n \n \n \n \n \ - \ \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n
Field= / __eq\ - \ / __neq__in / __nin__lte / __gte
created_at\u2713\u2713\u2713
etag\u2713\u2713\ - \u2713
id\u2713\u2713 
updated_at\u2713\u2713\u2713
hash\u2713\u2713 
length\u2713\u2713\u2713
\n\ -  \n\nThe query string is made up of key-value pairs separated by ampersands.\ - \ For example, this query:\n`key1=value1&key2=value2&key3=value3`\n\nwould\ - \ be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ - \n\n**Filtering by properties**\n`hash__eq=8FS70vXrq5y1VxAAssUMAg==`\n\n\ - **Filtering on date-time fields**\n\nDate-time fields should be specified\ - \ in UTC RFC3339 format, `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted\ - \ variations:\n\n* UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ - * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ - \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ - \nDate-time filtering supports three operators:\n\n* equality by appending\ - \ `__eq` to the field name\n* greater than or equal to by appending `__gte`\ - \ to the field name\n* less than or equal to by appending `__lte` to the\ - \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ - \nTime ranges may be specified by including both the `__gte` and `__lte`\ - \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering on multiple fields**\n\n`status__eq=in_progress&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering with filter operators**\n\nString field filtering supports\ - \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ - * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n\n`status__in=in_progress,success`" - in: query - name: filter - type: string - - description: in filter for the "created_at" field - in: query - name: created_at__in - type: string - - description: nin filter for the "created_at" field - in: query - name: created_at__nin - type: string - - description: lte filter for the "created_at" field - format: date-time - in: query - name: created_at__lte - type: string - - description: gte filter for the "created_at" field - format: date-time - in: query - name: created_at__gte - type: string - - description: eq filter for the "id" field - in: query - name: id__eq - type: integer - - description: neq filter for the "id" field - in: query - name: id__neq - type: integer - - description: in filter for the "id" field - in: query - name: id__in - type: string - - description: nin filter for the "id" field - in: query - name: id__nin - type: string - - description: in filter for the "updated_at" field - in: query - name: updated_at__in - type: string - - description: nin filter for the "updated_at" field - in: query - name: updated_at__nin - type: string - - description: lte filter for the "updated_at" field - format: date-time - in: query - name: updated_at__lte - type: string - - description: gte filter for the "updated_at" field - format: date-time - in: query - name: updated_at__gte - type: string - - description: eq filter for the "hash" field - in: query - name: hash__eq - type: string - - description: neq filter for the "hash" field - in: query - name: hash__neq - type: string - - description: in filter for the "hash" field - in: query - name: hash__in - type: string - - description: nin filter for the "hash" field - in: query - name: hash__nin - type: string - - description: eq filter for the "length" field - in: query - name: length__eq - type: integer - - description: neq filter for the "length" field - in: query - name: length__neq - type: integer - - description: in filter for the "length" field + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query - name: length__in + name: order + required: false type: string - - description: nin filter for the "length" field + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' in: query - name: length__nin + name: include + required: false type: string - - description: lte filter for the "length" field - in: query - name: length__lte - type: integer - - description: gte filter for the "length" field - in: query - name: length__gte - type: integer + produces: + - application/json responses: - 200: - description: Ok - schema: - $ref: '#/definitions/UploadChunkInfoPage' - 400: - description: Bad Request + '200': + description: Successful operation. schema: - $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated + $ref: '#/definitions/IdentityProviderList' + '401': + description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '403': + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: List all metadata for uploaded chunks - x-filter: - created_at: - - in - - nin - - lte - - gte - hash: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - length: - - eq - - neq - - in - - nin - - lte - - gte - updated_at: - - in - - nin - - lte - - gte - x-origin: /home/circleci/project/update-service/public/swagger.yml + summary: Get all identity providers. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - - binary/octet-stream - description: Append a chunks to an upload job. To finish a job upload a zero-length - chunk. - operationId: Upload_Job_Chunk_Create + - application/json + description: 'Create a new identity provider. + + Note: This endpoint is restricted to administrators.' + operationId: createIdentityProvider parameters: - - description: The base64-encoded binary digest of the body (chunk data). - format: byte - in: header - name: Content-MD5 - required: true - type: string - - in: header - name: Content-Length - required: true - type: integer - - description: Upload job ID - in: path - name: upload_job_id - required: true - type: string - - description: Chunk + - allowEmptyValue: true + description: 'Indicates that the OpenID Connect endpoints and keys should + be set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + in: query + name: discovery + type: boolean + - description: Details of the identity provider to create. in: body - name: chunk - required: false + name: body + required: true schema: - format: binary - type: string + $ref: '#/definitions/IdentityProviderCreationReq' + produces: + - application/json responses: - 201: - description: Success - Chunk appended to the upload + '201': + description: New entity created. headers: Content-Location: - description: URL of the metadata for the uploaded chunk + description: /v3/identity-providers/{identity_provider_id} type: string Location: - description: URL of the metadata for the uploaded chunk + description: /v3/identity-providers/{identity_provider_id} type: string schema: - $ref: '#/definitions/UploadChunkInfo' - 400: - description: Bad Request + $ref: '#/definitions/IdentityProviderInfo' + '400': + description: Error in input data, for example, name is too long. schema: $ref: '#/definitions/ErrorResponse' - 401: - description: Not Authenticated + '401': + description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '403': + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Append a chunks to an upload job - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-images/upload-jobs/{upload_job_id}/chunks/{chunk_id}: + summary: Create a new identity provider. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/identity-providers/{identity_provider_id}: + delete: + description: 'Delete an identity provider by ID. + + Note: This endpoint is restricted to administrators.' + operationId: deleteIdentityProvider + parameters: + - description: The ID of the identity provider to delete. + in: path + name: identity_provider_id + required: true + type: string + produces: + - application/json + responses: + '204': + description: Deleted successfully. + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden, or identity provider is in use. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete an identity provider by ID. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: Get metadata about a chunk - operationId: Upload_Job_Chunk_retreive + description: 'Retrieve an identity provider. + + Note: This endpoint is restricted to administrators.' + operationId: getIdentityProvider parameters: - - description: Upload job + - description: The ID of the identity provider to retrieve. in: path - name: upload_job_id + name: identity_provider_id required: true type: string - - description: Chunk + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/IdentityProviderInfo' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get identity provider. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + put: + consumes: + - application/json + description: 'Update an existing identity provider. + + Note: This endpoint is restricted to administrators.' + operationId: updateIdentityProvider + parameters: + - description: The ID of the identity provider to update. in: path - name: chunk_id + name: identity_provider_id required: true type: string + - allowEmptyValue: true + description: 'Indicates that the OpenID Connect endpoints and keys should + be set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + in: query + name: discovery + type: boolean + - description: Details of the identity provider to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/IdentityProviderUpdateReq' + produces: + - application/json responses: - 200: - description: Ok + '200': + description: Successful operation. schema: - $ref: '#/definitions/UploadChunkInfo' - 401: - description: Not Authenticated + $ref: '#/definitions/IdentityProviderInfo' + '400': + description: Error in input data, for example, missing name. schema: $ref: '#/definitions/ErrorResponse' - 404: - description: Not Found + '401': + description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' - summary: Get metadata about a chunk - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-images/{image_id}/: - delete: - description: Delete a firmware image. - operationId: Firmware_Image_destroy + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Update an existing identity provider. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/identity-providers/{identity_provider_id}/delete-sp-certificate: + post: + consumes: + - application/json + description: 'Delete a service provider certificate. + + Note: This endpoint is restricted to administrators.' + operationId: deleteSpCertificate + parameters: + - description: The ID of the identity provider. + in: path + name: identity_provider_id + required: true + type: string + produces: + - application/json + responses: + '200': + description: Successful operation. + headers: + Content-Location: + description: /v3/identity-providers/{identity_provider_id} + type: string + schema: + $ref: '#/definitions/IdentityProviderInfo' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Delete the service provider certificate. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/identity-providers/{identity_provider_id}/generate-sp-certificate: + post: + consumes: + - application/json + description: 'Generate a new service provider certificate. + + Note: This endpoint is restricted to administrators.' + operationId: generateSpCertificate parameters: - - description: The firmware image ID + - description: The ID of the identity provider to generate a certificate for. in: path - name: image_id + name: identity_provider_id required: true type: string + - description: Details of the service provider certificate to generate. + in: body + name: body + required: false + schema: + $ref: '#/definitions/CertificateGenerationReq' + produces: + - application/json responses: - '204': - description: Firmware image deleted + '200': + description: Successful operation. + headers: + Content-Location: + description: /v3/identity-providers/{identity_provider_id} + type: string + schema: + $ref: '#/definitions/IdentityProviderInfo' '400': - description: Bad Request + description: Error in input data, for example, invalid certificate validity + value. + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Firmware image not found - summary: Delete an image - x-origin: /home/circleci/project/update-service/public/swagger.yml - get: - description: Retrieve a firmware image. - operationId: Firmware_Image_retrieve + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Generate a new service provider certificate. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/identity-providers/{identity_provider_id}/refresh-jwks: + post: + consumes: + - application/json + description: 'Refreshes an OIDC IdP''s signing keys. + + Note: This endpoint is restricted to administrators.' + operationId: refreshJwks parameters: - - description: The firmware image ID + - description: The ID of the identity provider for which to refresh the signing + keys. in: path - name: image_id + name: identity_provider_id required: true type: string + produces: + - application/json responses: '200': - description: Retrieved result successfully + description: Successful operation. + headers: + Content-Location: + description: /v3/identity-providers/{identity_provider_id} + type: string schema: - $ref: '#/definitions/FirmwareImage' + $ref: '#/definitions/IdentityProviderInfo' '400': - description: Bad Request + description: Not an OIDC IdP or JWKS URI is unspecified. + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated - '404': - description: Firmware image can't be found - summary: Get an image - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-manifests/: - get: - description: List firmware manifests. - operationId: Firmware_Manifest_list - parameters: - - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to - the closest limit. - in: query - maximum: 1000 - minimum: 2 - name: limit - type: integer - - description: ASC or DESC - in: query - name: order - type: string - - description: The ID of the the item after which to retrieve the next page - in: query - name: after - type: string - - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' - in: query - name: include - type: string - - description: "URL-encoded query string parameter to filter returned data\n\ - \n`?filter={URL-encoded query string}`\n\n###### Filterable fields:\n\n\ - The table lists all the fields that can be filtered on with certain filters:\n\ - \n\n \n \n \n \n \n \n\ - \ \n \n \n \n \n \ - \ \n \n \n \ - \ \n \n \n \n \ - \ \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n\ - \ \n \n \n \n \ - \ \n \n \n \n\ - \ \n \n \n \n \n \n \n \n\ - \ \n \n \n \ - \ \n \n
Field= / __eq\ - \ / __neq__in / __nin__lte / __gte
created_at\u2713\u2713\u2713
datafile\u2713\u2713 
datafile_size\u2713\u2713 
description\u2713\u2713 
device_class\u2713\u2713 
etag\u2713\u2713\u2713
id\u2713\u2713 
name\u2713\u2713 
timestamp\u2713\u2713\ - \u2713
updated_at\u2713\u2713\u2713
\n \n\nThe query string is made up of\ - \ key-value pairs separated by ampersands. For example, this query:\n`key1__eq=value1&key2__eq=value2&key3__eq=value3`\n\ - \nwould be URL-encoded as:\n`?filter=key1__eq%3Dvalue1%26key2__eq%3Dvalue2%26key3__eq%3Dvalue3`\n\ - \n\n**Filtering by properties**\n`name__eq=mymanifest`\n\n**Filtering on\ - \ date-time fields**\n\nDate-time fields should be specified in UTC RFC3339\ - \ format, `YYYY-MM-DDThh:mm:ss.msZ`. There are three permitted variations:\n\ - \n* UTC RFC3339 with milliseconds. Example: `2016-11-30T16:25:12.1234Z`\n\ - * UTC RFC3339 without milliseconds. Example: `2016-11-30T16:25:12Z`\n* UTC\ - \ RFC3339 shortened without milliseconds and punctuation. Example: `20161130T162512Z`\n\ - \nDate-time filtering supports three operators:\n\n* equality by appending\ - \ `__eq` to the field name\n* greater than or equal to by appending `__gte`\ - \ to the field name\n* less than or equal to by appending `__lte` to the\ - \ field name\n\n`{field name}[|__eq|__lte|__gte]={UTC RFC3339 date-time}`\n\ - \nTime ranges may be specified by including both the `__gte` and `__lte`\ - \ forms in the filter. For example:\n\n`created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering on multiple fields**\n\n`name__eq=mymanifest&created_at__gte=2016-11-30T16:25:12.1234Z&created_at__lte=2016-12-30T00:00:00Z`\n\ - \n**Filtering with filter operators**\n\nString field filtering supports\ - \ the following operators:\n\n* equality: `__eq`\n* non-equality: `__neq`\n\ - * in : `__in`\n* not in: `__nin`\n\nFor `__in` and `__nin` filters list\ - \ of parameters must be comma-separated:\n\n`name__in=fw-manifest1,fw-manifest2`" - in: query - name: filter - type: string - - description: in filter for the "created_at" field - in: query - name: created_at__in - type: string - - description: nin filter for the "created_at" field - in: query - name: created_at__nin - type: string - - description: lte filter for the "created_at" field - format: date-time - in: query - name: created_at__lte - type: string - - description: gte filter for the "created_at" field - format: date-time - in: query - name: created_at__gte - type: string - - description: eq filter for the "datafile" field - in: query - name: datafile__eq - type: string - - description: neq filter for the "datafile" field - in: query - name: datafile__neq - type: string - - description: in filter for the "datafile" field - in: query - name: datafile__in - type: string - - description: nin filter for the "datafile" field - in: query - name: datafile__nin - type: string - - description: eq filter for the "datafile_size" field - format: int64 - in: query - name: datafile_size__eq - type: integer - - description: neq filter for the "datafile_size" field - format: int64 - in: query - name: datafile_size__neq - type: integer - - description: in filter for the "datafile_size" field - in: query - name: datafile_size__in - type: string - - description: nin filter for the "datafile_size" field - in: query - name: datafile_size__nin - type: string - - description: eq filter for the "description" field - in: query - name: description__eq - type: string - - description: neq filter for the "description" field - in: query - name: description__neq - type: string - - description: in filter for the "description" field - in: query - name: description__in - type: string - - description: nin filter for the "description" field - in: query - name: description__nin - type: string - - description: eq filter for the "device_class" field - in: query - name: device_class__eq - type: string - - description: neq filter for the "device_class" field - in: query - name: device_class__neq - type: string - - description: in filter for the "device_class" field - in: query - name: device_class__in - type: string - - description: nin filter for the "device_class" field - in: query - name: device_class__nin - type: string - - description: eq filter for the "id" field - in: query - name: id__eq - type: string - - description: neq filter for the "id" field - in: query - name: id__neq - type: string - - description: in filter for the "id" field - in: query - name: id__in - type: string - - description: nin filter for the "id" field - in: query - name: id__nin - type: string - - description: eq filter for the "name" field - in: query - name: name__eq - type: string - - description: neq filter for the "name" field - in: query - name: name__neq - type: string - - description: in filter for the "name" field - in: query - name: name__in - type: string - - description: nin filter for the "name" field - in: query - name: name__nin - type: string - - description: in filter for the "timestamp" field + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: An identity provider not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Refreshes the OIDC signing keys. + tags: + - Account - identity providers + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/limitations: + get: + description: Retrieve an array of entitlement limitations. + operationId: getAccountLimitations + parameters: + - description: Filter for finding account limitations by inheritance. True returns + also inherited limitations. False returns only non-inherited ones. in: query - name: timestamp__in + name: inherited__eq + required: false type: string - - description: nin filter for the "timestamp" field - in: query - name: timestamp__nin + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/AccountLimitationList' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get entitlement limitations. + tags: + - Account - entitlement limitations + x-filter: + inherited: + - eq + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/limitations/{limitation_id}: + get: + description: Retrieve an entitlement limitation. + operationId: getAccountLimitation + parameters: + - description: The ID of the limitation to be fetched. + in: path + name: limitation_id + required: true type: string - - description: lte filter for the "timestamp" field + produces: + - application/json + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/AccountLimitation' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: Limitation with the given ID not found. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get an entitlement limitation. + tags: + - Account - entitlement limitations + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/manufacturing/statistics: + get: + description: 'Get manufacturing statistics report. + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/manufacturing/statistics?start=2020-06-23T21:00:00.000Z&end=2020-07-01T20:59:59.999Z + --header ''Authorization: Bearer '' + + ``` + + ' + operationId: ManufacturingStatisticsReport + parameters: + - description: The start date and time for the report. format: date-time in: query - name: timestamp__lte + name: start + required: true type: string - - description: gte filter for the "timestamp" field + - description: The end date and time for the report. The default value is the + current date-time. format: date-time in: query - name: timestamp__gte + name: end + required: false type: string - - description: in filter for the "updated_at" field + produces: + - application/json + responses: + 200: + description: OK. + schema: + $ref: '#/definitions/StatisticsReportListResponse' + summary: Retrieve provisioning statistics for devices in your factories. + tags: + - Factory manufacturing statistics + x-origin: /home/circleci/project/manufacturing-statistics/public/swagger.yml + /v3/metrics: + get: + description: This REST API is used to get account-specific statistics. + operationId: getMetrics + parameters: + - description: "A comma-separated list of requested metrics and total_count\ + \ (if included, the response will contain total_count to specify the total\ + \ number of records available). Supported values are:\n\n- `transactions`\n\ + - `full_registrations`\n- `registration_updates`\n- `deleted_registrations`\n\ + - `expired_registrations`\n- `bootstraps_successful`\n- `bootstraps_failed`\n\ + - `bootstraps_pending`\n- `handshakes_successful`\n- `connect_rest_api_success`\n\ + - `connect_rest_api_error`\n- `device_proxy_request_success`\n- `device_proxy_request_error`\n\ + - `device_subscription_request_success`\n- `device_subscription_request_error`\n\ + - `device_observations`\n- `total_count`\n\n**Note:**\n\nThe metrics `device_proxy_request_success`,\ + \ `device_proxy_request_error`, `device_subscription_request_success`, `device_subscription_request_error`\ + \ and `device_observations` monitor only the response from the device to\ + \ Device Management Connect. They do not confirm that the response is delivered\ + \ to the client callback URLs used when you try to access device resources\ + \ using [Connect API](https://www.pelion.com/docs/device-management-api/connect/)\ + \ endpoints. New metrics will be added to monitor the response delivery\ + \ to client callback URLs later.\n\n**Example usage:**\n\n```\ncurl -X\ + \ GET \\\n -H \"Authorization : Bearer \"\n 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170207&end=20170407&interval=1d'\n\ + \n{\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\"\ + : 54,\n \"after\": \"2017-07-26T00:00:00Z\",\n \"has_more\": true,\n\ + \ \"data\": [\n {\n \"id\": \"015d8157c800015e306fffff005374617473000\"\ + ,\n \"timestamp\": \"2017-07-27T00:00:00Z\",\n \"\ + transactions\": 27366\n },\n {\n \"id\": \"015d867e2400015e306fffff005374617473000\"\ + ,\n \"timestamp\": \"2017-07-28T00:00:00Z\",\n \"\ + transactions\": 27480\n }\n ]\n}\n```\n" in: query - name: updated_at__in + name: include + required: true type: string - - description: nin filter for the "updated_at" field + - description: 'UTC time/year/date in RFC3339 format. Fetch the data with timestamp + greater than or equal to this value. Sample values: 20170207T092056990Z/2017-02-07T09:20:56.990Z + / 2017 / 20170207. The maximum time between start and end parameters cannot + exceed more than one year (365 days). The parameter is not mandatory, if + the period is specified. + + ' + format: date in: query - name: updated_at__nin + name: start + required: false type: string - - description: lte filter for the "updated_at" field - format: date-time + - description: 'UTC time/year/date in RFC3339 format. Fetch the data with timestamp + less than this value. Sample values: 20170207T092056990Z/2017-02-07T09:20:56.990Z + / 2017 / 20170207. The maximum time between start and end parameters cannot + exceed more than one year (365 days). The parameter is not mandatory, if + the period is specified. + + ' + format: date in: query - name: updated_at__lte + name: end + required: false type: string - - description: gte filter for the "updated_at" field - format: date-time + - description: 'Period. Fetch the data for the period in minutes, hours, days + or weeks. Sample values: 5m, 2h, 3d, 4w. The parameter is not mandatory, + if the start and end time are specified. The maximum period cannot exceed + one year (365 days). The allowed ranges are 5m-525600m/1h-8760h/1d-365d/1w-53w. + + ' in: query - name: updated_at__gte + name: period + required: false type: string - responses: - '200': - description: Request successful - schema: - $ref: '#/definitions/FirmwareManifestPage' - '400': - description: Bad Request - '401': - description: Not authenticated - '404': - description: Unable to find content - summary: List manifests - x-filter: - created_at: - - in - - nin - - lte - - gte - datafile: - - eq - - neq - - in - - nin - datafile_size: - - eq - - neq - - in - - nin - description: - - eq - - neq - - in - - nin - device_class: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - timestamp: - - in - - nin - - lte - - gte - updated_at: - - in - - nin - - lte - - gte - x-origin: /home/circleci/project/update-service/public/swagger.yml - post: - consumes: - - multipart/form-data - description: Upload a firmware manifest. The API enforces a maximum size of - manifests of 2 KB. - operationId: Firmware_Manifest_create - parameters: - - description: The manifest file to create. The API gateway enforces the account-specific - file size. - in: formData - name: datafile + - description: 'Group the data by this interval in minutes, hours, days or weeks. + Sample values: 5m, 2h, 3d, 4w. The maximum interval cannot exceed one year + (365 days). The allowed ranges are 5m-525600m/1h-8760h/1d-365d/1w-53w. + + ' + in: query + name: interval required: true - type: file - - description: The description of the firmware manifest - in: formData - name: description - required: false type: string - - description: The key table of pre-shared keys for devices - in: formData - name: key_table + - description: 'The number of results to return. The default value is 50, minimum + 2 and maximum 1000. + + ' + in: query + name: limit + required: false + type: integer + - description: "The metric ID after which to start fetching. This also can be\ + \ used for pagination as follows:\n\n**Example usage:**\n\n```\ncurl -X\ + \ GET \\\n -H \"Authorization : Bearer \"\n 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170707&end=20170829&interval=1d&limit=20'\n\ + {\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\": 54,\n\ + \ \"has_more\": true,\n \"data\": [\n {\n \"id\": \"\ + 015d1a589800015e306fffff005374617473000\",\n \"timestamp\": \"\ + 2017-07-07T00:00:00Z\",\n \"transactions\": 26381\n },\n\ + \ .\n .\n .\n {\n \"id\": \"015d7c316c00015e306fffff005374617473000\"\ + ,\n \"timestamp\": \"2017-07-26T00:00:00Z\",\n \"transactions\"\ + : 25569\n }\n ]\n}\n```\n\nIf the parameter `has more` is true,\ + \ it indicates that the list is not complete and more values are available.\ + \ You can give the last ID of the list as the value of the `after` query\ + \ parameter, and you get the next page of values. You can keep doing this\ + \ until `has more` is false.\n```\ncurl -X GET \\\n -H \"Authorization\ + \ : Bearer \"\n 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170707&end=20170829&interval=1d&limit=20&after=015d7c316c00015e306fffff005374617473000'\n\ + \n{\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\": 54,\n\ + \ \"after\": \"2017-07-26T00:00:00Z\",\n \"has_more\": true,\n \"\ + data\": [\n {\n \"id\": \"015d8157c800015e306fffff005374617473000\"\ + ,\n \"timestamp\": \"2017-07-27T00:00:00Z\",\n \"transactions\"\ + : 27366\n },\n .\n .\n .\n {\n \"id\"\ + : \"015de3309c00015e306fffff005374617473000\",\n \"timestamp\"\ + : \"2017-08-15T00:00:00Z\",\n \"transactions\": 24707\n \ + \ }\n ]\n}\n```\n" + in: query + name: after required: false - type: file - - description: The name of the firmware manifest - in: formData - maxLength: 128 - name: name type: string - responses: - '201': - description: Created - schema: - $ref: '#/definitions/FirmwareManifest' - '400': - description: 'Validation error. The data used to create the firmware manifest - did not validate and/or the manifest uploaded exceeded 2 KB in size. + - description: 'The order of the records to return. Available values are ASC + and DESC. The default value is ASC. - ' - '401': - description: Not authenticated - '403': - description: Forbidden - summary: Upload a manifest - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/firmware-manifests/{manifest_id}/: - delete: - description: Delete a firmware manifest. - operationId: Firmware_Manifest_destroy - parameters: - - description: The firmware manifest ID - in: path - name: manifest_id - required: true - type: string - responses: - '204': - description: Firmware manifest deleted - '400': - description: Bad Request - '401': - description: Not authenticated - '404': - description: Firmware manifest not found - summary: Delete a manifest - x-origin: /home/circleci/project/update-service/public/swagger.yml - get: - description: Retrieve a firmware manifest. - operationId: Firmware_Manifest_retrieve - parameters: - - description: The firmware manifest ID - in: path - name: manifest_id - required: true + ' + in: query + name: order + required: false type: string + produces: + - application/json responses: - '200': - description: Retrieved result successfully + 200: + description: Successful response. schema: - $ref: '#/definitions/FirmwareManifest' - '400': - description: Bad request - '401': - description: Not authenticated - '404': - description: Firmware manifest can't be found - summary: Get a manifest - x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/identity-providers: + $ref: '#/definitions/successful-response' + 400: + description: Bad request. + schema: + $ref: '#/definitions/error-response' + 401: + description: Authentication failure. + schema: + $ref: '#/definitions/error-response' + 403: + description: Access denied. + schema: + $ref: '#/definitions/error-response' + summary: Provides account-specific statistics for other cloud services. + tags: + - Usage - service metrics + x-origin: /home/circleci/project/statistics/public/rest-api-v3-external.yaml + /v3/policy-groups: get: - consumes: - - application/json - description: Retrieve identity providers in an array. - operationId: getAllIdentityProviders + description: 'Retrieve an array of policy groups. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getAllGroups parameters: - default: 50 description: The number of results to return (2-1000). Default 50. @@ -21791,14 +29408,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -21809,13 +29426,18 @@ paths: name: include required: false type: string + - description: Filter for group name. + in: query + name: name__eq + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/IdentityProviderList' + $ref: '#/definitions/GroupSummaryList' '401': description: Authentication failure. schema: @@ -21824,107 +29446,51 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all identity providers. + summary: Get policy groups. tags: - - Account - identity providers + - Account - policy groups + x-filter: + name: + - eq x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json - description: Create a new identity provider. - operationId: createIdentityProvider + description: 'Create a new group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' -d ''{"name": "MyGroup1"}'' + + ```' + operationId: createGroup parameters: - - allowEmptyValue: true - description: 'Indicates that the OpenID Connect endpoints and keys should - be set using the OpenID Connect Discovery mechanism. The following parameters - are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint - * revocation_endpoint * jwks_uri * keys' - in: query - name: discovery - type: boolean - - description: Details of the identity provider to create. + - description: Details of the group to create. in: body name: body required: true schema: - $ref: '#/definitions/IdentityProviderCreationReq' + $ref: '#/definitions/GroupCreationInfo' produces: - application/json responses: '201': description: New entity created. - headers: - Content-Location: - description: /v3/identity-providers/{identity_provider_id} - type: string - Location: - description: /v3/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, name is too long. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Create a new identity provider. - tags: - - Account - identity providers - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/identity-providers/{identity_provider_id}: - delete: - description: Delete an identity provider by ID. - operationId: deleteIdentityProvider - parameters: - - description: The ID of the identity provider to delete. - in: path - name: identity_provider_id - required: true - type: string - produces: - - application/json - responses: - '204': - description: Deleted successfully. - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden, or identity provider is in use. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: Identity provider not found. + description: Error in input data, for example, invalid group name. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete an identity provider by ID. - tags: - - Account - identity providers - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: Retrieve by ID. - operationId: getIdentityProvider - parameters: - - description: The ID of the identity provider to retrieve. - in: path - name: identity_provider_id - required: true - type: string - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/IdentityProviderInfo' '401': description: Authentication failure. schema: @@ -21933,76 +29499,78 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - '404': - description: Identity provider not found. + '409': + description: A group with that name already exists. schema: $ref: '#/definitions/ErrorResponse' - summary: Get identity provider by ID. + summary: Create a new group. tags: - - Account - identity providers + - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - consumes: - - application/json - description: Update an existing identity provider. - operationId: updateIdentityProvider + /v3/policy-groups/{group_id}: + delete: + description: 'Delete a group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: deleteGroup parameters: - - description: The ID of the identity provider to update. + - description: The ID of the group to delete. in: path - name: identity_provider_id + name: group_id required: true type: string - - allowEmptyValue: true - description: 'Indicates that the OpenID Connect endpoints and keys should - be set using the OpenID Connect Discovery mechanism. The following parameters - are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint - * revocation_endpoint * jwks_uri * keys' - in: query - name: discovery - type: boolean - - description: Details of the identity provider to update. - in: body - name: body - required: true - schema: - $ref: '#/definitions/IdentityProviderUpdateReq' - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/IdentityProviderInfo' - '400': - description: Error in input data, for example, missing name. - schema: - $ref: '#/definitions/ErrorResponse' + produces: + - application/json + responses: + '204': + description: Deleted successfully. '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden, or Administrators group cannot be removed. schema: $ref: '#/definitions/ErrorResponse' '404': - description: Identity provider not found. + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update an existing identity provider. + summary: Delete a group. tags: - - Account - identity providers + - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/identity-providers/{identity_provider_id}/delete-sp-certificate: - post: - consumes: - - application/json - description: Delete a service provider certificate. - operationId: deleteSpCertificate + get: + description: 'Retrieve a policy group. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' + + ```' + operationId: getGroupSummary parameters: - - description: The ID of the identity provider. + - description: The ID of the policy group to retrieve. in: path - name: identity_provider_id + name: group_id required: true type: string produces: @@ -22010,12 +29578,8 @@ paths: responses: '200': description: Successful operation. - headers: - Content-Location: - description: /v3/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/GroupSummary' '401': description: Authentication failure. schema: @@ -22025,45 +29589,58 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Identity provider not found. + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete the service provider certificate. + summary: Get a policy group. tags: - - Account - identity providers + - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/identity-providers/{identity_provider_id}/generate-sp-certificate: post: consumes: - application/json - description: Generate a new service provider certificate. - operationId: generateSpCertificate + description: 'Add users and API keys to a group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' + + ```' + operationId: addSubjectsToGroup parameters: - - description: The ID of the identity provider to generate a certificate for. + - description: The ID of the group to update. in: path - name: identity_provider_id + name: group_id required: true type: string - - description: Details of the service provider certificate to generate. + - description: A list of users and API keys to add to the group. in: body name: body - required: false + required: true schema: - $ref: '#/definitions/CertificateGenerationReq' + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. - headers: - Content-Location: - description: /v3/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, invalid certificate validity - value. + description: Error in input data, for example, the user or API key does + not exist. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22075,39 +29652,61 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Identity provider not found. + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Generate a new service provider certificate. + '409': + description: The user of this API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add members to a group. tags: - - Account - identity providers + - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/identity-providers/{identity_provider_id}/refresh-jwks: - post: + put: consumes: - application/json - description: Refreshes an OIDC IdP's signing keys. - operationId: refreshJwks + description: 'Update a group name. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestGroup2"}'' + + ```' + operationId: updateGroupName parameters: - - description: The ID of the identity provider for which to refresh the signing - keys. + - description: The ID of the group to update. in: path - name: identity_provider_id + name: group_id required: true type: string + - description: Details of the group to create. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupUpdateInfo' produces: - application/json responses: '200': description: Successful operation. - headers: - Content-Location: - description: /v3/identity-providers/{identity_provider_id} - type: string schema: - $ref: '#/definitions/IdentityProviderInfo' + $ref: '#/definitions/GroupSummary' '400': - description: Not an OIDC IdP or JWKS URI is unspecified. + description: Error in input data, for example, the group name is too long. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22119,173 +29718,104 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Identity provider not found. + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Refreshes the OIDC signing keys. + summary: Update the group name. tags: - - Account - identity providers + - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/metrics: - get: - description: This REST API is used to get account-specific statistics. - operationId: getMetrics - parameters: - - description: "A comma-separated list of requested metrics and total_count\ - \ (if included, the response will contain total_count to specify the total\ - \ number of records available). Supported values are:\n\n- `transactions`\n\ - - `full_registrations`\n- `registration_updates`\n- `deleted_registrations`\n\ - - `expired_registrations`\n- `bootstraps_successful`\n- `bootstraps_failed`\n\ - - `bootstraps_pending`\n- `handshakes_successful`\n- `connect_rest_api_success`\n\ - - `connect_rest_api_error`\n- `device_proxy_request_success`\n- `device_proxy_request_error`\n\ - - `device_subscription_request_success`\n- `device_subscription_request_error`\n\ - - `device_observations`\n- `total_count`\n\n**Note:**\n\nThe metrics device_proxy_request_success,\ - \ device_proxy_request_error, device_subscription_request_success, device_subscription_request_error\ - \ and device_observations monitor only the response from the device to Device\ - \ Management Connect and they do not confirm that the response is delivered\ - \ to client callback URLs used when you try to access device resources using\ - \ [Connect API](/docs/current/service-api-references/device-management-connect.html)\ - \ endpoints. New metrics will be added to monitor the response delivery\ - \ to client callback URLs later.\n\n**Example usage:**\n\n```\ncurl -X\ - \ GET \\\n -H \"Authorization : Bearer \"\n \ - \ 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170207&end=20170407&interval=1d'\n\ - \n{\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\"\ - : 54,\n \"after\": \"2017-07-26T00:00:00Z\",\n \"has_more\": true,\n\ - \ \"data\": [\n {\n \"id\": \"015d8157c800015e306fffff005374617473000\"\ - ,\n \"timestamp\": \"2017-07-27T00:00:00Z\",\n \"\ - transactions\": 27366\n },\n {\n \"id\": \"015d867e2400015e306fffff005374617473000\"\ - ,\n \"timestamp\": \"2017-07-28T00:00:00Z\",\n \"\ - transactions\": 27480\n }\n ]\n}\n```\n" - in: query - name: include - required: true - type: string - - description: 'UTC time/year/date in RFC3339 format. Fetch the data with timestamp - greater than or equal to this value. Sample values: 20170207T092056990Z/2017-02-07T09:20:56.990Z - / 2017 / 20170207. The maximum time between start and end parameters cannot - exceed more than one year (365 days). The parameter is not mandatory, if - the period is specified. + /v3/policy-groups/{group_id}/api-keys: + delete: + consumes: + - application/json + deprecated: true + description: 'Remove API keys from groups. - ' - format: date - in: query - name: start - required: false - type: string - - description: 'UTC time/year/date in RFC3339 format. Fetch the data with timestamp - less than this value. Sample values: 20170207T092056990Z/2017-02-07T09:20:56.990Z - / 2017 / 20170207. The maximum time between start and end parameters cannot - exceed more than one year (365 days). The parameter is not mandatory, if - the period is specified. - ' - format: date - in: query - name: end - required: false - type: string - - description: 'Period. Fetch the data for the period in minutes, hours, days - or weeks. Sample values: 5m, 2h, 3d, 4w. The parameter is not mandatory, - if the start and end time are specified. The maximum period cannot exceed - one year (365 days). The allowed ranges are 5m-525600m/1h-8760h/1d-365d/1w-53w. + **Example:** - ' - in: query - name: period - required: false - type: string - - description: 'Group the data by this interval in minutes, hours, days or weeks. - Sample values: 5m, 2h, 3d, 4w. The maximum interval cannot exceed one year - (365 days). The allowed ranges are 5m-525600m/1h-8760h/1d-365d/1w-53w. + ``` - ' - in: query - name: interval - required: true - type: string - - description: 'The number of results to return. The default value is 50, minimum - 2 and maximum 1000. + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + \ - ' - in: query - name: limit - required: false - type: integer - - description: "The metric ID after which to start fetching. This also can be\ - \ used for pagination as follows:\n\n**Example usage:**\n\n```\ncurl -X\ - \ GET \\\n -H \"Authorization : Bearer \"\n \ - \ 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170707&end=20170829&interval=1d&limit=20'\n\ - {\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\": 54,\n\ - \ \"has_more\": true,\n \"data\": [\n {\n \"id\": \"\ - 015d1a589800015e306fffff005374617473000\",\n \"timestamp\": \"\ - 2017-07-07T00:00:00Z\",\n \"transactions\": 26381\n },\n\ - \ .\n .\n .\n {\n \"id\": \"015d7c316c00015e306fffff005374617473000\"\ - ,\n \"timestamp\": \"2017-07-26T00:00:00Z\",\n \"transactions\"\ - : 25569\n }\n ]\n}\n```\n\nIf the parameter `has more` is true,\ - \ it indicates that the list is not complete and more values are available.\ - \ You can give the last ID of the list as the value of the `after` query\ - \ parameter, and you get the next page of values. You can keep doing this\ - \ until `has more` is false.\n```\ncurl -X GET \\\n -H \"Authorization\ - \ : Bearer \"\n 'https://api.us-east-1.mbedcloud.com/v3/metrics?include=transactions,total_count&start=20170707&end=20170829&interval=1d&limit=20&after=015d7c316c00015e306fffff005374617473000'\n\ - \n{\n \"object\": \"list\",\n \"limit\": 20,\n \"total_count\": 54,\n\ - \ \"after\": \"2017-07-26T00:00:00Z\",\n \"has_more\": true,\n \"\ - data\": [\n {\n \"id\": \"015d8157c800015e306fffff005374617473000\"\ - ,\n \"timestamp\": \"2017-07-27T00:00:00Z\",\n \"transactions\"\ - : 27366\n },\n .\n .\n .\n {\n \"id\"\ - : \"015de3309c00015e306fffff005374617473000\",\n \"timestamp\"\ - : \"2017-08-15T00:00:00Z\",\n \"transactions\": 24707\n \ - \ }\n ]\n}\n```\n" - in: query - name: after - required: false - type: string - - description: 'The order of the records to return. Available values are ASC - and DESC. The default value is ASC. + -H ''Authorization: Bearer '' \ - ' - in: query - name: order - required: false + -H ''content-type: application/json'' \ + + -d ''{ "apikeys": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' + + ```' + operationId: removeApiKeysFromGroup + parameters: + - description: The ID of the group. + in: path + name: group_id + required: true type: string + - description: A list of API keys to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - 200: - description: Successful response. + '200': + description: Successful operation. schema: - $ref: '#/definitions/successful-response' - 400: - description: Bad request. + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the array of API keys is + missing. schema: - $ref: '#/definitions/error-response' - 401: + $ref: '#/definitions/ErrorResponse' + '401': description: Authentication failure. schema: - $ref: '#/definitions/error-response' - 403: - description: Access denied. + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. schema: - $ref: '#/definitions/error-response' - summary: Provides account-specific statistics for other cloud services. + $ref: '#/definitions/ErrorResponse' + '404': + description: A group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove API keys from a group. tags: - - Statistics - x-origin: /home/circleci/project/statistics/public/rest-api-v3-external.yaml - /v3/policy-groups: + - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve all group information. + deprecated: true + description: 'Retrieve an array of API keys associated with a policy group. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getAllGroups + operationId: getApiKeysOfGroup parameters: + - description: The ID of the group. + in: path + name: group_id + required: true + type: string - default: 50 description: The number of results to return (2-1000). Default 50. format: int32 @@ -22293,14 +29823,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -22311,18 +29841,13 @@ paths: name: include required: false type: string - - description: Filter for group name. - in: query - name: name__eq - required: false - type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/GroupSummaryList' + $ref: '#/definitions/ApiKeyInfoRespList' '401': description: Authentication failure. schema: @@ -22331,47 +29856,132 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get all group information. + '404': + description: A group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Get the API keys of a policy group. tags: - Account - policy groups - x-filter: - name: - - eq + x-deprecation: + comment: This endpoint is deprecated, GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: - consumes: + deprecated: true + description: 'Add API keys to the group. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "apikeys" : ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' + + ```' + operationId: addApiKeysToGroup + parameters: + - description: The ID of the group. + in: path + name: group_id + required: true + type: string + - description: A list of API keys to add to the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' + produces: - application/json - description: 'Create a new group. + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the group Id does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. Adding an API key to the 'Administrators' group + is restricted to administrators. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The API key is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add API keys to the group. + tags: + - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated, use POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/policy-groups/{group_id}/api-keys/add: + post: + deprecated: true + description: 'Add API keys to the group. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys/add + \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ - -H ''content-type: application/json'' -d ''{"name": "MyGroup1"}'' + -H ''content-type: application/json'' \ + + -d ''{ "apikeys" : ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: createGroup + operationId: addListedApiKeysToGroup parameters: - - description: Details of the group to create. + - description: The ID of the group. + in: path + name: group_id + required: true + type: string + - description: A list of API keys to add to the group. in: body name: body required: true schema: - $ref: '#/definitions/GroupCreationInfo' + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '201': - description: New entity created. + '200': + description: Successful operation. schema: $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, invalid group name. + description: Error in input data, for example, the group Id does not exist. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22379,88 +29989,150 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden. + description: Forbidden. Adding an API key to the 'Administrators' group + is restricted to administrators. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' '409': - description: A group with that name already exists. + description: The API key is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Create a new group. + summary: Add API Keys to the group. tags: - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated, POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications/add + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/policy-groups/{group_id}: - delete: - description: 'Delete a group. + /v3/policy-groups/{group_id}/api-keys/remove: + post: + consumes: + - application/json + deprecated: true + description: 'Remove API keys from groups. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys/remove \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "apikeys" : ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: deleteGroup + operationId: removeListedApiKeysFromGroup parameters: - - description: The ID of the group to delete. + - description: The ID of the group. in: path name: group_id required: true type: string + - description: A list of API keys to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: - '204': - description: Deleted successfully. + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the array of API keys is + missing. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, or Administrators group cannot be removed. + description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' '404': description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Delete a group. + summary: Remove API keys from a group. tags: - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated, POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications/remove + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/policy-groups/{group_id}/applications: get: - description: 'Retrieve general information about a group. + description: 'Retrieve an array of applications associated with a policy group. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getGroupSummary + operationId: getApplicationsOfGroup parameters: - - description: The ID of the group to retrieve. + - description: The ID of the group. in: path name: group_id required: true type: string + - default: 50 + description: The number of results to return (2-1000). Default 50. + format: int32 + in: query + name: limit + required: false + type: integer + - description: The entity ID to retrieve after the given one. + in: query + name: after + required: false + type: string + - default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + in: query + name: order + required: false + type: string + - description: 'Comma-separated additional data to return. Currently supported: + total_count.' + in: query + name: include + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/GroupSummary' + $ref: '#/definitions/ApplicationList' '401': description: Authentication failure. schema: @@ -22473,38 +30145,38 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get group information. + summary: Get the applications of a policy group. tags: - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/policy-groups/{group_id}/applications/add: post: - consumes: - - application/json - description: 'Add users and API keys to a group. + description: 'Add applications to the group. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications/remove \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]}'' + -d ''{ "applications": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: addSubjectsToGroup + operationId: addListedApplicationsToGroup parameters: - - description: The ID of the group to update. + - description: The ID of the group. in: path name: group_id required: true type: string - - description: A list of users and API keys to add to the group. + - description: A list of applications to add to the group. in: body name: body required: true @@ -22516,10 +30188,9 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, the user or API key does - not exist. + description: Error in input data, for example, the group Id does not exist. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22535,55 +30206,58 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '409': - description: The user of this API key is a member of the group already. + description: The application is a member of the group already. schema: $ref: '#/definitions/ErrorResponse' - summary: Add members to a group. + summary: Add applications to the group. tags: - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: + /v3/policy-groups/{group_id}/applications/remove: + post: consumes: - application/json - description: 'Update a group name. + description: 'Remove applications from groups. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications/remove \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"name": "TestGroup2"}'' + -d ''{ "applications": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: updateGroupName + operationId: removeListedApplicationsFromGroup parameters: - - description: The ID of the group to update. + - description: The ID of the group. in: path name: group_id required: true type: string - - description: Details of the group to create. + - description: A list of applications to remove from the group. in: body name: body required: true schema: - $ref: '#/definitions/GroupUpdateInfo' + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, the group name is too long. + description: Error in input data, for example, the array of applications + is missing. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22598,39 +30272,43 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Update the group name. + summary: Remove applications from a group. tags: - Account - policy groups x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/policy-groups/{group_id}/api-keys: + /v3/policy-groups/{group_id}/users: delete: consumes: - application/json - description: 'Remove API keys from groups. + deprecated: true + description: 'Manage policy groups. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + -d ''{ "users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: removeApiKeysFromGroup + operationId: removeUsersFromGroup parameters: - description: The ID of the group. in: path name: group_id required: true type: string - - description: A list of API keys to remove from the group. + - description: A list of users to remove from the group. in: body name: body required: true @@ -22642,10 +30320,10 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, the array of API keys is - missing. + description: Error in input data, for example, the user removing themselves + from the Administrators group. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22660,25 +30338,32 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove API keys from a group. + summary: Remove users from a group. tags: - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated, POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Manage policy groups. + description: 'Retrieve an array of users associated with a policy group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' - operationId: getApiKeysOfGroup + operationId: getUsersOfGroup parameters: - description: The ID of the group. in: path @@ -22692,14 +30377,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -22710,13 +30395,29 @@ paths: name: include required: false type: string + - description: An optional filter to retrieve users by status. + in: query + name: status__eq + required: false + type: string + - description: An optional filter to retrieve users with a specified set of + statuses. + in: query + name: status__in + required: false + type: string + - description: An optional filter to exclude users with a specified set of statuses. + in: query + name: status__nin + required: false + type: string produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/ApiKeyInfoRespList' + $ref: '#/definitions/UserInfoRespList' '401': description: Authentication failure. schema: @@ -22729,39 +30430,45 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get the API keys of a group. + summary: Get users of a policy group. tags: - Account - policy groups + x-filter: + status: + - eq + - in + - nin x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/policy-groups/{group_id}/users: - delete: - consumes: - - application/json - description: 'Manage policy groups. + post: + deprecated: true + description: 'Add users to the group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + -d ''{ "users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: removeUsersFromGroup + operationId: addUsersToGroup. parameters: - description: The ID of the group. in: path name: group_id required: true type: string - - description: A list of users to remove from the group. + - description: A list of API keys to add to the group. in: body name: body required: true @@ -22773,10 +30480,9 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/GroupSummary' '400': - description: Error in input data, for example, the user removing themselves - from the Administrators group. + description: Error in input data, for example, the group Id does not exist. schema: $ref: '#/definitions/ErrorResponse' '401': @@ -22791,79 +30497,134 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Remove users from a group. + '409': + description: The user is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add users to the group. tags: - Account - policy groups + x-deprecation: + comment: This endpoint is deprecated, POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - get: - description: 'Retrieve users of a group with details. + /v3/policy-groups/{group_id}/users/add: + post: + description: 'Add users to the group. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users/add \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' ```' - operationId: getUsersOfGroup + operationId: addListedUsersToGroup. parameters: - description: The ID of the group. in: path name: group_id required: true type: string - - default: 50 - description: The number of results to return (2-1000). Default 50. - format: int32 - in: query - name: limit - required: false - type: integer - - description: The entity ID to fetch after the given one. - in: query - name: after - required: false - type: string - - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - in: query - name: order - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - in: query - name: include - required: false - type: string - - description: An optional filter to retrieve users by status. - in: query - name: status__eq - required: false - type: string - - description: An optional filter to retrieve users with a specified set of - statuses. - in: query - name: status__in - required: false - type: string - - description: An optional filter to exclude users with a specified set of statuses. - in: query - name: status__nin - required: false + - description: A list of API keys to add to the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the group Id does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The user is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add users to the group. + tags: + - Account - policy groups + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/policy-groups/{group_id}/users/remove: + post: + consumes: + - application/json + description: 'Remove users from a policy group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "users": ["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"] + }'' + + ```' + operationId: removeListedUsersFromGroup + parameters: + - description: The ID of the group. + in: path + name: group_id + required: true type: string + - description: A list of users to remove from the group. + in: body + name: body + required: true + schema: + $ref: '#/definitions/SubjectList' produces: - application/json responses: '200': description: Successful operation. schema: - $ref: '#/definitions/UserInfoRespList' + $ref: '#/definitions/GroupSummary' + '400': + description: Error in input data, for example, the user removing themselves + from the Administrators group. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Authentication failure. schema: @@ -22876,14 +30637,9 @@ paths: description: A group with that ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get users of a group. + summary: Remove users from a group. tags: - Account - policy groups - x-filter: - status: - - eq - - in - - nin x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/server-credentials: get: @@ -22897,7 +30653,7 @@ paths: curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' operationId: getAllServerCredentials @@ -22935,7 +30691,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Fetch all (Bootstrap and LwM2M) server credentials. tags: - - Service security - server credentials + - Security and identity - server credentials x-origin: /home/circleci/project/connector-ca/public/swagger.yaml /v3/server-credentials/bootstrap: get: @@ -22951,7 +30707,7 @@ paths: curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/bootstrap \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' operationId: getBootstrapServerCredentials @@ -22988,7 +30744,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Fetch bootstrap server credentials. tags: - - Service security - server credentials + - Security and identity - server credentials x-origin: /home/circleci/project/connector-ca/public/swagger.yaml /v3/server-credentials/lwm2m: get: @@ -23004,7 +30760,7 @@ paths: curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/lwm2m \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' operationId: getL2M2MServerCredentials @@ -23041,7 +30797,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Fetch LwM2M server credentials. tags: - - Service security - server credentials + - Security and identity - server credentials x-origin: /home/circleci/project/connector-ca/public/swagger.yaml /v3/service-packages: get: @@ -23060,7 +30816,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/service-packages \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getServicePackages @@ -23145,6 +30901,8 @@ paths: schema: $ref: '#/definitions/InternalServerErrorResponse' summary: Get all service packages. + tags: + - Usage - billing reports x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml /v3/service-packages-quota: get: @@ -23159,7 +30917,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/service-packages-quota \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getServicePackageQuota @@ -23207,14 +30965,15 @@ paths: schema: $ref: '#/definitions/InternalServerErrorResponse' summary: Service package quota. + tags: + - Usage - billing reports x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml /v3/service-packages-quota-history: get: description: 'Get your quota usage history. This API is available only for commercial - accounts. Aggregator accounts can see their own and subtenant quota usage - data. + accounts. Aggregator accounts can see their own and tenant quota usage data. - Data is in ascending order based on the added timestamp. + Data is in ascending order based on creation time. **Example:** @@ -23224,13 +30983,12 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/service-packages-quota-history \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getServicePackageQuotaHistory parameters: - - description: Maximum number of quota history entries contained in one paged - response. + - description: Maximum number of quota history entries in one paged response. format: int32 in: query maximum: 1000 @@ -23245,6 +31003,14 @@ paths: name: after required: false type: string + - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + enum: + - ASC + - DESC + in: query + name: order + required: false + type: string responses: 200: description: Quota history for the currently authenticated commercial account. @@ -23268,7 +31034,7 @@ paths: id: b0817554677248a1b038d7fcd2c020c5 reason: reservation reservation: - account_id: TEST-commercial.5f1edb5c-c61d-11e7-a05a-00155d004e00 + account_id: 10171c6f56084c4f8b53210762650246 campaign_name: campaign id: b5322aabe29d458ea6e4402594085a15 service_package: null @@ -23312,10 +31078,12 @@ paths: schema: $ref: '#/definitions/InternalServerErrorResponse' summary: Service package quota history. + tags: + - Usage - service packages x-origin: /home/circleci/project/billing/public/swagger-public-apis.yaml /v3/trusted-certificates: get: - description: 'Retrieve trusted certificates in an array. + description: 'Retrieve an array of trusted certificates. **Example:** @@ -23324,7 +31092,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getAllCertificates @@ -23336,14 +31104,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -23412,6 +31180,11 @@ paths: name: subject__like required: false type: string + - description: Filter for certificate fingerprint. + in: query + name: certificate_fingerprint__eq + required: false + type: string - description: Filter for finding certificates by validity. True returns certificates which are not yet expired. False returns certificates which have expired. in: query @@ -23435,8 +31208,10 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Get all trusted certificates. tags: - - Device security - certificates + - Security and identity - certificates x-filter: + certificate_fingerprint: + - eq device_execution_mode: - eq - neq @@ -23464,6 +31239,8 @@ paths: - application/json description: 'Upload new trusted certificates. + Note: This endpoint is restricted to administrators. + **Example:** @@ -23471,7 +31248,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -23503,7 +31280,8 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '403': - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial + accounts. schema: $ref: '#/definitions/ErrorResponse' '409': @@ -23512,7 +31290,7 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Upload a new trusted certificate. tags: - - Device security - certificates + - Security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/trusted-certificates/{cert_id}: delete: @@ -23526,7 +31304,7 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: deleteCertificate @@ -23550,15 +31328,15 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Certificate not found. + description: A certificate not found. schema: $ref: '#/definitions/ErrorResponse' summary: Delete a trusted certificate by ID. tags: - - Device security - certificates + - Security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve a trusted certificate by ID. + description: 'Retrieve a trusted certificate. **Example:** @@ -23568,7 +31346,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getCertificate @@ -23594,12 +31372,12 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Certificate not found. + description: A certificate not found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get trusted certificate by ID. + summary: Get a trusted certificate. tags: - - Device security - certificates + - Security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml put: consumes: @@ -23614,7 +31392,7 @@ paths: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -23654,7 +31432,7 @@ paths: schema: $ref: '#/definitions/ErrorResponse' '404': - description: Certificate not found. + description: A certificate not found. schema: $ref: '#/definitions/ErrorResponse' '409': @@ -23663,11 +31441,25 @@ paths: $ref: '#/definitions/ErrorResponse' summary: Update trusted certificate. tags: - - Device security - certificates + - Security and identity - certificates x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/update-campaigns/: + /v3/update-campaigns: get: - description: Get update campaigns for devices specified by a filter. + description: 'Get update campaigns for devices specified by a filter. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_list parameters: - description: How many objects to retrieve in the page. The minimum limit is @@ -23679,16 +31471,16 @@ paths: name: limit type: integer - description: 'The order of the records. Acceptable values: ASC, DESC. Default: - ASC' + ASC.' in: query name: order type: string - - description: The ID of the the item after which to retrieve the next page + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' in: query name: include type: string @@ -23929,19 +31721,27 @@ paths: type: string responses: '200': - description: Request successful + description: Request successful. schema: $ref: '#/definitions/UpdateCampaignPage' '400': description: 'Validation error: The data used to update the campaign did - not validate + not validate. ' + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Unable to find content + description: Unable to find content. + schema: + $ref: '#/definitions/ErrorResponse' summary: List all campaigns + tags: + - Device update - campaigns x-filter: created_at: - in @@ -24000,10 +31800,17 @@ paths: - gte x-origin: /home/circleci/project/update-service/public/swagger.yml post: - description: Create an update campaign. + description: "Create an update campaign.\n\nTo include a filter for targeted\ + \ devices, refer to the filter using `` in the message body.\n\ +
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"campaign_strategy\": \"one-shot\",\n \"description\": \"\ + Campaign is for ...\",\n \"device_filter\": \"\",\n \"name\"\ + : \"campaign\",\n \"root_manifest_id\": \"56780000000000a5b70000000000bd98\"\ + \n}'\n```\n" operationId: Update_Campaign_create parameters: - - description: Update campaign + - description: Update campaign. in: body name: campaign required: true @@ -24011,81 +31818,146 @@ paths: $ref: '#/definitions/UpdateCampaignPostRequest' responses: '201': - description: Update campaign created + description: Update campaign created. schema: $ref: '#/definitions/UpdateCampaign' '400': description: 'Validation error: The data used to create the campaign did - not validate + not validate. ' + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: Conflict, a campaign with the same name already exists + schema: + $ref: '#/definitions/ErrorResponse' summary: Create a campaign + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/update-campaigns/{campaign_id}/: + /v3/update-campaigns/{campaign_id}: delete: - description: Delete an update campaign. + description: 'Delete an update campaign. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123457f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_destroy parameters: - - description: The ID of the update campaign + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: '204': - description: Update campaign deleted + description: Update campaign deleted. '400': description: 'Validation error: The data used to update the campaign did - not validate + not validate. ' + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Update campaign can't be found + description: Update campaign can't be found. + schema: + $ref: '#/definitions/ErrorResponse' 409: description: Conflict - Cannot delete the campaign while in the current phase. schema: $ref: '#/definitions/ErrorResponse' summary: Delete a campaign + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml get: - description: Get an update campaign. + description: 'Get an update campaign. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_retrieve parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: '200': - description: Retrieved result successfully + description: Retrieved result successfully. schema: $ref: '#/definitions/UpdateCampaign' '400': description: 'Validation error: The data used to update the campaign did - not validate + not validate. ' + schema: + $ref: '#/definitions/ErrorResponse' '401': - description: Not authenticated + description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': - description: Unable to find campaign + description: Unable to find campaign. + schema: + $ref: '#/definitions/ErrorResponse' summary: Get a campaign. + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml put: - description: Modify an update campaign. + description: "Modify an update campaign.\n
\n**Usage example:**\n```\ncurl\ + \ -X PUT https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123007f9012ab567890120000789012\ + \ \\\n-H 'Authorization: Bearer ' \\\nd '{\n \"description\": \"\ + Campaign is for ...\",\n \"device_filter\": \"123400000000000000000000000ae45\"\ + ,\n \"name\": \"campaign\",\n \"root_manifest_id\": \"5678000000000000000000000000bd98\"\ + ,\n}'\n```\n" operationId: Update_Campaign_update parameters: - - in: path + - description: The campaign ID. + in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: Update campaign + - description: Update campaign. in: body name: campaign required: true @@ -24093,31 +31965,49 @@ paths: $ref: '#/definitions/UpdateCampaignPutRequest' responses: '200': - description: Update campaign updated + description: Update campaign updated. schema: $ref: '#/definitions/UpdateCampaign' '400': description: 'Validation error: The data used to update the campaign did - not validate + not validate. ' '401': - description: Not authenticated + description: Not authenticated. '403': description: Fields apart from 'name', 'description' and 'state' cannot be modified when the state is not 'draft'. '404': - description: Update campaign can't be found + description: Update campaign can't be found. summary: Modify a campaign + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/archive: post: - description: This command will archive a campaign. + description: 'Archive a campaign. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc649000000000001001000b8/archive + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_archive parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: @@ -24125,22 +32015,48 @@ paths: description: The campaign has been archived. '400': description: Unable to change the phase of the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': description: Cannot find the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '409': description: Cannot archive the campaign while in the current phase. + schema: + $ref: '#/definitions/ErrorResponse' summary: Archive a campaign. + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/update-campaigns/{campaign_id}/campaign-device-metadata/: + /v3/update-campaigns/{campaign_id}/campaign-device-metadata: get: - description: Get campaign device metadata. + description: 'Get metadata for all devices in a campaign. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56790120000789012/campaign-device-metadata + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_Metadata_list parameters: - - description: The update campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - description: How many objects to retrieve in the page. The minimum limit is @@ -24151,89 +32067,150 @@ paths: minimum: 2 name: limit type: integer - - description: ASC or DESC + - description: ASC or DESC. in: query name: order type: string - - description: The ID of the the item after which to retrieve the next page + - description: The ID of the item after which to retrieve the next page. in: query name: after type: string - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' in: query name: include type: string responses: 200: - description: Request successful + description: Request successful. schema: $ref: '#/definitions/CampaignDeviceMetadataPage' 401: description: Unauthorized summary: List all campaign device metadata + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id}/: + /v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id}: get: - description: Get update campaign metadata. + description: 'Get update campaign metadata for a specific device. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a89900000655cd94fa8/campaign-device-metadata/016e83ddc645000000000001001000f6 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_Metadata_retrieve parameters: - - description: The update campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The campaign device metadata ID + - description: The campaign device metadata ID. in: path name: campaign_device_metadata_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: 200: - description: Request successful + description: Request successful. schema: $ref: '#/definitions/CampaignDeviceMetadata' 401: - description: Unauthorized + description: Unauthorized. 404: - description: Not Found + description: Not Found. summary: Get a campaign device metadata + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/metrics: get: deprecated: true - description: Get detailed statistics of a campaign. + description: 'Get [information](https://www.pelion.com/docs/device-management/current/updating-firmware/campaign-metrics-in-portal.html) + for a campaign based on **SUCCESS**, **FAIL**, or **SKIPPED** criteria for + each device. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123467f9012ab567890120000789012/metrics + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_metrics parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: 200: - description: Request successful + description: Request successful. schema: $ref: '#/definitions/CampaignMetrics' 401: - description: Unauthorized + description: Unauthorized. + schema: + $ref: '#/definitions/ErrorResponse' 404: description: Unable to find campaign or the campaign hasn't started. + schema: + $ref: '#/definitions/ErrorResponse' summary: Get campaign metrics + tags: + - Device update - campaigns x-deprecation: - comment: Use the statistics endpoint instead. + comment: Use GET /v3/update-campaigns/{campaign_id}/statistics instead. end_of_life_at: '2020-04-10T13:41:00+00:00' issued_at: '2019-04-10T13:41:00+00:00' links: [] x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/start: post: - description: This command will begin the process of starting a campaign. + description: 'Start a campaign. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a8900002e655cd94fa8/start + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_start parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: @@ -24241,143 +32218,284 @@ paths: description: The campaign is starting. '400': description: Unable to change the phase of the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': description: Cannot find the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '409': description: Cannot start the campaign while in the current phase. + schema: + $ref: '#/definitions/ErrorResponse' summary: Start a campaign. + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/update-campaigns/{campaign_id}/statistics/: + /v3/update-campaigns/{campaign_id}/statistics: get: - description: Get a list of statistics for a campaign + description: 'Get a list of statistics for a campaign, including the number + of devices reporting specific event codes. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56780120000789012/statistics + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_statistics_list parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: 200: - description: OK + description: OK. schema: $ref: '#/definitions/EventTypeSummaryList' 401: - description: Not Authenticated + description: Not Authenticated. schema: $ref: '#/definitions/ErrorResponse' 404: - description: Not Found + description: Not Found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get a list of statistics for a campaign + summary: Get statistics for a campaign + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}: get: - description: Get a summary status + description: 'Get the count of successfully updated, skipped, and failed devices. + +
+ + **Usage example:** + + ``` + + curl https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/fail + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_statistics_retrieve parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The summary status. For example, fail + - description: The summary status. For example, fail. + enum: &id037 + - fail + - success + - info + - skipped in: path name: summary_status_id required: true type: string responses: 200: - description: OK + description: OK. schema: $ref: '#/definitions/EventTypeSummary' 401: - description: Not Authenticated + description: Not Authenticated. schema: $ref: '#/definitions/ErrorResponse' 404: - description: Not Found + description: Not Found. schema: $ref: '#/definitions/ErrorResponse' - summary: Get a summary status + summary: Get a status summary + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml - /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/: + /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types: get: - description: Get a list of events grouped by summary + description: 'Get a list of events grouped by summary. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/skipped/event_types + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_event_types_list parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The summary status. For example, fail + - description: The summary status. For example, fail. + enum: *id037 in: path name: summary_status_id required: true type: string responses: 200: - description: OK + description: OK. schema: $ref: '#/definitions/EventTypeList' 401: - description: Not Authenticated + description: Not Authenticated. schema: $ref: '#/definitions/ErrorResponse' 404: - description: Not Found + description: Not Found. schema: $ref: '#/definitions/ErrorResponse' summary: Get a list of events grouped by summary + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/{event_type_id}: get: - description: Get an event type for a campaign + description: 'Get the count for a specific event type, for example, succeeded, + failed or skipped. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/success/event_types/sys_112 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_event_types_retrieve parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - - description: The summary status. For example, fail + - description: The summary status. For example, fail. + enum: *id037 in: path name: summary_status_id required: true type: string - - description: The event type parameter. For example, UPD4_FAIL_101 + - description: 'The event type parameter. Event types are grouped into the four + values of the summary_status, i.e. fail, success, info and skipped. + + success: SYS_112, UPD4_OK_M1, UPD1_OK_1, UPD4_OK_100, UPD2_OK_19, UPD2_OK_1, + UPD2_OK_18 + + fail: UPD4_FAIL_508, UPD4_FAIL_217, UPD4_FAIL_305, UPD4_FAIL_405, UPD4_FAIL_511, + UPD4_FAIL_220, UPD1_FAIL_6, UPD4_FAIL_302, UPD2_FAIL_11, UPD4_FAIL_219, + SYS_103, UPD4_FAIL_407, UPD4_FAIL_224, SYS_111, UPD4_FAIL_210, UPD4_FAIL_306, + UPD2_FAIL_14, UPD4_FAIL_221, UPD4_FAIL_315, UPD4_FAIL_403, UPD2_FAIL_12, + UPD4_FAIL_207, UPD4_FAIL_215, UPD4_FAIL_504, UPD2_FAIL_3, UPD4_FAIL_103, + UPD2_FAIL_16, UPD2_FAIL_6, UPD4_FAIL_101, UPD4_FAIL_202, UPD4_FAIL_313, + UPD4_FAIL_209, UPD4_FAIL_301, UPD2_FAIL_4, SYS_123, UPD4_FAIL_314, UPD4_FAIL_205, + UPD4_FAIL_212, UPD4_FAIL_311, UPD4_FAIL_304, UPD4_FAIL_223, UPD4_FAIL_226, + UPD1_FAIL_2, UPD4_FAIL_203, UPD4_FAIL_507, UPD4_FAIL_402, UPD4_FAIL_204, + UPD4_FAIL_510, UPD1_FAIL_7, UPD4_FAIL_218, UPD1_FAIL_8, UPD2_FAIL_5, UPD4_FAIL_201, + UPD4_FAIL_213, UPD4_FAIL_400, UPD2_FAIL_17, UPD4_FAIL_310, UPD4_FAIL_206, + UPD4_FAIL_102, UPD2_FAIL_7, UPD1_FAIL_9, UPD4_FAIL_22, UPD4_FAIL_502, UPD4_FAIL_211, + UPD1_FAIL_4, UPD1_FAIL_3, UPD4_FAIL_409, UPD4_FAIL_408, UPD4_FAIL_200, SYS_104, + UPD2_FAIL_10, UPD2_FAIL_15, UPD4_FAIL_216, UPD4_FAIL_214, UPD4_FAIL_308, + UPD4_FAIL_401, UPD1_FAIL_5, UPD2_FAIL_13, UPD4_FAIL_208, UPD2_FAIL_2, UPD4_FAIL_312, + UPD4_FAIL_509, UPD4_FAIL_303, UPD4_FAIL_512, UPD2_FAIL_9, UPD4_FAIL_316, + UPD4_FAIL_506, SYS_101, UPD4_FAIL_309, UPD4_FAIL_307, UPD4_FAIL_404, UPD4_FAIL_503, + UPD4_FAIL_225, UPD4_FAIL_300, UPD4_FAIL_500, UPD4_FAIL_505, UPD4_FAIL_406, + UPD4_FAIL_222, UPD4_FAIL_501, UPD2_FAIL_8, SYS_124 + + info: UPD1_STATE_0, UPD2_REPORT_HASH, UPD1_REPORT_HASH, UPD2_STATE_5, UPD2_STATE_0, + UPD2_STATE_4, UPD2_STATE_3, SYS_107, SYS_105, SYS_106, UPD1_REPORT_VERSION, + UPD1_STATE_2, SYS_116, SYS_108, SYS_100, UPD2_STATE_8, UPD2_STATE_7, SYS_120, + UPD2_STATE_1, SYS_113, UPD2_STATE_6, UPD2_REPORT_VERSION, SYS_115, UPD2_STATE_2, + SYS_114, UPD1_STATE_3, UPD1_STATE_1, SYS_125 + + skipped: SYS_121, SYS_118, SYS_122, SYS_110, SYS_117 + + ' in: path name: event_type_id - pattern: ^\w{1,16}$ required: true type: string responses: 200: - description: OK + description: OK. schema: $ref: '#/definitions/EventType' 401: - description: Not Authenticated + description: Not Authenticated. schema: $ref: '#/definitions/ErrorResponse' 404: - description: Not Found + description: Not Found. schema: $ref: '#/definitions/ErrorResponse' summary: Get an event type for a campaign + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/update-campaigns/{campaign_id}/stop: post: - description: This command will begin the process of stopping a campaign. + description: 'Stop a campaign. Stopping is a process that requires the campaign + go through several [phases](https://www.pelion.com/docs/device-management/current/updating-firmware/device-management-update-using-the-apis.html). + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc645000000000001001000b5/stop + \ + + -H ''Authorization: Bearer '' + + ``` + + ' operationId: Update_Campaign_stop parameters: - - description: The campaign ID + - description: The campaign ID. in: path name: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string responses: @@ -24385,17 +32503,29 @@ paths: description: The campaign is stopping. '400': description: Unable to change the phase of the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '401': description: Not authenticated. + schema: + $ref: '#/definitions/ErrorResponse' '404': description: Cannot find the campaign. + schema: + $ref: '#/definitions/ErrorResponse' '409': description: Cannot stop the campaign while in the current phase. + schema: + $ref: '#/definitions/ErrorResponse' summary: Stop a campaign. + tags: + - Device update - campaigns x-origin: /home/circleci/project/update-service/public/swagger.yml /v3/user-invitations: get: - description: 'Retrieve details for all the active user invitations. + description: 'Retrieve an array of active user invitations sent by email. + + Note: This endpoint is restricted to administrators. **Example:** @@ -24404,7 +32534,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getAllInvitations @@ -24416,14 +32546,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -24448,7 +32578,7 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get the details of all user invitations. + summary: Get user invitations. tags: - Account - user invitations x-filter: @@ -24460,6 +32590,8 @@ paths: - application/json description: 'Invite a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -24467,7 +32599,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/user-invitations \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -24509,6 +32641,8 @@ paths: delete: description: 'Delete an active user invitation sent to a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -24517,7 +32651,7 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: deleteInvitation @@ -24551,6 +32685,8 @@ paths: get: description: 'Retrieve the details of an active user invitation. + Note: This endpoint is restricted to administrators. + **Example:** @@ -24559,7 +32695,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getInvitation @@ -24594,7 +32730,9 @@ paths: x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/users: get: - description: 'Retrieve the details of all users. + description: 'Retrieve an array of users. + + Note: This endpoint is restricted to administrators. **Example:** @@ -24603,7 +32741,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getAllUsers @@ -24615,14 +32753,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -24674,7 +32812,7 @@ paths: description: Forbidden. schema: $ref: '#/definitions/ErrorResponse' - summary: Get the details of all users. + summary: Get users. tags: - Account - users x-filter: @@ -24690,8 +32828,10 @@ paths: post: consumes: - application/json - description: 'Create or invite a new user to the account. Only email address - is used; other attributes are set in the second step. + description: 'Create or invite a new user to the account. The invited user has + to accept the invitation by clicking the link in the invitation email. + + Note: This endpoint is restricted to administrators. **Example:** @@ -24700,7 +32840,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/users?action=invite \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -24748,109 +32888,12 @@ paths: tags: - Account - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - /v3/users/me: - get: - description: Retrieve the details of the logged-in user. - operationId: getMyUser - parameters: - - description: Request to regenerate new emergency scratch codes. - in: query - name: scratch_codes - required: false - type: string - - description: Request to return account-specific user property values according - to the given property name. - in: query - name: properties - required: false - type: string - - description: 'Comma-separated additional data to return. Currently supported: - active_sessions.' - in: query - name: include - required: false - type: string - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/UserInfoResp' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Details of the current user. - tags: - - Account - users - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml - put: - consumes: - - application/json - description: 'Update user details. - - - **Example:** - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/users/me \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"full_name": "fullname"}'' - - ```' - operationId: updateMyUser - parameters: - - description: A user object with attributes. - in: body - name: body - required: true - schema: - $ref: '#/definitions/UserUpdateReq' - produces: - - application/json - responses: - '200': - description: Successful operation. - schema: - $ref: '#/definitions/UserInfoResp' - '400': - description: Error in input data, for example, an invalid email address. - schema: - $ref: '#/definitions/ErrorResponse' - '401': - description: Authentication failure. - schema: - $ref: '#/definitions/ErrorResponse' - '403': - description: Forbidden. - schema: - $ref: '#/definitions/ErrorResponse' - '404': - description: A user with the given ID does not exist. - schema: - $ref: '#/definitions/ErrorResponse' - '409': - description: A user with the given username or email already exists. - schema: - $ref: '#/definitions/ErrorResponse' - summary: Update user details. - tags: - - Account - users - x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml /v3/users/{user_id}: delete: description: 'Delete a user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -24858,7 +32901,7 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: deleteUser @@ -24896,6 +32939,8 @@ paths: get: description: 'Retrieve the details of a user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -24903,7 +32948,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getUser @@ -24939,7 +32984,9 @@ paths: put: consumes: - application/json - description: 'Update user details + description: 'Update user details. + + Note: This endpoint is restricted to administrators. **Example:** @@ -24948,7 +32995,7 @@ paths: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -25003,8 +33050,11 @@ paths: delete: consumes: - application/json + deprecated: true description: 'Remove user from groups. + Note: This endpoint is restricted to administrators. + **Example:** @@ -25013,7 +33063,7 @@ paths: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -25041,7 +33091,7 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/UserInfoResp' '400': description: Error in input data. schema: @@ -25061,9 +33111,16 @@ paths: summary: Remove user from groups. tags: - Account - users + x-deprecation: + comment: This endpoint is deprecated, use POST https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups/remove/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml get: - description: 'Retrieve groups of the user. + description: 'Retrieve an array of policy groups associated with a user. + + Note: This endpoint is restricted to administrators. **Example:** @@ -25073,7 +33130,7 @@ paths: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' operationId: getGroupsOfUser @@ -25085,14 +33142,14 @@ paths: name: limit required: false type: integer - - description: The entity ID to fetch after the given one. + - description: The entity ID to retrieve after the given one. in: query name: after required: false type: string - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' in: query name: order required: false @@ -25127,15 +33184,18 @@ paths: description: A user with the given ID does not exist. schema: $ref: '#/definitions/ErrorResponse' - summary: Get groups of the user. + summary: Get policy groups for a user. tags: - Account - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml post: consumes: - application/json + deprecated: true description: 'Add user to groups. + Note: This endpoint is restricted to administrators. + **Example:** @@ -25144,7 +33204,7 @@ paths: curl -X POST https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -25172,7 +33232,79 @@ paths: '200': description: Successful operation. schema: - $ref: '#/definitions/UpdatedResponse' + $ref: '#/definitions/UserInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A user or group with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + '409': + description: The user is a member of the group already. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Add user to a list of groups. + tags: + - Account - users + x-deprecation: + comment: This endpoint is deprecated, use POST https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups/add/ + end_of_life_at: '2020-07-11T11:04:57+00:00' + issued_at: '2019-07-11T11:04:57+00:00' + links: [] + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/users/{user_id}/groups/add: + post: + consumes: + - application/json + description: 'Add user to groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups/add + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: addUserToListedGroups + parameters: + - description: The ID of the user to add to the group. + in: path + name: user_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/UserInfoResp' '400': description: Error in input data. schema: @@ -25197,6 +33329,69 @@ paths: tags: - Account - users x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml + /v3/users/{user_id}/groups/remove: + post: + consumes: + - application/json + description: 'Remove user from groups. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups/remove + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''["0162056a9a1586f30242590700000000","0117056a9a1586f30242590700000000"]'' + + ```' + operationId: removeUserFromListedGroups + parameters: + - description: The ID of the user to remove from the group. + in: path + name: user_id + required: true + type: string + - description: A list of IDs of the groups to update. + in: body + name: body + required: true + schema: + $ref: '#/definitions/GroupIdList' + produces: + - application/json + responses: + '200': + description: Successful operation. + schema: + $ref: '#/definitions/UserInfoResp' + '400': + description: Error in input data. + schema: + $ref: '#/definitions/ErrorResponse' + '401': + description: Authentication failure. + schema: + $ref: '#/definitions/ErrorResponse' + '403': + description: Forbidden. + schema: + $ref: '#/definitions/ErrorResponse' + '404': + description: A user with that ID does not exist. + schema: + $ref: '#/definitions/ErrorResponse' + summary: Remove user from groups. + tags: + - Account - users + x-origin: /home/circleci/project/auth/public/iam-identity-swagger.yaml produces: - application/json schemes: diff --git a/api_specifications/public/sdk_foundation_definition.json b/api_specifications/public/sdk_foundation_definition.json index 368328a77..c2c51d2a5 100644 --- a/api_specifications/public/sdk_foundation_definition.json +++ b/api_specifications/public/sdk_foundation_definition.json @@ -16,10 +16,17 @@ "subtenant_api_key", "account", "policy_group", - "subtenant_policy_group" + "subtenant_policy_group", + "identity_provider", + "subtenant_identity_provider", + "saml2_request", + "oidc_request", + "oidc_request_claim_mapping", + "identity_provider_public_key" ], "enums": [ "policy_inherited_type_enum", + "login_profile_type_enum", "user_status_enum", "user_order_enum", "subtenant_user_status_enum", @@ -31,9 +38,18 @@ "subtenant_api_key_order_enum", "account_status_enum", "account_mfa_status_enum", + "account_business_model_enum", "account_order_enum", "policy_group_order_enum", - "subtenant_policy_group_order_enum" + "subtenant_policy_group_order_enum", + "identity_provider_status_enum", + "identity_provider_type_enum", + "identity_provider_order_enum", + "identity_provider_algorithm_enum", + "subtenant_identity_provider_status_enum", + "subtenant_identity_provider_order_enum", + "subtenant_identity_provider_algorithm_enum", + "oidc_request_token_mode_enum" ], "_key": "Accounts" }, @@ -71,10 +87,14 @@ ], "enums": [ "campaign_device_metadata_deployment_state_enum", + "update_campaign_strategy_enum", + "update_campaign_phase_enum", "update_campaign_order_enum", "campaign_statistics_summary_status_enum", "campaign_statistics_id_enum", "firmware_image_order_enum", + "firmware_manifest_schema_version_enum", + "firmware_manifest_delivered_payload_type_enum", "firmware_manifest_order_enum" ], "_key": "Device_Update" @@ -86,8 +106,7 @@ "device_events", "device_enrollment_bulk_create", "device_enrollment_bulk_delete", - "device_enrollment", - "device_enrollment_denial" + "device_enrollment" ], "enums": [ "device_lifecycle_status_enum", @@ -96,8 +115,7 @@ "device_state_enum", "device_enrollment_bulk_create_status_enum", "device_enrollment_bulk_delete_status_enum", - "device_enrollment_order_enum", - "device_enrollment_denial_order_enum" + "device_enrollment_order_enum" ], "_key": "Devices" }, @@ -129,6 +147,17 @@ } ], "enums": [ + { + "entity_name": "account", + "field_name": "business_model", + "enum_name": "account_business_model_enum", + "values": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "group_id": "Accounts", + "_key": "account_business_model_enum" + }, { "entity_name": "account", "field_name": "mfa_status", @@ -387,17 +416,6 @@ "group_id": "Devices", "_key": "device_enrollment_bulk_delete_status_enum" }, - { - "entity_name": "device_enrollment_denial", - "field_name": "order", - "enum_name": "device_enrollment_denial_order_enum", - "values": [ - "ASC", - "DESC" - ], - "group_id": "Devices", - "_key": "device_enrollment_denial_order_enum" - }, { "entity_name": "device_enrollment", "field_name": "order", @@ -456,6 +474,17 @@ "group_id": "Device_Update", "_key": "firmware_image_order_enum" }, + { + "entity_name": "firmware_manifest", + "field_name": "delivered_payload_type", + "enum_name": "firmware_manifest_delivered_payload_type_enum", + "values": [ + "delta", + "full" + ], + "group_id": "Device_Update", + "_key": "firmware_manifest_delivered_payload_type_enum" + }, { "entity_name": "firmware_manifest", "field_name": "order", @@ -467,6 +496,71 @@ "group_id": "Device_Update", "_key": "firmware_manifest_order_enum" }, + { + "entity_name": "firmware_manifest", + "field_name": "manifest_schema_version", + "enum_name": "firmware_manifest_schema_version_enum", + "values": [ + "1", + "3" + ], + "group_id": "Device_Update", + "_key": "firmware_manifest_schema_version_enum" + }, + { + "entity_name": "identity_provider", + "field_name": "algorithm", + "enum_name": "identity_provider_algorithm_enum", + "values": [ + "EC224", + "EC256", + "EC384", + "EC521", + "ECDSA224", + "ECDSA256", + "ECDSA384", + "ECDSA521", + "RSA2048", + "RSA3072" + ], + "group_id": "Accounts", + "_key": "identity_provider_algorithm_enum" + }, + { + "entity_name": "identity_provider", + "field_name": "order", + "enum_name": "identity_provider_order_enum", + "values": [ + "ASC", + "DESC" + ], + "group_id": "Accounts", + "_key": "identity_provider_order_enum" + }, + { + "entity_name": "identity_provider", + "field_name": "status", + "enum_name": "identity_provider_status_enum", + "values": [ + "ACTIVE", + "SUSPENDED" + ], + "group_id": "Accounts", + "_key": "identity_provider_status_enum" + }, + { + "entity_name": "identity_provider", + "field_name": "identity_provider_type", + "enum_name": "identity_provider_type_enum", + "values": [ + "MBED", + "NATIVE", + "OIDC", + "SAML2" + ], + "group_id": "Accounts", + "_key": "identity_provider_type_enum" + }, { "entity_name": "light_theme_color", "field_name": "reference", @@ -538,6 +632,30 @@ "group_id": "Branding", "_key": "light_theme_image_reference_enum" }, + { + "entity_name": "login_profile", + "field_name": "login_profile_type", + "enum_name": "login_profile_type_enum", + "values": [ + "MBED", + "NATIVE", + "OIDC", + "SAML2" + ], + "group_id": "Accounts", + "_key": "login_profile_type_enum" + }, + { + "entity_name": "oidc_request", + "field_name": "token_request_mode", + "enum_name": "oidc_request_token_mode_enum", + "values": [ + "GET", + "POST" + ], + "group_id": "Accounts", + "_key": "oidc_request_token_mode_enum" + }, { "entity_name": "policy_group", "field_name": "order", @@ -654,6 +772,47 @@ "group_id": "Branding", "_key": "subtenant_dark_theme_image_reference_enum" }, + { + "entity_name": "subtenant_identity_provider", + "field_name": "algorithm", + "enum_name": "subtenant_identity_provider_algorithm_enum", + "values": [ + "EC224", + "EC256", + "EC384", + "EC521", + "ECDSA224", + "ECDSA256", + "ECDSA384", + "ECDSA521", + "RSA2048", + "RSA3072" + ], + "group_id": "Accounts", + "_key": "subtenant_identity_provider_algorithm_enum" + }, + { + "entity_name": "subtenant_identity_provider", + "field_name": "order", + "enum_name": "subtenant_identity_provider_order_enum", + "values": [ + "ASC", + "DESC" + ], + "group_id": "Accounts", + "_key": "subtenant_identity_provider_order_enum" + }, + { + "entity_name": "subtenant_identity_provider", + "field_name": "status", + "enum_name": "subtenant_identity_provider_status_enum", + "values": [ + "ACTIVE", + "SUSPENDED" + ], + "group_id": "Accounts", + "_key": "subtenant_identity_provider_status_enum" + }, { "entity_name": "subtenant_light_theme_color", "field_name": "reference", @@ -827,6 +986,35 @@ "group_id": "Device_Update", "_key": "update_campaign_order_enum" }, + { + "entity_name": "update_campaign", + "field_name": "phase", + "enum_name": "update_campaign_phase_enum", + "values": [ + "active", + "archived", + "awaiting_approval", + "deleted", + "draft", + "starting", + "stopped", + "stopping", + "timed" + ], + "group_id": "Device_Update", + "_key": "update_campaign_phase_enum" + }, + { + "entity_name": "update_campaign", + "field_name": "campaign_strategy", + "enum_name": "update_campaign_strategy_enum", + "values": [ + "continuous", + "one-shot" + ], + "group_id": "Device_Update", + "_key": "update_campaign_strategy_enum" + }, { "entity_name": "user_invitation", "field_name": "order", @@ -868,6 +1056,7 @@ { "swagger_models": [ "AccountCreationReq", + "AccountCreationResp", "AccountInfo", "AccountInfoList", "AccountUpdateRootReq", @@ -881,13 +1070,13 @@ "primary_key_field": "id", "methods": [ { - "description": "Retrieve API keys in an array, optionally filtered by the owner.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of API keys, optionally filtered by the owner.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -939,7 +1128,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -974,7 +1163,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -1138,7 +1327,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -1408,7 +1597,12 @@ "eq" ] }, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys", + "links": [] + }, "drop_fields": [ "object", "etag", @@ -1436,7 +1630,7 @@ "_key": "api_keys" }, { - "description": "Create a new account.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"display_name\": \"MyAccount1\", \"admin_name\": \"accountAdmin1\", \"email\": \"example_admin@myaccount.info\", \"country\": \"United Kingdom\", \"end_market\": \"Smart City\", \"address_line1\": \"110 Fulbourn Rd\", \"city\": \"Cambridge\", \"contact\": \"J. Doe\", \"company\": \"Arm\"}'\n```", + "description": "Create a new account.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"display_name\": \"MyAccount1\", \"aliases\": [ \"my-account\" ], \"admin_name\": \"accountAdmin1\", \"email\": \"example_admin@myaccount.info\", \"country\": \"United Kingdom\", \"end_market\": \"Smart City\", \"address_line1\": \"110 Fulbourn Rd\", \"city\": \"Cambridge\", \"contact\": \"J. Doe\", \"company\": \"Arm\"}'\n```", "field_renames": [], "fields": [ { @@ -1532,7 +1726,7 @@ { "type": "array", "maxItems": 10, - "description": "An array of aliases.", + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", "items": { "type": "string", "pattern": "[\\w\\-._]{8,100}" @@ -1544,6 +1738,23 @@ "required": false, "_key": "aliases" }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "parameter_fieldname": "business_model", + "in": "body", + "required": false, + "enum_reference": "account_business_model_enum", + "_key": "business_model" + }, { "type": "string", "maxLength": 100, @@ -1562,7 +1773,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM Holdings Plc", - "description": "The name of the company.", + "description": "The name of the company used in billing.", "api_fieldname": "company", "entity_fieldname": "company", "parameter_fieldname": "company", @@ -1625,7 +1836,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM", - "description": "The display name for the account.", + "description": "The display name for the tenant account.", "api_fieldname": "display_name", "entity_fieldname": "display_name", "parameter_fieldname": "display_name", @@ -1654,7 +1865,7 @@ "entity_fieldname": "end_market", "parameter_fieldname": "end_market", "in": "body", - "required": false, + "required": true, "_key": "end_market" }, { @@ -1704,14 +1915,6 @@ "description": "Successful operation.", "schema": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { "type": "string", @@ -1757,7 +1960,7 @@ "type": "string", "x-nullable": true, "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", + "description": "The ID of the admin user created for this account. Present only in the response for the account creation.", "pattern": "[a-f0-9]{32}", "api_fieldname": "admin_id", "entity_fieldname": "admin_id", @@ -1769,6 +1972,12 @@ "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", "description": "The admin API key created for this account. Present only in the response for account creation.", "readOnly": true, + "x-deprecation": { + "issued_at": "2020-09-01T00:00:00+00:00", + "end_of_life_at": "2021-09-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "admin_key", "entity_fieldname": "admin_key", "_key": "admin_key" @@ -1795,7 +2004,7 @@ { "type": "array", "maxItems": 10, - "description": "An array of aliases.", + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", "items": { "type": "string", "pattern": "[\\w\\-._]{8,100}" @@ -1804,6 +2013,49 @@ "entity_fieldname": "aliases", "_key": "aliases" }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "api_fieldname": "business_model_history", + "entity_fieldname": "business_model_history", + "_key": "business_model_history" + }, { "type": "string", "maxLength": 100, @@ -1819,7 +2071,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM Holdings Plc", - "description": "The name of the company.", + "description": "The name of the company used in billing.", "api_fieldname": "company", "entity_fieldname": "company", "_key": "company" @@ -1887,7 +2139,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM", - "description": "The display name for the account.", + "description": "The display name for the tenant account.", "api_fieldname": "display_name", "entity_fieldname": "display_name", "_key": "display_name" @@ -1958,10 +2210,126 @@ "entity_fieldname": "idle_timeout", "_key": "idle_timeout" }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "api_fieldname": "limitations", + "entity_fieldname": "limitations", + "_key": "limitations" + }, { "type": "object", "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", "additionalProperties": { "type": "string" }, @@ -2278,61 +2646,53 @@ "_key": "address_line2" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" }, { "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" }, { "type": "array", - "maxItems": 10, - "description": "An array of aliases.", + "description": "Business model history for this account.", "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] }, - "_key": "aliases" + "_key": "business_model_history" }, { "type": "string", @@ -2347,7 +2707,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM Holdings Plc", - "description": "The name of the company.", + "description": "The name of the company used in billing.", "_key": "company" }, { @@ -2401,7 +2761,7 @@ "maxLength": 100, "x-nullable": true, "example": "ARM", - "description": "The display name for the account.", + "description": "The display name for the tenant account.", "_key": "display_name" }, { @@ -2456,10 +2816,124 @@ "description": "The reference token expiration time, in minutes, for this account.", "_key": "idle_timeout" }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, { "type": "object", "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", "additionalProperties": { "type": "string" }, @@ -2716,593 +3190,16487 @@ "type": "array", "x-nullable": true, "description": "List of sub accounts. Not available for developer users.", - "items": [], - "_key": "sub_accounts" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" - }, - { - "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" - } - ], - "description": "Represents an account in requests and responses." - }, - "api_fieldname": "sub_accounts", - "entity_fieldname": "sub_accounts", - "_key": "sub_accounts" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "template_id", - "entity_fieldname": "template_id", - "_key": "template_id" - }, - { - "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "api_fieldname": "tier", - "entity_fieldname": "tier", - "_key": "tier" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "api_fieldname": "upgraded_at", - "entity_fieldname": "upgraded_at", - "_key": "upgraded_at" - } - ], - "description": "Represents an account in requests and responses." - }, - "_key": "201" - }, - { - "description": "Error in input data, for example, invalid username.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "403" - } - ], - "path": "/v3/accounts", - "summary": "Create a new account.", - "return_type": "account", - "return_info": { - "self": true, - "custom": false, - "type": "account" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "sub_accounts", - "id", - "created_at", - "updated_at", - "parent_id", - "tier", - "status", - "upgraded_at", - "limits", - "policies", - "template_id", - "reason", - "idle_timeout", - "password_policy", - "reference_note", - "custom_fields", - "mfa_status", - "notification_emails", - "sales_contact", - "expiration_warning_threshold", - "parent_account", - "expiration", - "admin_id", - "admin_key", - "password_recovery_expiration" - ], - "group_id": "Accounts", - "parameter_map": { - "account_id": "id" - }, - "operation_id": "createAccount", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "create" - }, - { - "description": "Retrieve dark theme branding colors for an account.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", - "_key": "id" - } - ], - "method": "get", - "mode": "dark_theme_branding_colors", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "_key": "reference" - }, + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": [], + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "api_fieldname": "sub_accounts", + "entity_fieldname": "sub_accounts", + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "template_id", + "entity_fieldname": "template_id", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "api_fieldname": "tier", + "entity_fieldname": "tier", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "api_fieldname": "tier_history", + "entity_fieldname": "tier_history", + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "api_fieldname": "upgraded_at", + "entity_fieldname": "upgraded_at", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses.", + "foreign_key": { + "group": "Accounts", + "entity": "account" + } + }, + "_key": "201" + }, + { + "description": "Error in input data, for example, invalid username.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account with the specified alias exists already.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "409" + } + ], + "path": "/v3/accounts", + "summary": "Create a new account.", + "return_type": "account", + "return_info": { + "self": true, + "custom": false, + "type": "account" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "id", + "created_at", + "updated_at", + "parent_id", + "tier", + "status", + "upgraded_at", + "limits", + "policies", + "template_id", + "reason", + "idle_timeout", + "password_policy", + "reference_note", + "custom_fields", + "mfa_status", + "notification_emails", + "sales_contact", + "expiration_warning_threshold", + "parent_account", + "expiration", + "admin_id", + "admin_key", + "limitations", + "password_recovery_expiration", + "business_model_history", + "tier_history" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "createAccount", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Retrieve dark theme branding colors for an account.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + } + ], + "method": "get", + "mode": "dark_theme_branding_colors", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", + "readOnly": true, + "enum": [ + "branding_color" + ], + "_key": "object" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/branding-colors/dark", + "summary": "Get dark theme branding colors.", + "return_type": "paginated_response(subtenant_dark_theme_color)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_dark_theme_color" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "limit", + "after", + "order", + "total_count", + "has_more", + "data" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAccountDarkColors", + "notes": "This lists the dark theme banding colors of the subtenant account.", + "foreign_key": { + "entity": "subtenant_dark_theme_color" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "dark_theme_branding_colors" + }, + { + "description": "Retrieve the metadata of all dark theme branding images.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + } + ], + "method": "get", + "mode": "dark_theme_branding_images", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_image" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_image" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/branding-images/dark", + "summary": "Get metadata of all dark theme images.", + "return_type": "paginated_response(subtenant_dark_theme_image)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_dark_theme_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "limit", + "after", + "order", + "total_count", + "has_more", + "data" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccountDarkImageData", + "notes": "This lists the dark theme banding images of the subtenant account.", + "foreign_key": { + "entity": "subtenant_dark_theme_image" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "dark_theme_branding_images" + }, + { + "description": "Retrieve light theme branding colors for an account.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + } + ], + "method": "get", + "mode": "light_theme_branding_colors", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", + "readOnly": true, + "enum": [ + "branding_color" + ], + "_key": "object" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/branding-colors/light", + "summary": "Get light theme branding colors.", + "return_type": "paginated_response(subtenant_light_theme_color)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_light_theme_color" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "limit", + "after", + "order", + "total_count", + "has_more", + "data" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAccountLightColors", + "notes": "This lists the light theme banding colors of the subtenant account.", + "foreign_key": { + "entity": "subtenant_light_theme_color" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "light_theme_branding_colors" + }, + { + "description": "Retrieve the metadata of all light theme branding images.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + } + ], + "method": "get", + "mode": "light_theme_branding_images", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_image" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_image" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/branding-images/light", + "summary": "Get metadata of all light theme images.", + "return_type": "paginated_response(subtenant_light_theme_image)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_light_theme_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "limit", + "after", + "order", + "total_count", + "has_more", + "data" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccountLightImageData", + "notes": "This lists the light theme banding images of the subtenant account.", + "foreign_key": { + "entity": "subtenant_light_theme_image" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "light_theme_branding_images" + }, + { + "description": "Retrieve an array of tenant accounts, optionally filtered by status and tier level.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "format", + "in": "query", + "description": "Format information for the query response. Supported: format=breakdown.", + "required": false, + "type": "string", + "entity_fieldname": "format", + "api_fieldname": "format", + "external_param": true, + "parameter_fieldname": "format", + "_key": "format" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts, history.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 1000.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 1000, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", + "_key": "order" + }, + { + "name": "properties", + "in": "query", + "description": "Property name returned from account-specific properties.", + "required": false, + "type": "string", + "entity_fieldname": "properties", + "api_fieldname": "properties", + "external_param": true, + "parameter_fieldname": "properties", + "_key": "properties" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": [], + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000), or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "account" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/accounts", + "summary": "Get all accounts.", + "return_type": "paginated_response(account)", + "return_info": { + "self": true, + "custom": false, + "type": "account" + }, + "x_filter": { + "status": [ + "eq", + "in", + "nin" + ], + "tier": [ + "eq" + ], + "parent": [ + "eq" + ], + "end_market": [ + "eq" + ], + "country": [ + "like" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "total_count", + "has_more", + "data", + "status__eq", + "status__in", + "status__nin", + "tier__eq", + "parent__eq", + "end_market__eq", + "country__like" + ], + "foreign_key_priority": "self", + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccounts", + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "account" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Retrieve information about the account.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/me?include=policies \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "name": "properties", + "in": "query", + "description": "Property name to return from account-specific properties.", + "required": false, + "type": "string", + "entity_fieldname": "properties", + "api_fieldname": "properties", + "external_param": true, + "parameter_fieldname": "properties", + "_key": "properties" + } + ], + "method": "get", + "mode": "me", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "api_fieldname": "address_line1", + "entity_fieldname": "address_line1", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "api_fieldname": "address_line2", + "entity_fieldname": "address_line2", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "api_fieldname": "aliases", + "entity_fieldname": "aliases", + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "api_fieldname": "business_model_history", + "entity_fieldname": "business_model_history", + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "api_fieldname": "city", + "entity_fieldname": "city", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "api_fieldname": "company", + "entity_fieldname": "company", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "api_fieldname": "contact", + "entity_fieldname": "contact", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "api_fieldname": "contract_number", + "entity_fieldname": "contract_number", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "api_fieldname": "country", + "entity_fieldname": "country", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "custom_fields", + "entity_fieldname": "custom_fields", + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "api_fieldname": "customer_number", + "entity_fieldname": "customer_number", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "api_fieldname": "display_name", + "entity_fieldname": "display_name", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "api_fieldname": "email", + "entity_fieldname": "email", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "api_fieldname": "end_market", + "entity_fieldname": "end_market", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "api_fieldname": "expiration", + "entity_fieldname": "expiration", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "api_fieldname": "expiration_warning_threshold", + "entity_fieldname": "expiration_warning_threshold", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "api_fieldname": "idle_timeout", + "entity_fieldname": "idle_timeout", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "api_fieldname": "limitations", + "entity_fieldname": "limitations", + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "limits", + "entity_fieldname": "limits", + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "api_fieldname": "mfa_status", + "entity_fieldname": "mfa_status", + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "api_fieldname": "notification_emails", + "entity_fieldname": "notification_emails", + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "api_fieldname": "parent_account", + "entity_fieldname": "parent_account", + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "parent_id", + "entity_fieldname": "parent_id", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "api_fieldname": "password_policy", + "entity_fieldname": "password_policy", + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "api_fieldname": "password_recovery_expiration", + "entity_fieldname": "password_recovery_expiration", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "api_fieldname": "phone_number", + "entity_fieldname": "phone_number", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "api_fieldname": "policies", + "entity_fieldname": "policies", + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "api_fieldname": "postal_code", + "entity_fieldname": "postal_code", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "api_fieldname": "reason", + "entity_fieldname": "reason", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "api_fieldname": "reference_note", + "entity_fieldname": "reference_note", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "api_fieldname": "sales_contact", + "entity_fieldname": "sales_contact", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "api_fieldname": "state", + "entity_fieldname": "state", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": [], + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "api_fieldname": "sub_accounts", + "entity_fieldname": "sub_accounts", + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "template_id", + "entity_fieldname": "template_id", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "api_fieldname": "tier", + "entity_fieldname": "tier", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "api_fieldname": "tier_history", + "entity_fieldname": "tier_history", + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "api_fieldname": "upgraded_at", + "entity_fieldname": "upgraded_at", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/accounts/me", + "summary": "Get account information.", + "return_type": "account", + "return_info": { + "self": true, + "custom": false, + "type": "account" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "id", + "created_at", + "updated_at", + "parent_id", + "display_name", + "company", + "country", + "address_line1", + "address_line2", + "city", + "state", + "postal_code", + "contact", + "email", + "phone_number", + "aliases", + "tier", + "status", + "upgraded_at", + "limits", + "policies", + "template_id", + "reason", + "end_market", + "idle_timeout", + "password_policy", + "reference_note", + "custom_fields", + "mfa_status", + "notification_emails", + "sales_contact", + "expiration_warning_threshold", + "contract_number", + "customer_number", + "parent_account", + "expiration", + "limitations", + "password_recovery_expiration", + "business_model", + "business_model_history", + "tier_history" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getMyAccountInfo", + "notes": "This is provided by the SDK to avoid listing to retrieve the user's own Account.", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "me" + }, + { + "description": "Retrieve detailed information about an account.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "account_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts, history.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "name": "properties", + "in": "query", + "description": "Property name to return from account-specific properties.", + "required": false, + "type": "string", + "entity_fieldname": "properties", + "api_fieldname": "properties", + "external_param": true, + "parameter_fieldname": "properties", + "_key": "properties" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "api_fieldname": "address_line1", + "entity_fieldname": "address_line1", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "api_fieldname": "address_line2", + "entity_fieldname": "address_line2", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "api_fieldname": "aliases", + "entity_fieldname": "aliases", + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "api_fieldname": "business_model_history", + "entity_fieldname": "business_model_history", + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "api_fieldname": "city", + "entity_fieldname": "city", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "api_fieldname": "company", + "entity_fieldname": "company", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "api_fieldname": "contact", + "entity_fieldname": "contact", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "api_fieldname": "contract_number", + "entity_fieldname": "contract_number", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "api_fieldname": "country", + "entity_fieldname": "country", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "custom_fields", + "entity_fieldname": "custom_fields", + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "api_fieldname": "customer_number", + "entity_fieldname": "customer_number", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "api_fieldname": "display_name", + "entity_fieldname": "display_name", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "api_fieldname": "email", + "entity_fieldname": "email", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "api_fieldname": "end_market", + "entity_fieldname": "end_market", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "api_fieldname": "expiration", + "entity_fieldname": "expiration", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "api_fieldname": "expiration_warning_threshold", + "entity_fieldname": "expiration_warning_threshold", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "api_fieldname": "idle_timeout", + "entity_fieldname": "idle_timeout", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "api_fieldname": "limitations", + "entity_fieldname": "limitations", + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "limits", + "entity_fieldname": "limits", + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "api_fieldname": "mfa_status", + "entity_fieldname": "mfa_status", + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "api_fieldname": "notification_emails", + "entity_fieldname": "notification_emails", + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "api_fieldname": "parent_account", + "entity_fieldname": "parent_account", + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "parent_id", + "entity_fieldname": "parent_id", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "api_fieldname": "password_policy", + "entity_fieldname": "password_policy", + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "api_fieldname": "password_recovery_expiration", + "entity_fieldname": "password_recovery_expiration", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "api_fieldname": "phone_number", + "entity_fieldname": "phone_number", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "api_fieldname": "policies", + "entity_fieldname": "policies", + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "api_fieldname": "postal_code", + "entity_fieldname": "postal_code", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "api_fieldname": "reason", + "entity_fieldname": "reason", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "api_fieldname": "reference_note", + "entity_fieldname": "reference_note", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "api_fieldname": "sales_contact", + "entity_fieldname": "sales_contact", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "api_fieldname": "state", + "entity_fieldname": "state", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": [], + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "api_fieldname": "sub_accounts", + "entity_fieldname": "sub_accounts", + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "template_id", + "entity_fieldname": "template_id", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "api_fieldname": "tier", + "entity_fieldname": "tier", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "api_fieldname": "tier_history", + "entity_fieldname": "tier_history", + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "api_fieldname": "upgraded_at", + "entity_fieldname": "upgraded_at", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account with the given ID not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}", + "summary": "Get account information.", + "return_type": "account", + "return_info": { + "self": true, + "custom": false, + "type": "account" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "created_at", + "updated_at", + "parent_id", + "display_name", + "company", + "country", + "address_line1", + "address_line2", + "city", + "state", + "postal_code", + "contact", + "email", + "phone_number", + "aliases", + "tier", + "status", + "upgraded_at", + "limits", + "policies", + "template_id", + "reason", + "end_market", + "idle_timeout", + "password_policy", + "reference_note", + "custom_fields", + "mfa_status", + "notification_emails", + "sales_contact", + "expiration_warning_threshold", + "contract_number", + "customer_number", + "parent_account", + "expiration", + "limitations", + "password_recovery_expiration", + "business_model", + "business_model_history", + "tier_history" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAccountInfo", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Retrieve an array of trusted certificates.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "trusted_certificates", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "account_id", + "certificate", + "certificate_fingerprint", + "etag", + "id", + "issuer", + "name", + "object", + "service", + "subject", + "validity" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "string", + "example": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----", + "description": "X509.v3 trusted certificate in PEM format.", + "_key": "certificate" + }, + { + "type": "string", + "example": "a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1", + "description": "A SHA-256 fingerprint of the certificate.", + "_key": "certificate_fingerprint" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "x-nullable": true, + "example": "Certificate created by me.", + "description": "Human readable description of this certificate.", + "_key": "description" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "Device execution mode where 1 means a developer certificate.", + "_key": "device_execution_mode" + }, + { + "type": "boolean", + "example": false, + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, + "_key": "enrollment_mode" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "example": "CN=issuer", + "description": "Issuer of the certificate.", + "_key": "issuer" + }, + { + "type": "string", + "maxLength": 100, + "example": "My certificate", + "description": "Certificate name.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'trusted-cert'", + "enum": [ + "trusted-cert" + ], + "_key": "object" + }, + { + "x-nullable": true, + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the owner.", + "pattern": "[a-f0-9]{32}", + "_key": "owner_id" + }, + { + "type": "string", + "description": "Service name where the certificate is used.", + "enum": [ + "lwm2m", + "bootstrap" + ], + "_key": "service" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "Status of the certificate.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "_key": "status" + }, + { + "type": "string", + "example": "CN=subject", + "description": "Subject of the certificate.", + "_key": "subject" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "boolean", + "example": true, + "description": "This read-only flag indicates whether the certificate is valid or not.", + "readOnly": true, + "_key": "valid" + }, + { + "type": "string", + "format": "date-time", + "example": "2038-02-14T15:24:14Z", + "description": "Expiration time in UTC formatted as RFC3339.", + "_key": "validity" + } + ], + "description": "Represents a trusted certificate in responses.", + "foreign_key": { + "group": "Security", + "entity": "trusted_certificate" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "trusted_certificate_order_enum", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "trusted_certificate" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden, only available for administrators of commercial accounts.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An account with the given ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/trusted-certificates", + "summary": "Get trusted certificates.", + "return_type": "paginated_response(subtenant_trusted_certificate)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_trusted_certificate" + }, + "x_filter": { + "name": [ + "eq" + ], + "service": [ + "eq" + ], + "expire": [ + "eq" + ], + "device_execution_mode": [ + "eq", + "neq" + ], + "owner": [ + "eq" + ], + "enrollment_mode": [ + "eq" + ], + "status": [ + "eq" + ], + "issuer": [ + "like" + ], + "subject": [ + "like" + ], + "certificate_fingerprint": [ + "eq" + ], + "valid": [ + "eq" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "total_count", + "has_more", + "data", + "name__eq", + "service__eq", + "expire__eq", + "device_execution_mode__eq", + "device_execution_mode__neq", + "owner__eq", + "enrollment_mode__eq", + "status__eq", + "issuer__like", + "subject__like", + "certificate_fingerprint__eq", + "valid__eq" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccountCertificates", + "notes": "This lists the trusted certificates of the subtenant account.", + "foreign_key": { + "entity": "subtenant_trusted_certificate" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "trusted_certificates" + }, + { + "description": "Update an account.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"phone_number\": \"12345678\"}'\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "api_fieldname": "address_line1", + "entity_fieldname": "address_line1", + "parameter_fieldname": "address_line1", + "in": "body", + "required": false, + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "api_fieldname": "address_line2", + "entity_fieldname": "address_line2", + "parameter_fieldname": "address_line2", + "in": "body", + "required": false, + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "api_fieldname": "aliases", + "entity_fieldname": "aliases", + "parameter_fieldname": "aliases", + "in": "body", + "required": false, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "parameter_fieldname": "business_model", + "in": "body", + "required": false, + "enum_reference": "account_business_model_enum", + "_key": "business_model" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "api_fieldname": "city", + "entity_fieldname": "city", + "parameter_fieldname": "city", + "in": "body", + "required": false, + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "api_fieldname": "company", + "entity_fieldname": "company", + "parameter_fieldname": "company", + "in": "body", + "required": false, + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "api_fieldname": "contact", + "entity_fieldname": "contact", + "parameter_fieldname": "contact", + "in": "body", + "required": false, + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "api_fieldname": "contract_number", + "entity_fieldname": "contract_number", + "parameter_fieldname": "contract_number", + "in": "body", + "required": false, + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "api_fieldname": "country", + "entity_fieldname": "country", + "parameter_fieldname": "country", + "in": "body", + "required": false, + "_key": "country" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "custom_fields", + "entity_fieldname": "custom_fields", + "parameter_fieldname": "custom_fields", + "in": "body", + "required": false, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "api_fieldname": "customer_number", + "entity_fieldname": "customer_number", + "parameter_fieldname": "customer_number", + "in": "body", + "required": false, + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "api_fieldname": "display_name", + "entity_fieldname": "display_name", + "parameter_fieldname": "display_name", + "in": "body", + "required": false, + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "api_fieldname": "email", + "entity_fieldname": "email", + "parameter_fieldname": "email", + "in": "body", + "required": false, + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "api_fieldname": "end_market", + "entity_fieldname": "end_market", + "parameter_fieldname": "end_market", + "in": "body", + "required": false, + "_key": "end_market" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "api_fieldname": "expiration_warning_threshold", + "entity_fieldname": "expiration_warning_threshold", + "parameter_fieldname": "expiration_warning_threshold", + "in": "body", + "required": false, + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "account_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "api_fieldname": "idle_timeout", + "entity_fieldname": "idle_timeout", + "parameter_fieldname": "idle_timeout", + "in": "body", + "required": false, + "_key": "idle_timeout" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "api_fieldname": "mfa_status", + "entity_fieldname": "mfa_status", + "parameter_fieldname": "mfa_status", + "in": "body", + "required": false, + "enum_reference": "account_mfa_status_enum", + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "api_fieldname": "notification_emails", + "entity_fieldname": "notification_emails", + "parameter_fieldname": "notification_emails", + "in": "body", + "required": false, + "_key": "notification_emails" + }, + { + "type": "object", + "required": false, + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "api_fieldname": "password_policy", + "entity_fieldname": "password_policy", + "parameter_fieldname": "password_policy", + "in": "body", + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "api_fieldname": "password_recovery_expiration", + "entity_fieldname": "password_recovery_expiration", + "parameter_fieldname": "password_recovery_expiration", + "in": "body", + "required": false, + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "api_fieldname": "phone_number", + "entity_fieldname": "phone_number", + "parameter_fieldname": "phone_number", + "in": "body", + "required": false, + "_key": "phone_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "api_fieldname": "postal_code", + "entity_fieldname": "postal_code", + "parameter_fieldname": "postal_code", + "in": "body", + "required": false, + "_key": "postal_code" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "api_fieldname": "sales_contact", + "entity_fieldname": "sales_contact", + "parameter_fieldname": "sales_contact", + "in": "body", + "required": false, + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "api_fieldname": "state", + "entity_fieldname": "state", + "parameter_fieldname": "state", + "in": "body", + "required": false, + "_key": "state" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "api_fieldname": "address_line1", + "entity_fieldname": "address_line1", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "api_fieldname": "address_line2", + "entity_fieldname": "address_line2", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "api_fieldname": "aliases", + "entity_fieldname": "aliases", + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "entity_fieldname": "business_model", + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "api_fieldname": "business_model_history", + "entity_fieldname": "business_model_history", + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "api_fieldname": "city", + "entity_fieldname": "city", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "api_fieldname": "company", + "entity_fieldname": "company", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "api_fieldname": "contact", + "entity_fieldname": "contact", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "api_fieldname": "contract_number", + "entity_fieldname": "contract_number", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "api_fieldname": "country", + "entity_fieldname": "country", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "custom_fields", + "entity_fieldname": "custom_fields", + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "api_fieldname": "customer_number", + "entity_fieldname": "customer_number", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "api_fieldname": "display_name", + "entity_fieldname": "display_name", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "api_fieldname": "email", + "entity_fieldname": "email", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "api_fieldname": "end_market", + "entity_fieldname": "end_market", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "api_fieldname": "expiration", + "entity_fieldname": "expiration", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "api_fieldname": "expiration_warning_threshold", + "entity_fieldname": "expiration_warning_threshold", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "api_fieldname": "idle_timeout", + "entity_fieldname": "idle_timeout", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "api_fieldname": "limitations", + "entity_fieldname": "limitations", + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "limits", + "entity_fieldname": "limits", + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "api_fieldname": "mfa_status", + "entity_fieldname": "mfa_status", + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "api_fieldname": "notification_emails", + "entity_fieldname": "notification_emails", + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "api_fieldname": "parent_account", + "entity_fieldname": "parent_account", + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "parent_id", + "entity_fieldname": "parent_id", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "api_fieldname": "password_policy", + "entity_fieldname": "password_policy", + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "api_fieldname": "password_recovery_expiration", + "entity_fieldname": "password_recovery_expiration", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "api_fieldname": "phone_number", + "entity_fieldname": "phone_number", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "api_fieldname": "policies", + "entity_fieldname": "policies", + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "api_fieldname": "postal_code", + "entity_fieldname": "postal_code", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "api_fieldname": "reason", + "entity_fieldname": "reason", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "api_fieldname": "reference_note", + "entity_fieldname": "reference_note", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "api_fieldname": "sales_contact", + "entity_fieldname": "sales_contact", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "api_fieldname": "state", + "entity_fieldname": "state", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": { + "type": "object", + "required": [ + "end_market", + "etag", + "id", + "object", + "status", + "tier" + ], + "properties": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "_key": "address_line2" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "_key": "end_market" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "_key": "notification_emails" + }, + { + "type": "string", + "description": "Entity name: always `account`.", + "enum": [ + "account" + ], + "_key": "object" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "_key": "parent_id" + }, + { + "type": "object", + "required": [ + "minimum_length" + ], + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of sub accounts. Not available for developer users.", + "items": [], + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "api_fieldname": "sub_accounts", + "entity_fieldname": "sub_accounts", + "_key": "sub_accounts" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "template_id", + "entity_fieldname": "template_id", + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "api_fieldname": "tier", + "entity_fieldname": "tier", + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "api_fieldname": "tier_history", + "entity_fieldname": "tier_history", + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "api_fieldname": "upgraded_at", + "entity_fieldname": "upgraded_at", + "_key": "upgraded_at" + } + ], + "description": "Represents an account in requests and responses." + }, + "_key": "200" + }, + { + "description": "Error in input data format.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Account with the given ID not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + }, + { + "description": "Account with the specified new alias exists already.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "409" + } + ], + "path": "/v3/accounts/{account_id}", + "summary": "Update attributes of an existing account.", + "return_type": "account", + "return_info": { + "self": true, + "custom": false, + "type": "account" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "created_at", + "updated_at", + "parent_id", + "tier", + "status", + "upgraded_at", + "limits", + "policies", + "template_id", + "reason", + "reference_note", + "parent_account", + "expiration", + "limitations", + "business_model_history", + "tier_history" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "updateAccount", + "additional_operations": [ + { + "operation_id": "updateMyAccount", + "notes": "After retrieving the resource using the `me` method, it can modified using using this SDK method." + } + ], + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "update" + }, + { + "description": "Retrieve an array of active user invitations.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "user_invitations", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "account_id", + "email", + "etag", + "id", + "object", + "user_id" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the user is invited to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "friend@arm.com", + "description": "Email address of the invited user.", + "_key": "email" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Invitation expiration as UTC time RFC3339.", + "_key": "expiration" + }, + { + "type": "array", + "description": "A list of IDs of the groups the user is invited to.", + "items": { + "type": "string" + }, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The ID of the invitation.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "array", + "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", + "x-nullable": true, + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": [ + { + "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "ID of the identity provider.", + "readOnly": false, + "_override": true, + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "Pelion", + "readOnly": false, + "description": "Name of the identity provider.", + "_override": true, + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Identity provider type.", + "example": "NATIVE", + "readOnly": true, + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "login_profile_type", + "_key": "type" + } + ], + "description": "Represents a user login profile in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "login_profile" + } + }, + "_key": "login_profiles" + }, + { + "type": "string", + "description": "Entity name: always 'user-invitation'", + "enum": [ + "user-invitation" + ], + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the invited user.", + "pattern": "[a-f0-9]{32}", + "_key": "user_id" + } + ], + "description": "Represents an user invitation in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "user_invitation" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "user_invitation_order_enum", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "user_invitation" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An account with the specified ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/user-invitations", + "summary": "Get user invitations.", + "return_type": "paginated_response(subtenant_user_invitation)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_user_invitation" + }, + "x_filter": { + "login_profiles": [ + "eq" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "total_count", + "has_more", + "data", + "login_profiles__eq" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccountInvitations", + "notes": "This lists the user invitations of the subtenant account.", + "foreign_key": { + "entity": "subtenant_user_invitation" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "user_invitations" + }, + { + "description": "Retrieve an array of users.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "users", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "account_id", + "email", + "etag", + "id", + "object", + "status" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "array", + "description": "List of active user sessions.", + "items": { + "type": "object", + "required": [ + "account_id", + "ip_address", + "login_time", + "object", + "reference_token", + "user_agent" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The UUID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "entity_fieldname": "ip_address", + "_key": "ip_address" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "The login time of the user.", + "api_fieldname": "login_time", + "entity_fieldname": "login_time", + "_key": "login_time" + }, + { + "type": "string", + "description": "Entity name: always 'user-session'", + "enum": [ + "user-session" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", + "description": "The reference token.", + "api_fieldname": "reference_token", + "entity_fieldname": "reference_token", + "_key": "reference_token" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "entity_fieldname": "user_agent", + "_key": "user_agent" + } + ], + "description": "Represents an active user session.", + "foreign_key": { + "group": "Accounts", + "entity": "active_session" + } + }, + "_key": "active_sessions" + }, + { + "type": "string", + "example": "110 Fulbourn Rd, Cambridge, United Kingdom", + "description": "Address.", + "x-nullable": true, + "_key": "address" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "A timestamp of the user creation in the storage, in milliseconds.", + "_key": "creation_time" + }, + { + "type": "object", + "x-nullable": true, + "description": "User's account-specific custom properties. The value is a string.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "user@arm.com", + "description": "The email address.", + "_key": "email" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating whether the user's email address has been verified or not.", + "_key": "email_verified" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "maxLength": 100, + "example": "User Doe", + "x-nullable": true, + "description": "The full name of the user.", + "_key": "full_name" + }, + { + "type": "array", + "description": "A list of IDs of the groups this user belongs to.", + "items": { + "type": "string" + }, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The ID of the user.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating that the user has accepted General Terms and Conditions.", + "_key": "is_gtc_accepted" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating that the user has consented to receive marketing information.", + "_key": "is_marketing_accepted" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating whether two-factor authentication (TOTP) has been enabled.", + "_key": "is_totp_enabled" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "A timestamp of the latest login of the user, in milliseconds.", + "_key": "last_login_time" + }, + { + "type": "array", + "maxItems": 5, + "description": "Timestamps, succeedings, IP addresses and user agent information of the last five logins of the user, with timestamps in RFC3339 format.", + "items": { + "type": "object", + "required": [ + "date", + "ip_address", + "success", + "user_agent" + ], + "properties": [ + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "UTC time RFC3339 for this login attempt.", + "api_fieldname": "date", + "entity_fieldname": "date", + "_key": "date" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "entity_fieldname": "ip_address", + "_key": "ip_address" + }, + { + "type": "boolean", + "example": true, + "description": "Flag indicating whether login attempt was successful or not.", + "api_fieldname": "success", + "entity_fieldname": "success", + "_key": "success" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "entity_fieldname": "user_agent", + "_key": "user_agent" + } + ], + "description": "Represents an entry in login history.", + "foreign_key": { + "group": "Accounts", + "entity": "login_history" + } + }, + "_key": "login_history" + }, + { + "type": "array", + "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", + "x-nullable": true, + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": [ + { + "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "ID of the identity provider.", + "readOnly": false, + "_override": true, + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "Pelion", + "readOnly": false, + "description": "Name of the identity provider.", + "_override": true, + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Identity provider type.", + "example": "NATIVE", + "readOnly": true, + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "login_profile_type", + "_key": "type" + } + ], + "description": "Represents a user login profile in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "login_profile" + } + }, + "_key": "login_profiles" + }, + { + "type": "string", + "description": "Entity name: always `user`.", + "enum": [ + "user" + ], + "_key": "object" + }, + { + "type": "string", + "example": "PZf9eEUH43DAPE9ULINFeuj", + "description": "The password when creating a new user. It will be generated when not present in the request.", + "x-nullable": true, + "_key": "password" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "A timestamp of the latest change of the user password, in milliseconds.", + "_key": "password_changed_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "+44 (1223) 400 400", + "description": "Phone number.", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the user. ENROLLING state indicates that the user is in the middle of the enrollment process. INVITED means that the user has not accepted the invitation request. RESET means that the password must be changed immediately. INACTIVE users are locked out and not permitted to use the system.", + "enum": [ + "ENROLLING", + "INVITED", + "ACTIVE", + "RESET", + "INACTIVE" + ], + "_key": "status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of scratch codes for the two-factor authentication. Visible only when 2FA is requested to be enabled or the codes regenerated.", + "items": { + "type": "string" + }, + "_key": "totp_scratch_codes" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "pattern": "[\\w\\-,._@+=]{4,30}", + "type": "string", + "example": "admin", + "description": "A username.", + "x-nullable": true, + "_key": "username" + } + ], + "description": "Represents a user in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "user" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "user_order_enum", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "user" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An account with the given ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/users", + "summary": "Get users.", + "return_type": "paginated_response(subtenant_user)", + "return_info": { + "self": false, + "custom": false, + "type": "subtenant_user" + }, + "x_filter": { + "email": [ + "eq" + ], + "status": [ + "eq", + "in", + "nin" + ], + "login_profiles": [ + "eq" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "sub_accounts", + "total_count", + "has_more", + "data", + "email__eq", + "status__eq", + "status__in", + "status__nin", + "login_profiles__eq" + ], + "group_id": "Accounts", + "parameter_map": { + "account_id": "id" + }, + "operation_id": "getAllAccountUsers", + "notes": "This lists the users of the subtenant account.", + "foreign_key": { + "entity": "subtenant_user" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "users" + } + ], + "fields": [ + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "110 Fulbourn Rd", + "description": "Postal address line 1.", + "api_fieldname": "address_line1", + "readOnly": false, + "required": false, + "_key": "address_line1" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "Postal address line 2.", + "api_fieldname": "address_line2", + "readOnly": false, + "required": false, + "_key": "address_line2" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "admin@arm.com", + "description": "The email address of the admin user created for this account. Present only in the response for account creation.", + "api_fieldname": "admin_email", + "readOnly": false, + "required": false, + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Admin Doe", + "description": "The full name of the admin user created for this account. Present only in the response for account creation.", + "api_fieldname": "admin_full_name", + "readOnly": false, + "required": false, + "_key": "admin_full_name" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e2e89242ac12000600000000", + "description": "The ID of the admin user created for this account. Present only in the response for the account creation.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "admin_id", + "readOnly": true, + "required": false, + "_key": "admin_id" + }, + { + "type": "string", + "x-nullable": true, + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", + "description": "The admin API key created for this account. Present only in the response for account creation.", + "readOnly": true, + "x-deprecation": { + "issued_at": "2020-09-01T00:00:00+00:00", + "end_of_life_at": "2021-09-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, + "api_fieldname": "admin_key", + "required": false, + "_key": "admin_key" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "admin", + "description": "The username of the admin user created for this account. Present only in the response for account creation.", + "api_fieldname": "admin_name", + "readOnly": false, + "required": false, + "_key": "admin_name" + }, + { + "type": "string", + "x-nullable": true, + "example": "PZf9eEUH43DAPE9ULINFeuj", + "description": "The password of the admin user created for this account. Present only in the response for account creation.", + "api_fieldname": "admin_password", + "readOnly": false, + "required": false, + "_key": "admin_password" + }, + { + "type": "array", + "maxItems": 10, + "description": "An array of aliases for the tenant account ID. The aliases must be globally unique.", + "items": { + "type": "string", + "pattern": "[\\w\\-._]{8,100}" + }, + "api_fieldname": "aliases", + "readOnly": false, + "required": false, + "_key": "aliases" + }, + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "api_fieldname": "business_model", + "readOnly": false, + "required": false, + "enum_reference": "account_business_model_enum", + "_key": "business_model" + }, + { + "type": "array", + "description": "Business model history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "default": "active_device_business_model", + "example": "api_calls_1_business_model", + "description": "Business model for this account. Manageable by the root admin only.", + "enum": [ + "active_device_business_model", + "api_calls_1_business_model" + ], + "_key": "business_model" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ] + }, + "api_fieldname": "business_model_history", + "readOnly": true, + "required": false, + "_key": "business_model_history" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "Cambridge", + "description": "The city part of the postal address.", + "api_fieldname": "city", + "readOnly": false, + "required": false, + "_key": "city" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM Holdings Plc", + "description": "The name of the company used in billing.", + "api_fieldname": "company", + "readOnly": false, + "required": false, + "_key": "company" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "J. Doe", + "description": "The name of the contact person for this account.", + "api_fieldname": "contact", + "readOnly": false, + "required": false, + "_key": "contact" + }, + { + "type": "string", + "example": "1NX25_0001", + "x-nullable": true, + "description": "Contract number of the customer.", + "api_fieldname": "contract_number", + "readOnly": false, + "required": false, + "_key": "contract_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "United Kingdom", + "description": "The country part of the postal address.", + "api_fieldname": "country", + "readOnly": false, + "required": false, + "_key": "country" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "object", + "x-nullable": true, + "description": "Account's custom properties as key-value pairs.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "custom_fields", + "readOnly": false, + "required": false, + "_key": "custom_fields" + }, + { + "type": "string", + "example": "1NC25_0001", + "x-nullable": true, + "description": "Customer number of the customer.", + "api_fieldname": "customer_number", + "readOnly": false, + "required": false, + "_key": "customer_number" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "ARM", + "description": "The display name for the tenant account.", + "api_fieldname": "display_name", + "readOnly": false, + "required": false, + "_key": "display_name" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "x-nullable": true, + "example": "info@arm.com", + "description": "The company email address for this account.", + "api_fieldname": "email", + "readOnly": false, + "required": false, + "_key": "email" + }, + { + "type": "string", + "example": "IT", + "description": "Account end market.", + "api_fieldname": "end_market", + "readOnly": false, + "required": true, + "_key": "end_market" + }, + { + "type": "string", + "x-nullable": true, + "format": "date-time", + "description": "Expiration time of the account, as UTC time RFC3339.", + "api_fieldname": "expiration", + "readOnly": true, + "required": false, + "_key": "expiration" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 180, + "example": "180", + "x-nullable": true, + "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", + "api_fieldname": "expiration_warning_threshold", + "readOnly": false, + "required": false, + "_key": "expiration_warning_threshold" + }, + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "Account ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 120, + "x-nullable": true, + "example": "30", + "description": "The reference token expiration time, in minutes, for this account.", + "api_fieldname": "idle_timeout", + "readOnly": false, + "required": false, + "_key": "idle_timeout" + }, + { + "type": "array", + "description": "List of account limitation objects.", + "items": { + "type": "object", + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Billing period of the account limitation.", + "_key": "billing_period" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "description": "Description of the account limitation.", + "readOnly": true, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this limitation is inherited.", + "readOnly": true, + "_key": "inherited" + }, + { + "type": "string", + "description": "Indicates where this limit is inherited from.", + "readOnly": true, + "_key": "inherited_from" + }, + { + "type": "string", + "description": "Indicates the type of the entity where the limitation is inherited from.", + "readOnly": true, + "_key": "inherited_type" + }, + { + "type": "integer", + "format": "int32", + "description": "The value of the limit.", + "_key": "limit" + }, + { + "type": "string", + "description": "Name of the account limitation.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'limitation'", + "enum": [ + "user", + "api-key", + "group", + "account", + "account_template", + "trusted_cert", + "list", + "error", + "agreement", + "signed_agreement", + "policy", + "limitation", + "identity_provider", + "user_session", + "user_invitation", + "notification_entry", + "branding_color", + "branding_image" + ], + "_key": "object" + }, + { + "type": "integer", + "format": "int32", + "description": "Quota of the account limitation.", + "_key": "quota" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "This object represents an account limitation." + }, + "api_fieldname": "limitations", + "readOnly": true, + "required": false, + "_key": "limitations" + }, + { + "type": "object", + "x-nullable": true, + "x-deprecation": { + "issued_at": "2019-08-27T12:03:58+00:00", + "end_of_life_at": "2020-08-27T12:03:58+00:00", + "comment": "Replaced by the limitations parameter." + }, + "description": "DEPRECATED: Replaced by the limitations parameter.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "limits", + "readOnly": true, + "required": false, + "_key": "limits" + }, + { + "type": "string", + "x-nullable": true, + "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", + "enum": [ + "enforced", + "optional" + ], + "api_fieldname": "mfa_status", + "readOnly": false, + "required": false, + "enum_reference": "account_mfa_status_enum", + "_key": "mfa_status" + }, + { + "type": "array", + "x-nullable": true, + "description": "A list of notification email addresses.", + "items": { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string" + }, + "api_fieldname": "notification_emails", + "readOnly": false, + "required": false, + "_key": "notification_emails" + }, + { + "type": "object", + "properties": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", + "entity_fieldname": "admin_email", + "_key": "admin_email" + }, + { + "type": "string", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", + "entity_fieldname": "admin_name", + "_key": "admin_name" + }, + { + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + } + ], + "description": "Represents parent account contact details in responses.", + "foreign_key": { + "group": "Accounts", + "entity": "parent_account" + }, + "x-nullable": true, + "api_fieldname": "parent_account", + "readOnly": true, + "required": false, + "_key": "parent_account" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account, if any.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "parent_id", + "readOnly": true, + "required": false, + "_key": "parent_id" + }, + { + "type": "object", + "required": false, + "properties": [ + { + "type": "integer", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", + "entity_fieldname": "minimum_length", + "_key": "minimum_length" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "password_policy" + }, + "description": "The password policy for this account.", + "x-nullable": true, + "api_fieldname": "password_policy", + "readOnly": false, + "_key": "password_policy" + }, + { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 45, + "description": "Indicates for how many minutes a password recovery email is valid.", + "api_fieldname": "password_recovery_expiration", + "readOnly": false, + "required": false, + "_key": "password_recovery_expiration" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "+44 (1223) 400 400", + "description": "The phone number of a company representative.", + "api_fieldname": "phone_number", + "readOnly": false, + "required": false, + "_key": "phone_number" + }, + { + "type": "array", + "x-nullable": true, + "description": "List of policies if requested.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", + "entity_fieldname": "action", + "_key": "action" + }, + { + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", + "entity_fieldname": "allow", + "_key": "allow" + }, + { + "type": "string", + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "entity_fieldname": "feature", + "_key": "feature" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", + "readOnly": true, + "api_fieldname": "inherited", + "entity_fieldname": "inherited", + "_key": "inherited" + }, + { + "type": "string", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", + "readOnly": true, + "api_fieldname": "inherited_from", + "entity_fieldname": "inherited_from", + "_key": "inherited_from" + }, + { + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "entity_fieldname": "inherited_type", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", + "entity_fieldname": "resource", + "_key": "resource" + } + ], + "description": "Represents a feature policy. Either the feature or the resource must be specified.", + "foreign_key": { + "group": "Accounts", + "entity": "policy" + } + }, + "api_fieldname": "policies", + "readOnly": true, + "required": false, + "_key": "policies" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": "CB1 9NJ", + "description": "The postal code part of the postal address.", + "api_fieldname": "postal_code", + "readOnly": false, + "required": false, + "_key": "postal_code" + }, + { + "type": "string", + "x-nullable": true, + "example": "Subscription paid.", + "description": "A note with the reason for account status update.", + "api_fieldname": "reason", + "readOnly": true, + "required": false, + "_key": "reason" + }, + { + "type": "string", + "x-nullable": true, + "example": "ARM-INT-0001", + "description": "A reference note for updating the status of the account.", + "api_fieldname": "reference_note", + "readOnly": true, + "required": false, + "_key": "reference_note" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "sales@arm.com", + "x-nullable": true, + "description": "Email address of the sales contact.", + "api_fieldname": "sales_contact", + "readOnly": false, + "required": false, + "_key": "sales_contact" + }, + { + "type": "string", + "maxLength": 100, + "x-nullable": true, + "example": " ", + "description": "The state part of the postal address.", + "api_fieldname": "state", + "readOnly": false, + "required": false, + "_key": "state" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the account.", + "enum": [ + "ENROLLING", + "ACTIVE", + "RESTRICTED", + "SUSPENDED" + ], + "api_fieldname": "status", + "readOnly": true, + "required": false, + "enum_reference": "account_status_enum", + "_key": "status" + }, + { + "type": "string", + "x-nullable": true, + "example": "01619571e7160242ac12000600000000", + "description": "Account template ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "template_id", + "readOnly": true, + "required": false, + "_key": "template_id" + }, + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "api_fieldname": "tier", + "readOnly": true, + "required": false, + "_key": "tier" + }, + { + "type": "array", + "description": "Tier history for this account.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "1", + "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", + "_key": "tier" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updatedAt" + } + ] + }, + "api_fieldname": "tier_history", + "readOnly": true, + "required": false, + "_key": "tier_history" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Time when upgraded to commercial account in UTC format RFC3339.", + "api_fieldname": "upgraded_at", + "readOnly": true, + "required": false, + "_key": "upgraded_at" + } + ], + "field_renames": [], + "tags": [ + "Account - profile", + "Tenant accounts - accounts", + "Tenant accounts - API keys", + "Tenant accounts - users", + "Tenant accounts - user invitations", + "Tenant security and identity - certificates", + "Tenant user interface configuration - colors", + "Tenant user interface configuration - images" + ], + "group_id": "Accounts", + "_key": "account" + }, + { + "swagger_models": [ + "ActiveSession" + ], + "primary_key_field": null, + "methods": [], + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The UUID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "readOnly": true, + "required": false, + "_key": "ip_address" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "The login time of the user.", + "api_fieldname": "login_time", + "readOnly": true, + "required": false, + "_key": "login_time" + }, + { + "type": "string", + "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", + "description": "The reference token.", + "api_fieldname": "reference_token", + "readOnly": true, + "required": false, + "_key": "reference_token" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "readOnly": true, + "required": false, + "_key": "user_agent" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "active_session" + }, + { + "swagger_models": [ + "ApiKeyInfoReq", + "ApiKeyInfoResp", + "ApiKeyInfoRespList", + "ApiKeyUpdateReq", + "GroupSummaryList" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Create a new API key.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d '{\"name\": \"MyKey1\"}' \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\n```", + "field_renames": [], + "fields": [ + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + } + ], + "method": "post", + "mode": "create", + "responses": [ + { + "description": "New entity created.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_api_key" + } + }, + "_key": "201" + }, + { + "description": "Error in input data, for example, missing API key name.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/api-keys", + "summary": "Create a new API key.", + "return_type": "api_key", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "id", + "created_at", + "updated_at", + "key", + "creation_time", + "last_login_time", + "account_id" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "createApiKey", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete the API key.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "apikey_id", + "in": "path", + "description": "The ID of the API key to delete.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "apikey_id", + "external_param": false, + "parameter_fieldname": "apikey_id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden. Only the owner of the API key or an administrator can delete an API key.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An API key with the specified ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/api-keys/{apikey_id}", + "summary": "Delete API key.", + "return_type": "api_key", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "deleteApiKey", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Retrieve an array of API keys, optionally filtered by the owner.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "api_key_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/api-keys", + "summary": "Get all API keys.", + "return_type": "paginated_response(api_key)", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": { + "key": [ + "eq" + ], + "owner": [ + "eq" + ] + }, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "total_count", + "has_more", + "data", + "key__eq", + "owner__eq" + ], + "foreign_key_priority": "self", + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getAllApiKeys", + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Retrieve details of current API key.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [], + "method": "get", + "mode": "me", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_api_key" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/api-keys/me", + "summary": "Get current API key.", + "return_type": "api_key", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated.", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "id", + "created_at", + "updated_at", + "key", + "name", + "groups", + "owner", + "status", + "creation_time", + "last_login_time", + "account_id" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getMyApiKey", + "notes": "This is provided by the SDK to avoid listing to retrieve the user's own API Key.", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "me" + }, + { + "description": "Retrieve an array of policy groups associated with an API key.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "apikey_id", + "in": "path", + "description": "The ID of the API key.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "apikey_id", + "external_param": false, + "parameter_fieldname": "apikey_id", + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "api_key_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "policy_groups", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", + "enum": [ + "group" + ], + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "_key": "user_count" + } + ], + "description": "This object contains basic information about groups.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_policy_group" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "subtenant_user_order_enum", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_policy_group" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An API key with the given ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/api-keys/{apikey_id}/groups", + "summary": "Get policy groups of an API key.", + "return_type": "paginated_response(policy_group)", + "return_info": { + "self": false, + "custom": false, + "type": "policy_group" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "total_count", + "has_more", + "data" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getGroupsOfApikey", + "foreign_key": { + "entity": "policy_group" + }, + "pagination": true, + "request_content_type": "application/json", + "request_body": "json", + "_key": "policy_groups" + }, + { + "description": "Retrieve details of an API key.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_api_key" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An API key with the specified ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/api-keys/{apikey_id}", + "summary": "Get API key.", + "return_type": "api_key", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "key", + "name", + "groups", + "owner", + "status", + "creation_time", + "last_login_time", + "account_id" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getApiKey", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Update API key details.\n\n**Example:**\n`curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestApiKey25\"}'\n```", + "field_renames": [], + "fields": [ + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_api_key" + } + }, + "_key": "200" + }, + { + "description": "Error in input data, for example, invalid API key name.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" - } + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden. Only the owner of the API key or an administrator can update an API key.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An API key with the specified ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/api-keys/{apikey_id}", + "summary": "Update API key details.", + "return_type": "api_key", + "return_info": { + "self": true, + "custom": false, + "type": "api_key" + }, + "x_filter": {}, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "key", + "creation_time", + "last_login_time", + "account_id" + ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "updateApiKey", + "additional_operations": [ + { + "operation_id": "updateMyApiKey", + "notes": "After retrieving the resource using the `me` method, it can modified using using this SDK method." + } + ], + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "readOnly": true, + "required": false, + "_key": "creation_time" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "readOnly": false, + "required": false, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "readOnly": true, + "required": false, + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "readOnly": true, + "required": false, + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "readOnly": false, + "required": true, + "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "readOnly": false, + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "readOnly": false, + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Account - API keys" + ], + "group_id": "Accounts", + "_key": "api_key" + }, + { + "swagger_models": [ + "CampaignDeviceMetadata" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Get update campaign metadata for a specific device.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a89900000655cd94fa8/campaign-device-metadata/016e83ddc645000000000001001000f6 \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [ + { + "api_fieldname": "campaign", + "_key": "campaign_id" + } + ], + "fields": [ + { + "type": "string", + "description": "The device's campaign ID.", + "example": "015bf72fccda00000000000100100280", + "api_fieldname": "campaign", + "entity_fieldname": "campaign_id", + "parameter_fieldname": "campaign_id", + "in": "path", + "required": true, + "_key": "campaign_id" + }, + { + "type": "string", + "description": "The metadata record ID.", + "pattern": "[A-Fa-f0-9]{32}", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "campaign_device_metadata_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Request successful.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The device's campaign ID.", + "example": "015bf72fccda00000000000100100280", + "api_fieldname": "campaign", + "entity_fieldname": "campaign_id", + "_key": "campaign" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { - "type": "string", - "description": "Entity name: always `list`.", + "description": "The state of the update campaign on the device.", "enum": [ - "list" + "pending", + "updated_connector_channel", + "failed_connector_channel_update", + "deployed", + "manifestremoved", + "deregistered" ], + "type": "string", + "api_fieldname": "deployment_state", + "entity_fieldname": "deployment_state", + "_key": "deployment_state" + }, + { + "type": "string", + "maxLength": 2000, + "description": "Description.", + "example": "a description", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "description": "The device ID.", + "example": "015c2fec9bba0000000000010010036f", + "api_fieldname": "device_id", + "entity_fieldname": "device_id", + "_key": "device_id" + }, + { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "The metadata record ID.", + "pattern": "[A-Fa-f0-9]{32}", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "description": "How the firmware is delivered (connector or direct).", + "example": "connector", + "api_fieldname": "mechanism", + "entity_fieldname": "mechanism", + "_key": "mechanism" + }, + { + "type": "string", + "description": "The Device Management Connect URL.", + "api_fieldname": "mechanism_url", + "entity_fieldname": "mechanism_url", + "_key": "mechanism_url" + }, + { + "type": "string", + "maxLength": 128, + "description": "The record name.", + "default": "default_object_name", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "The entity name: always 'update-campaign-device-metadata'.", + "example": "update-campaign-device-metadata", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } ], - "pagination": true, "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" + "group": "Device_Update", + "entity": "campaign_device_metadata" } }, "_key": "200" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", + "_key": "401" + }, + { + "description": "Not Found.", + "_key": "404" + } + ], + "path": "/v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id}", + "summary": "Get a campaign device metadata", + "return_type": "campaign_device_metadata", + "return_info": { + "self": true, + "custom": false, + "type": "campaign_device_metadata" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "deployment_state", + "description", + "device_id", + "mechanism", + "mechanism_url", + "name" + ], + "group_id": "Device_Update", + "parameter_map": { + "campaign_device_metadata_id": "id" + }, + "operation_id": "Update_Campaign_Metadata_retrieve", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "description": "The device's campaign ID.", + "example": "015bf72fccda00000000000100100280", + "api_fieldname": "campaign", + "readOnly": false, + "required": true, + "_key": "campaign_id" + }, + { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "description": "The state of the update campaign on the device.", + "enum": [ + "pending", + "updated_connector_channel", + "failed_connector_channel_update", + "deployed", + "manifestremoved", + "deregistered" + ], + "type": "string", + "api_fieldname": "deployment_state", + "readOnly": true, + "required": false, + "enum_reference": "campaign_device_metadata_deployment_state_enum", + "_key": "deployment_state" + }, + { + "type": "string", + "maxLength": 2000, + "description": "Description.", + "example": "a description", + "api_fieldname": "description", + "readOnly": true, + "required": false, + "_key": "description" + }, + { + "type": "string", + "description": "The device ID.", + "example": "015c2fec9bba0000000000010010036f", + "api_fieldname": "device_id", + "readOnly": true, + "required": false, + "_key": "device_id" + }, + { + "type": "string", + "description": "The metadata record ID.", + "pattern": "[A-Fa-f0-9]{32}", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "description": "How the firmware is delivered (connector or direct).", + "example": "connector", + "api_fieldname": "mechanism", + "readOnly": true, + "required": false, + "_key": "mechanism" + }, + { + "type": "string", + "description": "The Device Management Connect URL.", + "api_fieldname": "mechanism_url", + "readOnly": true, + "required": false, + "_key": "mechanism_url" + }, + { + "type": "string", + "maxLength": 128, + "description": "The record name.", + "default": "default_object_name", + "api_fieldname": "name", + "readOnly": true, + "required": false, + "_key": "name" + }, + { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [ + { + "api_fieldname": "campaign", + "_key": "campaign_id" + } + ], + "tags": [ + "Device update - campaigns" + ], + "group_id": "Device_Update", + "_key": "campaign_device_metadata" + }, + { + "swagger_models": [ + "EventTypeList", + "EventTypeSummary", + "EventTypeSummaryList" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Get a list of events grouped by summary.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/skipped/event_types \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [], + "fields": [ + { + "description": "The campaign ID.", + "in": "path", + "name": "campaign_id", + "required": true, + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "entity_fieldname": "campaign_id", + "api_fieldname": "campaign_id", + "external_param": false, + "parameter_fieldname": "campaign_id", + "_key": "campaign_id" + }, + { + "description": "The summary status. For example, fail.", + "in": "path", + "name": "summary_status_id", + "required": true, + "type": "string", + "enum": [ + "fail", + "success", + "info", + "skipped" + ], + "entity_fieldname": "id", + "api_fieldname": "summary_status_id", + "external_param": false, + "parameter_fieldname": "summary_status_id", + "enum_reference": "campaign_statistics_id_enum", + "_key": "id" + } + ], + "method": "get", + "mode": "events", + "responses": [ + { + "description": "OK.", "schema": { "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "type": "string", + "description": "The entity ID to fetch after the given one.", + "example": "null", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { "type": "array", - "description": "Request fields which failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "example": "016e652be671000000000001001001e5", + "description": "ID of the associated campaign.", + "_key": "campaign_id" + }, + { + "type": "integer", + "example": 10, + "_key": "count" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "_key": "created_at" + }, + { + "type": "string", + "example": "Update error, nonspecific network error", + "_key": "description" + }, + { + "type": "string", + "example": "UPD4_FAIL_101", + "_key": "event_type" + }, + { + "type": "string", + "example": "upd_fail_101", + "_key": "id" + }, + { + "type": "string", + "description": "Entity name: always 'event-type'.", + "example": "event-type", + "_key": "object" + }, + { + "type": "string", + "example": "FAIL", + "_key": "summary_status" + }, + { + "type": "string", + "example": "fail", + "_key": "summary_status_id" } - ] + ], + "foreign_key": { + "group": "Device_Update", + "entity": "campaign_statistics_events" + } }, - "_key": "fields" + "enum": [ + "fail", + "skipped", + "info", + "success" + ], + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "description": "A flag indicating whether there are more results.", + "example": "false", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "description": "The number of results to return, (range: 2-1000), or equals to total_count.", + "example": "50", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "The entity name: always 'list'.", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "enum": [ + "ASC", + "DESC" + ], + "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "description": "The total number or records, if requested. It may be returned also for small lists.", + "example": "1", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Device_Update", + "entity": "campaign_statistics_events" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Not Authenticated.", "schema": { "type": "object", "required": [ @@ -3372,10 +19740,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Account not found.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -3448,13 +19816,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/dark", - "summary": "Get dark theme branding colors.", - "return_type": "paginated_response(subtenant_dark_theme_color)", + "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types", + "summary": "Get a list of events grouped by summary", + "return_type": "paginated_response(campaign_statistics_events)", "return_info": { "self": false, "custom": false, - "type": "subtenant_dark_theme_color" + "type": "campaign_statistics_events" }, "x_filter": {}, "x_deprecation": null, @@ -3463,150 +19831,117 @@ "etag", "type", "filter", - "sub_accounts", + "order", "limit", "after", - "order", - "total_count", "has_more", + "total_count", "data" ], - "group_id": "Accounts", + "group_id": "Device_Update", "parameter_map": { - "account_id": "id" + "summary_status_id": "id" }, - "operation_id": "getAccountDarkColors", - "notes": "This lists the dark theme banding colors of the subtenant account.", + "operation_id": "Update_Campaign_event_types_list", + "pagination": true, "foreign_key": { - "entity": "subtenant_dark_theme_color" + "group": "Device_Update", + "entity": "campaign_statistics_events" }, - "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "dark_theme_branding_colors" + "_key": "events" }, { - "description": "Retrieve the metadata of all dark theme branding images.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark \\\n-H 'Authorization: Bearer '\n```", + "description": "Get a list of statistics for a campaign, including the number of devices reporting specific event codes.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56780120000789012/statistics \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { - "name": "account_id", + "description": "The campaign ID.", "in": "path", - "description": "Account ID.", + "name": "campaign_id", "required": true, "type": "string", - "entity_fieldname": "id", - "api_fieldname": "account_id", + "pattern": "[A-Fa-f0-9]{32}", + "entity_fieldname": "campaign_id", + "api_fieldname": "campaign_id", "external_param": false, - "parameter_fieldname": "account_id", - "_key": "id" + "parameter_fieldname": "campaign_id", + "_key": "campaign_id" } ], "method": "get", - "mode": "dark_theme_branding_images", + "mode": "list", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "example": "null", "api_fieldname": "after", "entity_fieldname": "after", "_key": "after" }, { "type": "array", - "description": "A list of entities.", "items": { "type": "object", "properties": [ { "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "_key": "object" + "example": "016e652be6710000000000010010013d", + "description": "ID of the associated campaign.", + "_key": "campaign_id" + }, + { + "type": "integer", + "example": 10, + "_key": "count" + }, + { + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "_key": "created_at" }, { + "type": "string", "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "fail", + "success", + "info", + "skipped" ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "_key": "reference" + "example": "fail", + "description": "ID of the event type description.", + "_key": "id" }, { "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "_key": "static_uri" + "description": "Entity name: always 'summary_status'.", + "example": "summary_status", + "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" + "enum": [ + "FAIL", + "SUCCESS", + "INFO", + "SKIPPED" + ], + "example": "FAIL", + "description": "The event type description.", + "_key": "summary_status" } ], "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" + "group": "Device_Update", + "entity": "campaign_statistics" } }, "api_fieldname": "data", @@ -3615,47 +19950,44 @@ }, { "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", + "description": "A flag indicating whether there are more results.", + "example": "false", "api_fieldname": "has_more", "entity_fieldname": "has_more", "_key": "has_more" }, { "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", + "description": "The number of results to return, (range: 2-1000), or equals to total_count.", + "example": "50", "api_fieldname": "limit", "entity_fieldname": "limit", "_key": "limit" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], + "description": "The entity name: always 'list'.", + "example": "list", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", "enum": [ "ASC", "DESC" ], + "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC.", + "example": "ASC", "api_fieldname": "order", "entity_fieldname": "order", "_key": "order" }, { "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", + "description": "The total number or records, if requested. It may be returned also for small lists.", + "example": "1", "api_fieldname": "total_count", "entity_fieldname": "total_count", "_key": "total_count" @@ -3663,14 +19995,14 @@ ], "pagination": true, "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" + "group": "Device_Update", + "entity": "campaign_statistics" } }, "_key": "200" }, { - "description": "Authentication failure.", + "description": "Not Authenticated.", "schema": { "type": "object", "required": [ @@ -3743,80 +20075,7 @@ "_key": "401" }, { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "403" - }, - { - "description": "Account not found.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -3889,13 +20148,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-images/dark", - "summary": "Get metadata of all dark theme images.", - "return_type": "paginated_response(subtenant_dark_theme_image)", + "path": "/v3/update-campaigns/{campaign_id}/statistics", + "summary": "Get statistics for a campaign", + "return_type": "paginated_response(campaign_statistics)", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_dark_theme_image" + "type": "campaign_statistics" }, "x_filter": {}, "x_deprecation": null, @@ -3904,265 +20163,139 @@ "etag", "type", "filter", - "sub_accounts", + "order", "limit", "after", - "order", - "total_count", "has_more", + "total_count", "data" ], - "group_id": "Accounts", + "foreign_key_priority": "self", + "group_id": "Device_Update", "parameter_map": { - "account_id": "id" + "summary_status_id": "id" }, - "operation_id": "getAllAccountDarkImageData", - "notes": "This lists the dark theme banding images of the subtenant account.", + "operation_id": "Update_Campaign_statistics_list", + "pagination": true, "foreign_key": { - "entity": "subtenant_dark_theme_image" + "group": "Device_Update", + "entity": "campaign_statistics" }, - "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "dark_theme_branding_images" + "_key": "list" }, { - "description": "Retrieve light theme branding colors for an account.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light \\\n-H 'Authorization: Bearer '\n```", + "description": "Get the count of successfully updated, skipped, and failed devices.\n
\n**Usage example:**\n```\ncurl https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/fail \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { - "name": "account_id", + "type": "string", + "example": "016e652be6710000000000010010013d", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "entity_fieldname": "campaign_id", + "parameter_fieldname": "campaign_id", "in": "path", - "description": "Account ID.", "required": true, + "_key": "campaign_id" + }, + { "type": "string", + "enum": [ + "fail", + "success", + "info", + "skipped" + ], + "example": "fail", + "description": "ID of the event type description.", + "api_fieldname": "id", "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", + "parameter_fieldname": "summary_status_id", + "in": "path", + "required": true, + "enum_reference": "campaign_statistics_id_enum", "_key": "id" } ], "method": "get", - "mode": "light_theme_branding_colors", + "mode": "read", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "example": "016e652be6710000000000010010013d", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "entity_fieldname": "campaign_id", + "_key": "campaign_id" }, { "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" - } - }, - "_key": "200" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" + "example": 10, + "api_fieldname": "count", + "entity_fieldname": "count", + "_key": "count" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "description": "Entity name, always `error`.", "enum": [ - "error" + "fail", + "success", + "info", + "skipped" ], - "_key": "object" + "example": "fail", + "description": "ID of the event type description.", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Entity name: always 'summary_status'.", + "example": "summary_status", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "enum": [ + "FAIL", + "SUCCESS", + "INFO", + "SKIPPED" + ], + "example": "FAIL", + "description": "The event type description.", + "api_fieldname": "summary_status", + "entity_fieldname": "summary_status", + "_key": "summary_status" } - ] + ], + "foreign_key": { + "group": "Device_Update", + "entity": "campaign_statistics" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Not Authenticated.", "schema": { "type": "object", "required": [ @@ -4232,10 +20365,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Account not found.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -4308,13 +20441,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/light", - "summary": "Get light theme branding colors.", - "return_type": "paginated_response(subtenant_light_theme_color)", + "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}", + "summary": "Get a status summary", + "return_type": "campaign_statistics", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_light_theme_color" + "type": "campaign_statistics" }, "x_filter": {}, "x_deprecation": null, @@ -4323,287 +20456,214 @@ "etag", "type", "filter", - "sub_accounts", - "limit", - "after", - "order", - "total_count", - "has_more", - "data" + "summary_status", + "count", + "created_at" ], - "group_id": "Accounts", + "group_id": "Device_Update", "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAccountLightColors", - "notes": "This lists the light theme banding colors of the subtenant account.", - "foreign_key": { - "entity": "subtenant_light_theme_color" + "summary_status_id": "id" }, - "pagination": true, + "operation_id": "Update_Campaign_statistics_retrieve", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "light_theme_branding_colors" + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "example": "016e652be6710000000000010010013d", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "readOnly": false, + "required": true, + "_key": "campaign_id" + }, + { + "type": "integer", + "example": 10, + "api_fieldname": "count", + "readOnly": true, + "required": false, + "_key": "count" + }, + { + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "enum": [ + "fail", + "success", + "info", + "skipped" + ], + "example": "fail", + "description": "ID of the event type description.", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "enum_reference": "campaign_statistics_id_enum", + "_key": "id" }, { - "description": "Retrieve the metadata of all light theme branding images.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "enum": [ + "FAIL", + "SUCCESS", + "INFO", + "SKIPPED" + ], + "example": "FAIL", + "description": "The event type description.", + "api_fieldname": "summary_status", + "readOnly": true, + "required": false, + "enum_reference": "campaign_statistics_summary_status_enum", + "_key": "summary_status" + } + ], + "field_renames": [], + "tags": [ + "Device update - campaigns" + ], + "group_id": "Device_Update", + "_key": "campaign_statistics" + }, + { + "swagger_models": [ + "EventType" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Get the count for a specific event type, for example, succeeded, failed or skipped.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/success/event_types/sys_112 \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { - "name": "account_id", + "type": "string", + "example": "016e652be671000000000001001001e5", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "entity_fieldname": "campaign_id", + "parameter_fieldname": "campaign_id", "in": "path", - "description": "Account ID.", "required": true, + "_key": "campaign_id" + }, + { "type": "string", + "example": "upd_fail_101", + "api_fieldname": "id", "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", + "parameter_fieldname": "event_type_id", + "in": "path", + "required": true, "_key": "id" + }, + { + "type": "string", + "example": "fail", + "api_fieldname": "summary_status_id", + "entity_fieldname": "summary_status_id", + "parameter_fieldname": "summary_status_id", + "in": "path", + "required": true, + "_key": "summary_status_id" } ], "method": "get", - "mode": "light_theme_branding_images", + "mode": "read", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "example": "016e652be671000000000001001001e5", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "entity_fieldname": "campaign_id", + "_key": "campaign_id" }, { "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "example": 10, + "api_fieldname": "count", + "entity_fieldname": "count", + "_key": "count" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" - } - }, - "_key": "200" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "example": "Update error, nonspecific network error", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" + "type": "string", + "example": "UPD4_FAIL_101", + "api_fieldname": "event_type", + "entity_fieldname": "event_type", + "_key": "event_type" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "example": "upd_fail_101", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: always 'event-type'.", + "example": "event-type", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "example": "FAIL", + "api_fieldname": "summary_status", + "entity_fieldname": "summary_status", + "_key": "summary_status" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "example": "fail", + "api_fieldname": "summary_status_id", + "entity_fieldname": "summary_status_id", + "_key": "summary_status_id" } - ] + ], + "foreign_key": { + "group": "Device_Update", + "entity": "campaign_statistics_events" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Not Authenticated.", "schema": { "type": "object", "required": [ @@ -4673,10 +20733,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Account not found.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -4749,13 +20809,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-images/light", - "summary": "Get metadata of all light theme images.", - "return_type": "paginated_response(subtenant_light_theme_image)", + "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/{event_type_id}", + "summary": "Get an event type for a campaign", + "return_type": "campaign_statistics_events", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_light_theme_image" + "type": "campaign_statistics_events" }, "x_filter": {}, "x_deprecation": null, @@ -4764,88 +20824,155 @@ "etag", "type", "filter", - "sub_accounts", - "limit", - "after", - "order", - "total_count", - "has_more", - "data" + "created_at", + "event_type", + "description", + "summary_status", + "count" ], - "group_id": "Accounts", + "group_id": "Device_Update", "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAllAccountLightImageData", - "notes": "This lists the light theme banding images of the subtenant account.", - "foreign_key": { - "entity": "subtenant_light_theme_image" + "event_type_id": "id" }, - "pagination": true, + "operation_id": "Update_Campaign_event_types_retrieve", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "light_theme_branding_images" + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "example": "016e652be671000000000001001001e5", + "description": "ID of the associated campaign.", + "api_fieldname": "campaign_id", + "readOnly": false, + "required": true, + "_key": "campaign_id" + }, + { + "type": "integer", + "example": 10, + "api_fieldname": "count", + "readOnly": true, + "required": false, + "_key": "count" + }, + { + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "example": "Update error, nonspecific network error", + "api_fieldname": "description", + "readOnly": true, + "required": false, + "_key": "description" + }, + { + "type": "string", + "example": "UPD4_FAIL_101", + "api_fieldname": "event_type", + "readOnly": true, + "required": false, + "_key": "event_type" + }, + { + "type": "string", + "example": "upd_fail_101", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "example": "FAIL", + "api_fieldname": "summary_status", + "readOnly": true, + "required": false, + "_key": "summary_status" }, { - "description": "Returns an array of account objects, optionally filtered by status and tier level.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "example": "fail", + "api_fieldname": "summary_status_id", + "readOnly": false, + "required": true, + "_key": "summary_status_id" + } + ], + "field_renames": [], + "tags": [ + "Device update - campaigns" + ], + "group_id": "Device_Update", + "_key": "campaign_statistics_events" + }, + { + "swagger_models": [ + "CertificateEnrollment", + "CertificateEnrollmentListResponse" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Get certificate enrollments list, optionally filtered.\n\n**Examples:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments \\\n-H 'Authorization: Bearer '\n```\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments?device_id__eq=01612df56f3b0a580a010fc700000000 \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01625daa23230a580a0100bd00000000", "api_fieldname": "after", "entity_fieldname": "after", "name": "after", "in": "query", + "pattern": "[0-9a-fA-F]{32}", "required": false, "external_param": true, "parameter_fieldname": "after", "_key": "after" }, - { - "name": "format", - "in": "query", - "description": "Format information for the query response. Supported: format=breakdown.", - "required": false, - "type": "string", - "entity_fieldname": "format", - "api_fieldname": "format", - "external_param": true, - "parameter_fieldname": "format", - "_key": "format" - }, { "name": "include", "in": "query", - "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts.", + "description": "a comma-separated list of data fields to return.", "required": false, "type": "string", + "enum": [ + "total_count" + ], "entity_fieldname": "include", "api_fieldname": "include", "external_param": true, "parameter_fieldname": "include", + "enum_reference": "certificate_enrollment_include_enum", "_key": "include" }, { "type": "integer", "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 1000.", + "description": "The number of results to return (2-1000).", "api_fieldname": "limit", "entity_fieldname": "limit", "name": "limit", "in": "query", "required": false, - "default": 1000, "external_param": true, "parameter_fieldname": "limit", "_key": "limit" }, { "type": "string", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "description": "The order of results.", "enum": [ "ASC", "DESC" @@ -4855,1117 +20982,733 @@ "name": "order", "in": "query", "required": false, - "default": "ASC", "external_param": true, "parameter_fieldname": "order", - "enum_reference": "account_order_enum", + "enum_reference": "certificate_enrollment_order_enum", "_key": "order" - }, - { - "name": "properties", - "in": "query", - "description": "Property name returned from account-specific properties.", - "required": false, - "type": "string", - "entity_fieldname": "properties", - "api_fieldname": "properties", - "external_param": true, - "parameter_fieldname": "properties", - "_key": "properties" } ], "method": "get", "mode": "list", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "example": "01625daa23230a580a0100bd00000000", "api_fieldname": "after", "entity_fieldname": "after", "_key": "after" }, { "type": "array", - "description": "A list of entities.", "items": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "_key": "end_market" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "_key": "notification_emails" - }, - { - "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "_key": "parent_account" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "_key": "parent_id" - }, - { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "_key": "phone_number" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } - }, - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "_key": "postal_code" - }, - { - "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "_key": "reason" - }, - { - "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "_key": "reference_note" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "_key": "sales_contact" + "maxLength": 50, + "description": "The certificate name.", + "example": "customer.dlms", + "api_fieldname": "certificate-name", + "entity_fieldname": "certificate_name", + "in": "path", + "name": "certificate-name", + "required": true, + "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", + "external_param": true, + "parameter_fieldname": "certificate-name", + "_key": "certificate_name" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "_key": "state" + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "_key": "status" + "description": "The device ID.", + "example": "01625daa23230a580a0100bd00000000", + "api_fieldname": "device_id", + "entity_fieldname": "device_id", + "_key": "device_id" }, { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": { - "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], - "properties": [ - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "_key": "end_market" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "_key": "notification_emails" - }, - { - "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "_key": "parent_account" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "_key": "parent_id" - }, - { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "_key": "phone_number" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } - }, - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "_key": "postal_code" - }, - { - "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "_key": "reason" - }, - { - "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "_key": "reference_note" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "_key": "sales_contact" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "_key": "state" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "_key": "status" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": [], - "_key": "sub_accounts" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" - }, - { - "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" - } - ], - "description": "Represents an account in requests and responses." - }, - "_key": "sub_accounts" + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The result of certificate enrollment request.", + "example": "success", + "api_fieldname": "enroll_result", + "entity_fieldname": "enroll_result", + "_key": "enroll_result" + }, + { + "type": "string", + "description": "Additional information in case of failure.", + "example": "The device is currently processing too many certificate renewals.", + "api_fieldname": "enroll_result_detail", + "entity_fieldname": "enroll_result_detail", + "_key": "enroll_result_detail" + }, + { + "type": "string", + "description": "The status of certificate enrollment request.", + "enum": [ + "new", + "completed" + ], + "api_fieldname": "enroll_status", + "entity_fieldname": "enroll_status", + "_key": "enroll_status" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "device-id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "enum": [ + "certificate-enrollment" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "description": "Update UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "required": [ + "created_at", + "etag", + "id", + "device_id", + "certificate_name" + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_enrollment" + } + }, + "description": "List of certificate enrollments.", + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "description": "The number of results to return.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "enum": [ + "list" + ], + "description": "Describes the type of objects in the list.", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "description": "The total number of records.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "certificate_enrollment" + } + }, + "_key": "200" + }, + { + "description": "Validation error.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/certificate-enrollments", + "summary": "Get certificate enrollments list.", + "return_type": "paginated_response(certificate_enrollment)", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_enrollment" + }, + "x_filter": { + "device_id": [ + "eq" + ], + "certificate_name": [ + "eq" + ], + "enroll_status": [ + "neq", + "eq" + ], + "enroll_result": [ + "neq", + "eq" + ], + "created_at": [ + "lte", + "gte" + ], + "updated_at": [ + "lte", + "gte" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "total_count", + "has_more", + "data", + "device_id__eq", + "certificate_name__eq", + "enroll_status__neq", + "enroll_status__eq", + "enroll_result__neq", + "enroll_result__eq", + "created_at__lte", + "created_at__gte", + "updated_at__lte", + "updated_at__gte" + ], + "foreign_key_priority": "self", + "group_id": "Security", + "parameter_map": { + "certificate-enrollment-id": "id" + }, + "operation_id": "getCertificateEnrollments", + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "certificate_enrollment" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Get a certificate enrollment by ID.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments/01612df56f3b0a580a010fc700000000 \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "certificate-enrollment-id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "maxLength": 50, + "description": "The certificate name.", + "example": "customer.dlms", + "api_fieldname": "certificate_name", + "entity_fieldname": "certificate_name", + "in": "path", + "name": "certificate-name", + "required": true, + "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", + "external_param": true, + "parameter_fieldname": "certificate-name", + "_key": "certificate_name" + }, + { + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "description": "The device ID.", + "example": "01625daa23230a580a0100bd00000000", + "api_fieldname": "device_id", + "entity_fieldname": "device_id", + "_key": "device_id" + }, + { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The result of certificate enrollment request.", + "example": "success", + "api_fieldname": "enroll_result", + "entity_fieldname": "enroll_result", + "_key": "enroll_result" + }, + { + "type": "string", + "description": "Additional information in case of failure.", + "example": "The device is currently processing too many certificate renewals.", + "api_fieldname": "enroll_result_detail", + "entity_fieldname": "enroll_result_detail", + "_key": "enroll_result_detail" + }, + { + "type": "string", + "description": "The status of certificate enrollment request.", + "enum": [ + "new", + "completed" + ], + "api_fieldname": "enroll_status", + "entity_fieldname": "enroll_status", + "_key": "enroll_status" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "device-id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "enum": [ + "certificate-enrollment" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "description": "Update UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "required": [ + "created_at", + "etag", + "id", + "device_id", + "certificate_name" + ], + "foreign_key": { + "group": "Devices", + "entity": "device" + } + }, + "_key": "200" + }, + { + "description": "Validation error.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents an account in requests and responses." + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000), or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "Error message.", + "_key": "message" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "Request ID from JWT.", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type.", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "account" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -5975,29 +21718,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -6005,40 +21743,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -6048,29 +21781,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -6078,1228 +21806,1218 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/accounts", - "summary": "Get all accounts.", - "return_type": "paginated_response(account)", + "path": "/v3/certificate-enrollments/{certificate-enrollment-id}", + "summary": "Get a certificate enrollment by ID.", + "return_type": "certificate_enrollment", "return_info": { "self": true, "custom": false, - "type": "account" - }, - "x_filter": { - "status": [ - "eq", - "in", - "nin" - ], - "tier": [ - "eq" - ], - "parent": [ - "eq" - ], - "end_market": [ - "eq" - ], - "country": [ - "like" - ] + "type": "certificate_enrollment" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "sub_accounts", - "total_count", - "has_more", - "data", - "status__eq", - "status__in", - "status__nin", - "tier__eq", - "parent__eq", - "end_market__eq", - "country__like" + "created_at", + "device_id", + "certificate_name", + "enroll_status", + "enroll_result", + "enroll_result_detail", + "updated_at" ], - "foreign_key_priority": "self", - "group_id": "Accounts", + "group_id": "Security", "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAllAccounts", - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "account" + "certificate-enrollment-id": "id" }, + "operation_id": "getCertificateEnrollment", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "maxLength": 50, + "description": "The certificate name.", + "example": "customer.dlms", + "api_fieldname": "certificate_name", + "in": "path", + "name": "certificate-name", + "required": false, + "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", + "external_param": true, + "parameter_fieldname": "certificate-name", + "readOnly": true, + "_key": "certificate_name" + }, + { + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "description": "The device ID.", + "example": "01625daa23230a580a0100bd00000000", + "api_fieldname": "device_id", + "readOnly": true, + "required": false, + "_key": "device_id" + }, + { + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The result of certificate enrollment request.", + "example": "success", + "api_fieldname": "enroll_result", + "readOnly": true, + "required": false, + "enum_reference": "certificate_enrollment_enroll_result_enum", + "_key": "enroll_result" + }, + { + "type": "string", + "description": "Additional information in case of failure.", + "example": "The device is currently processing too many certificate renewals.", + "api_fieldname": "enroll_result_detail", + "readOnly": true, + "required": false, + "_key": "enroll_result_detail" + }, + { + "type": "string", + "description": "The status of certificate enrollment request.", + "enum": [ + "new", + "completed" + ], + "api_fieldname": "enroll_status", + "readOnly": true, + "required": false, + "enum_reference": "certificate_enrollment_enroll_status_enum", + "_key": "enroll_status" + }, + { + "type": "string", + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "parameter_fieldname": "device-id", + "in": "path", + "required": true, + "readOnly": false, + "_key": "id" }, { - "description": "Retrieve detailed information about the account.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/me?include=policies \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "format": "date-time", + "description": "Update UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Device security - device certificate renewals" + ], + "group_id": "Security", + "_key": "certificate_enrollment" + }, + { + "swagger_models": [ + "CertificateIssuerInfo", + "CertificateIssuerInfoListResponse", + "CertificateIssuerRequest", + "CertificateIssuerUpdateRequest", + "CertificateIssuerVerifyResponse" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Create a certificate issuer.\n
\nThe maximum number of issuers is limited to 20 per account.\n
\nYou can create multiple certificate issuers of the same type, provided they have different names. This allows verification of the certificate issuer configuration before activation.\n
\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n-d '{\n \"issuer_type\": \"GLOBAL_SIGN\",\n \"name\": \"GS Issuer\",\n \"description\": \"Sample GlobalSign certificate issuer\",\n \"issuer_attributes\": null,\n \"issuer_credentials\": {\n \"api_key\": \"e510e289e6cd8947\",\n \"api_secret\": \"a477a8393d17a55ecb2ba6a61f58feb84770b621\",\n \"client_certificate\": \"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END CERTIFICATE-----\",\n \"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\nProc-Type: 4,ENCRYPTED\\nDEK-Info: DES-EDE3-CBC,CCAC26A4133947CB\\n\\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\\n-----END RSA PRIVATE KEY-----\",\n \"passphrase\": \"helloworld\"\n }\n}'\n```", "field_renames": [], "fields": [ { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts.", - "required": false, "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" + "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", + "x-nullable": true, + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { - "name": "properties", - "in": "query", - "description": "Property name to return from account-specific properties.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "entity_fieldname": "issuer_attributes", + "parameter_fieldname": "issuer_attributes", + "in": "body", "required": false, - "type": "string", - "entity_fieldname": "properties", - "api_fieldname": "properties", + "_key": "issuer_attributes" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The credentials required to connect to the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.", + "example": [], + "name": "issuer_credentials", + "in": "body", + "schema_param": true, + "entity_fieldname": "issuer_credentials", + "api_fieldname": "issuer_credentials", "external_param": true, - "parameter_fieldname": "properties", - "_key": "properties" + "parameter_fieldname": "issuer_credentials", + "required": true, + "_key": "issuer_credentials" + }, + { + "type": "string", + "enum": [ + "GLOBAL_SIGN", + "CFSSL_AUTH" + ], + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "api_fieldname": "issuer_type", + "entity_fieldname": "issuer_type", + "parameter_fieldname": "issuer_type", + "in": "body", + "required": true, + "enum_reference": "certificate_issuer_type_enum", + "_key": "issuer_type" + }, + { + "type": "string", + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" } ], - "method": "get", - "mode": "me", + "method": "post", + "mode": "create", "responses": [ { - "description": "Successful operation.", + "description": "Created.", "schema": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "api_fieldname": "address_line1", - "entity_fieldname": "address_line1", - "_key": "address_line1" + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "api_fieldname": "address_line2", - "entity_fieldname": "address_line2", - "_key": "address_line2" + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_full_name", - "entity_fieldname": "admin_full_name", - "_key": "admin_full_name" + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "admin_id", - "entity_fieldname": "admin_id", - "_key": "admin_id" + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "entity_fieldname": "issuer_attributes", + "_key": "issuer_attributes" }, { "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "api_fieldname": "admin_key", - "entity_fieldname": "admin_key", - "_key": "admin_key" + "enum": [ + "GLOBAL_SIGN", + "CFSSL_AUTH" + ], + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "api_fieldname": "issuer_type", + "entity_fieldname": "issuer_type", + "_key": "issuer_type" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, { "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_password", - "entity_fieldname": "admin_password", - "_key": "admin_password" + "enum": [ + "certificate-issuer" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + } + ], + "required": [ + "issuer_type" + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" + } + }, + "_key": "201" + }, + { + "description": "Validation error: The data used to create the certificate issuer failed validation.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "maxItems": 10, - "description": "An array of aliases.", + "description": "A list of request fields that failed validation.", "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] }, - "api_fieldname": "aliases", - "entity_fieldname": "aliases", - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "api_fieldname": "city", - "entity_fieldname": "city", - "_key": "city" + "_key": "fields" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "api_fieldname": "company", - "entity_fieldname": "company", - "_key": "company" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "api_fieldname": "contact", - "entity_fieldname": "contact", - "_key": "contact" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "api_fieldname": "contract_number", - "entity_fieldname": "contract_number", - "_key": "contract_number" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "api_fieldname": "country", - "entity_fieldname": "country", - "_key": "country" - }, + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "You are not authorized to view the resource.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] }, - "api_fieldname": "custom_fields", - "entity_fieldname": "custom_fields", - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "api_fieldname": "customer_number", - "entity_fieldname": "customer_number", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "api_fieldname": "display_name", - "entity_fieldname": "display_name", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "api_fieldname": "email", - "entity_fieldname": "email", - "_key": "email" + "_key": "fields" }, { "type": "string", - "example": "IT", - "description": "Account end market.", - "api_fieldname": "end_market", - "entity_fieldname": "end_market", - "_key": "end_market" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "api_fieldname": "expiration", - "entity_fieldname": "expiration", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "api_fieldname": "expiration_warning_threshold", - "entity_fieldname": "expiration_warning_threshold", - "_key": "expiration_warning_threshold" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "api_fieldname": "idle_timeout", - "entity_fieldname": "idle_timeout", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "limits", - "entity_fieldname": "limits", - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "api_fieldname": "mfa_status", - "entity_fieldname": "mfa_status", - "_key": "mfa_status" + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", + "description": "A list of request fields that failed validation.", "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] }, - "api_fieldname": "notification_emails", - "entity_fieldname": "notification_emails", - "_key": "notification_emails" + "_key": "fields" }, { "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "api_fieldname": "parent_account", - "entity_fieldname": "parent_account", - "_key": "parent_account" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "parent_id", - "entity_fieldname": "parent_id", - "_key": "parent_id" + "description": "Entity name: `error`.", + "_key": "object" }, { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "api_fieldname": "password_policy", - "entity_fieldname": "password_policy", - "_key": "password_policy" + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "api_fieldname": "password_recovery_expiration", - "entity_fieldname": "password_recovery_expiration", - "_key": "password_recovery_expiration" - }, + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Conflict. A certificate issuer with this name already exists.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "api_fieldname": "phone_number", - "entity_fieldname": "phone_number", - "_key": "phone_number" + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", "properties": [ { "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } + ] }, - "api_fieldname": "policies", - "entity_fieldname": "policies", - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "api_fieldname": "postal_code", - "entity_fieldname": "postal_code", - "_key": "postal_code" + "_key": "fields" }, { "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "api_fieldname": "reason", - "entity_fieldname": "reason", - "_key": "reason" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "api_fieldname": "reference_note", - "entity_fieldname": "reference_note", - "_key": "reference_note" + "description": "Entity name: `error`.", + "_key": "object" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "api_fieldname": "sales_contact", - "entity_fieldname": "sales_contact", - "_key": "sales_contact" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "api_fieldname": "state", - "entity_fieldname": "state", - "_key": "state" - }, + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "409" + }, + { + "description": "The request failed due to customer configured external service.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "_key": "end_market" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "_key": "notification_emails" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "_key": "parent_account" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "424" + } + ], + "path": "/v3/certificate-issuers", + "summary": "Create certificate issuer.", + "return_type": "certificate_issuer", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "id" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-id": "id" + }, + "operation_id": "createCertificateIssuer", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete a certificate issuer by ID.\n
\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000 \\\n-H 'Authorization: Bearer ' \\\n```", + "field_renames": [], + "fields": [ + { + "name": "certificate-issuer-id", + "in": "path", + "description": "Certificate issuer ID.\nAn active certificate issuer cannot be deleted.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "certificate-issuer-id", + "external_param": false, + "parameter_fieldname": "certificate-issuer-id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Certificate issuer deleted.", + "_key": "204" + }, + { + "description": "Validation error: An active certificate issuer cannot be deleted.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "_key": "parent_id" + "description": "Field name.", + "_key": "field" }, { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "_key": "password_policy" - }, + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "_key": "password_recovery_expiration" + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "_key": "phone_number" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } - }, - "_key": "policies" + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "_key": "postal_code" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "_key": "reason" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "_key": "reference_note" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/certificate-issuers/{certificate-issuer-id}", + "summary": "Delete certificate issuer.", + "return_type": "certificate_issuer", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-id": "id" + }, + "operation_id": "deleteCertificateIssuer", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "**Note:** This endpoint does not use pagination, and therefore ignores list control parameters such as `limit` or `after`.", + "field_renames": [], + "fields": [ + { + "type": "string", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "type": "integer", + "description": "The number of results to return (2-1000). Values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "type": "array", + "items": { + "type": "object", + "properties": [ { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "_key": "sales_contact" + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "_key": "created_at" }, { "type": "string", "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "_key": "state" + "_key": "description" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "_key": "status" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": [], - "_key": "sub_accounts" + "description": "Entity instance signature.", + "example": "1", + "_key": "etag" }, { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", + "_key": "id" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "_key": "issuer_attributes" }, { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" + "enum": [ + "GLOBAL_SIGN", + "CFSSL_AUTH" + ], + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "_key": "issuer_type" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "_key": "name" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" + "enum": [ + "certificate-issuer" + ], + "_key": "object" } ], - "description": "Represents an account in requests and responses." + "required": [ + "issuer_type" + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" + } }, - "api_fieldname": "sub_accounts", - "entity_fieldname": "sub_accounts", - "_key": "sub_accounts" + "description": "List of certificate issuers.", + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "template_id", - "entity_fieldname": "template_id", - "_key": "template_id" + "type": "boolean", + "description": "More results are available.", + "example": false, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { - "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "api_fieldname": "tier", - "entity_fieldname": "tier", - "_key": "tier" + "type": "integer", + "description": "The number of results to return (2-1000). Values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "The type of this API object is `list`.", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "api_fieldname": "upgraded_at", - "entity_fieldname": "upgraded_at", - "_key": "upgraded_at" + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" + }, + { + "format": "integer", + "type": "integer", + "example": 1, + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], - "description": "Represents an account in requests and responses." + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" + } }, "_key": "200" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -7309,29 +23027,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -7339,28 +23052,22 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] @@ -7373,6 +23080,7 @@ "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -7382,29 +23090,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -7412,28 +23115,22 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] @@ -7441,13 +23138,13 @@ "_key": "403" } ], - "path": "/v3/accounts/me", - "summary": "Get account info.", - "return_type": "account", + "path": "/v3/certificate-issuers", + "summary": "Get certificate issuers list.", + "return_type": "paginated_response(certificate_issuer)", "return_info": { "self": true, "custom": false, - "type": "account" + "type": "certificate_issuer" }, "x_filter": {}, "x_deprecation": null, @@ -7456,1207 +23153,909 @@ "etag", "type", "filter", - "sub_accounts", - "id", - "created_at", - "updated_at", - "parent_id", - "display_name", - "company", - "country", - "address_line1", - "address_line2", - "city", - "state", - "postal_code", - "contact", - "email", - "phone_number", - "aliases", - "tier", - "status", - "upgraded_at", - "limits", - "policies", - "template_id", - "reason", - "end_market", - "idle_timeout", - "password_policy", - "reference_note", - "custom_fields", - "mfa_status", - "notification_emails", - "sales_contact", - "expiration_warning_threshold", - "contract_number", - "customer_number", - "parent_account", - "expiration", - "admin_id", - "admin_name", - "admin_email", - "admin_key", - "admin_password", - "admin_full_name", - "password_recovery_expiration" + "has_more", + "total_count", + "data" ], - "group_id": "Accounts", + "foreign_key_priority": "self", + "group_id": "Security", "parameter_map": { - "account_id": "id" + "certificate-issuer-id": "id" + }, + "operation_id": "getCertificateIssuers", + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" }, - "operation_id": "getMyAccountInfo", - "notes": "This is provided by the SDK to avoid listing to retrieve the user's own Account.", - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "me" + "_key": "list" }, { - "description": "Retrieve detailed information about an account.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "(No description provided)", "field_renames": [], "fields": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "account_id", + "parameter_fieldname": "certificate-issuer-id", "in": "path", "required": true, "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: limits, policies, sub_accounts.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "name": "properties", - "in": "query", - "description": "Property name to return from account-specific properties.", - "required": false, - "type": "string", - "entity_fieldname": "properties", - "api_fieldname": "properties", - "external_param": true, - "parameter_fieldname": "properties", - "_key": "properties" } ], "method": "get", "mode": "read", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "api_fieldname": "address_line1", - "entity_fieldname": "address_line1", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "api_fieldname": "address_line2", - "entity_fieldname": "address_line2", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_full_name", - "entity_fieldname": "admin_full_name", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "admin_id", - "entity_fieldname": "admin_id", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "api_fieldname": "admin_key", - "entity_fieldname": "admin_key", - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_password", - "entity_fieldname": "admin_password", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "api_fieldname": "aliases", - "entity_fieldname": "aliases", - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "api_fieldname": "city", - "entity_fieldname": "city", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "api_fieldname": "company", - "entity_fieldname": "company", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "api_fieldname": "contact", - "entity_fieldname": "contact", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "api_fieldname": "contract_number", - "entity_fieldname": "contract_number", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "api_fieldname": "country", - "entity_fieldname": "country", - "_key": "country" - }, { "type": "string", "format": "date-time", - "example": "2018-02-13T09:35:20Z", "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "custom_fields", - "entity_fieldname": "custom_fields", - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "api_fieldname": "customer_number", - "entity_fieldname": "customer_number", - "_key": "customer_number" - }, { "type": "string", "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "api_fieldname": "display_name", - "entity_fieldname": "display_name", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "api_fieldname": "email", - "entity_fieldname": "email", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "api_fieldname": "end_market", - "entity_fieldname": "end_market", - "_key": "end_market" + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, { "type": "string", + "description": "Entity instance signature.", "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "api_fieldname": "expiration", - "entity_fieldname": "expiration", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "api_fieldname": "expiration_warning_threshold", - "entity_fieldname": "expiration_warning_threshold", - "_key": "expiration_warning_threshold" + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "api_fieldname": "idle_timeout", - "entity_fieldname": "idle_timeout", - "_key": "idle_timeout" - }, { "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", "additionalProperties": { "type": "string" }, - "api_fieldname": "limits", - "entity_fieldname": "limits", - "_key": "limits" + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "entity_fieldname": "issuer_attributes", + "_key": "issuer_attributes" }, { "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", "enum": [ - "enforced", - "optional" + "GLOBAL_SIGN", + "CFSSL_AUTH" ], - "api_fieldname": "mfa_status", - "entity_fieldname": "mfa_status", - "_key": "mfa_status" + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "api_fieldname": "issuer_type", + "entity_fieldname": "issuer_type", + "_key": "issuer_type" }, { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "api_fieldname": "notification_emails", - "entity_fieldname": "notification_emails", - "_key": "notification_emails" + "type": "string", + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, { "type": "string", - "description": "Entity name: always `account`.", "enum": [ - "account" + "certificate-issuer" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "api_fieldname": "parent_account", - "entity_fieldname": "parent_account", - "_key": "parent_account" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "parent_id", - "entity_fieldname": "parent_id", - "_key": "parent_id" - }, - { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "api_fieldname": "password_policy", - "entity_fieldname": "password_policy", - "_key": "password_policy" - }, + } + ], + "required": [ + "issuer_type" + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" + } + }, + "_key": "200" + }, + { + "description": "Validation error: The data used to get the certificate issuer failed validation.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "api_fieldname": "password_recovery_expiration", - "entity_fieldname": "password_recovery_expiration", - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "api_fieldname": "phone_number", - "entity_fieldname": "phone_number", - "_key": "phone_number" + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", "properties": [ { "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } + ] }, - "api_fieldname": "policies", - "entity_fieldname": "policies", - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "api_fieldname": "postal_code", - "entity_fieldname": "postal_code", - "_key": "postal_code" - }, - { - "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "api_fieldname": "reason", - "entity_fieldname": "reason", - "_key": "reason" + "_key": "fields" }, { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "api_fieldname": "reference_note", - "entity_fieldname": "reference_note", - "_key": "reference_note" + "description": "Error message.", + "_key": "message" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "api_fieldname": "sales_contact", - "entity_fieldname": "sales_contact", - "_key": "sales_contact" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "api_fieldname": "state", - "entity_fieldname": "state", - "_key": "state" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" - }, + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": { - "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], - "properties": [ - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "_key": "end_market" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "_key": "expiration_warning_threshold" - }, + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "_key": "limits" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "_key": "notification_emails" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "_key": "parent_account" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "_key": "parent_id" - }, - { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "_key": "password_recovery_expiration" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "_key": "phone_number" + "description": "Field name.", + "_key": "field" }, { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } - }, - "_key": "policies" - }, + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/certificate-issuers/{certificate-issuer-id}", + "summary": "Get certificate issuer by ID.", + "return_type": "certificate_issuer", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "issuer_type", + "name", + "description", + "issuer_attributes" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-id": "id" + }, + "operation_id": "getCertificateIssuer", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Update a certificate issuer.\n
\n**Example:**\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000 \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n-d '{\n \"description\": \"Sample GlobalSign certificate issuer - updated.\",\n \"name\": \"GlobalSign Issuer\"\n}'\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", + "x-nullable": true, + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "type": "string", + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "certificate-issuer-id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "entity_fieldname": "issuer_attributes", + "parameter_fieldname": "issuer_attributes", + "in": "body", + "required": false, + "_key": "issuer_attributes" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The credentials required to connect to the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.", + "example": [], + "name": "issuer_credentials", + "in": "body", + "schema_param": true, + "entity_fieldname": "issuer_credentials", + "api_fieldname": "issuer_credentials", + "external_param": true, + "parameter_fieldname": "issuer_credentials", + "required": false, + "_key": "issuer_credentials" + }, + { + "type": "string", + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", + "x-nullable": true, + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "entity_fieldname": "issuer_attributes", + "_key": "issuer_attributes" + }, + { + "type": "string", + "enum": [ + "GLOBAL_SIGN", + "CFSSL_AUTH" + ], + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "api_fieldname": "issuer_type", + "entity_fieldname": "issuer_type", + "_key": "issuer_type" + }, + { + "type": "string", + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "enum": [ + "certificate-issuer" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + } + ], + "required": [ + "issuer_type" + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer" + } + }, + "_key": "200" + }, + { + "description": "Validation error: The data used to update the certificate issuer failed validation.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "_key": "postal_code" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "_key": "reason" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "_key": "reference_note" + "description": "Field name.", + "_key": "field" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "_key": "sales_contact" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "_key": "state" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "_key": "status" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": [], - "_key": "sub_accounts" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "404" + }, + { + "description": "Conflict. A certificate issuer with this name already exists.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents an account in requests and responses." + ] }, - "api_fieldname": "sub_accounts", - "entity_fieldname": "sub_accounts", - "_key": "sub_accounts" + "_key": "fields" }, { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "template_id", - "entity_fieldname": "template_id", - "_key": "template_id" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "api_fieldname": "tier", - "entity_fieldname": "tier", - "_key": "tier" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "api_fieldname": "upgraded_at", - "entity_fieldname": "upgraded_at", - "_key": "upgraded_at" + "description": "Error type.", + "_key": "type" } - ], - "description": "Represents an account in requests and responses." + ] }, - "_key": "200" + "_key": "409" }, { - "description": "Authentication failure.", + "description": "The request failed due to customer-configured external service.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -8666,29 +24065,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -8696,40 +24090,113 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "401" + "_key": "424" + } + ], + "path": "/v3/certificate-issuers/{certificate-issuer-id}", + "summary": "Update certificate issuer.", + "return_type": "certificate_issuer", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "issuer_type" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-id": "id" + }, + "operation_id": "updateCertificateIssuer", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "update" + }, + { + "description": "Validates the certificate issuer by sending a signing request for a test certificate. This should be done before the configuration is made active.\n
\n**Note:**\nThe API requests the 3rd party CA to sign a test certificate.\nFor some 3rd party CAs, this operation may use the account quota.\n
\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n```", + "field_renames": [], + "fields": [ + { + "name": "certificate-issuer-id", + "in": "path", + "description": "Certificate issuer ID.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "certificate-issuer-id", + "external_param": false, + "parameter_fieldname": "certificate-issuer-id", + "_key": "id" + } + ], + "method": "post", + "mode": "verify", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Provides details in case of failure.", + "example": "Message describing the verification failure", + "api_fieldname": "message", + "entity_fieldname": "message", + "_key": "message" + }, + { + "type": "boolean", + "description": "Indicates whether the certificate issuer was verified successfully.", + "example": false, + "api_fieldname": "successful", + "entity_fieldname": "successful", + "_key": "successful" + } + ], + "foreign_key": { + "group": "Security", + "entity": "verification_response" + } + }, + "_key": "200" }, { - "description": "Forbidden.", + "description": "Validation error", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -8739,29 +24206,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -8769,40 +24231,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "400" }, { - "description": "Account with the given ID not found.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -8812,29 +24269,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -8842,449 +24294,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}", - "summary": "Get account info.", - "return_type": "account", - "return_info": { - "self": true, - "custom": false, - "type": "account" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "sub_accounts", - "created_at", - "updated_at", - "parent_id", - "display_name", - "company", - "country", - "address_line1", - "address_line2", - "city", - "state", - "postal_code", - "contact", - "email", - "phone_number", - "aliases", - "tier", - "status", - "upgraded_at", - "limits", - "policies", - "template_id", - "reason", - "end_market", - "idle_timeout", - "password_policy", - "reference_note", - "custom_fields", - "mfa_status", - "notification_emails", - "sales_contact", - "expiration_warning_threshold", - "contract_number", - "customer_number", - "parent_account", - "expiration", - "admin_id", - "admin_name", - "admin_email", - "admin_key", - "admin_password", - "admin_full_name", - "password_recovery_expiration" - ], - "group_id": "Accounts", - "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAccountInfo", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - }, - { - "description": "Retrieve trusted certificates in an array.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", - "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "account_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "trusted_certificates", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "certificate", - "certificate_fingerprint", - "etag", - "id", - "issuer", - "name", - "object", - "service", - "subject", - "validity" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "string", - "example": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----", - "description": "X509.v3 trusted certificate in PEM format.", - "_key": "certificate" - }, - { - "type": "string", - "example": "a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1", - "description": "A SHA-256 fingerprint of the certificate.", - "_key": "certificate_fingerprint" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "string", - "maxLength": 500, - "x-nullable": true, - "example": "Certificate created by me.", - "description": "Human readable description of this certificate.", - "_key": "description" - }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "Device execution mode where 1 means a developer certificate.", - "_key": "device_execution_mode" - }, - { - "type": "boolean", - "example": false, - "description": "If true, signature is not required. Default value false.", - "_key": "enrollment_mode" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571d01d0242ac12000600000000", - "description": "Entity ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "example": "CN=issuer", - "description": "Issuer of the certificate.", - "_key": "issuer" - }, - { - "type": "string", - "maxLength": 100, - "example": "My certificate", - "description": "Certificate name.", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always 'trusted-cert'", - "enum": [ - "trusted-cert" - ], - "_key": "object" - }, - { - "x-nullable": true, - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the owner.", - "pattern": "[a-f0-9]{32}", - "_key": "owner_id" - }, - { - "type": "string", - "description": "Service name where the certificate is used.", - "enum": [ - "lwm2m", - "bootstrap" - ], - "_key": "service" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "Status of the certificate.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "_key": "status" - }, - { - "type": "string", - "example": "CN=subject", - "description": "Subject of the certificate.", - "_key": "subject" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - }, - { - "type": "boolean", - "example": true, - "description": "This read-only flag indicates whether the certificate is valid or not.", - "readOnly": true, - "_key": "valid" - }, - { - "type": "string", - "format": "date-time", - "example": "2038-02-14T15:24:14Z", - "description": "Expiration time in UTC formatted as RFC3339.", - "_key": "validity" - } - ], - "description": "Represents a trusted certificate in responses.", - "foreign_key": { - "group": "Security", - "entity": "trusted_certificate" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "trusted_certificate_order_enum", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "trusted_certificate" - } - }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -9294,29 +24332,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -9324,40 +24357,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -9367,29 +24395,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -9397,40 +24420,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "404" }, { - "description": "An account with the given ID does not exist.", + "description": "The request failed due to customer configured external service.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -9440,29 +24458,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -9470,1625 +24483,939 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "404" + "_key": "424" } ], - "path": "/v3/accounts/{account_id}/trusted-certificates", - "summary": "Get all trusted certificates.", - "return_type": "paginated_response(subtenant_trusted_certificate)", + "path": "/v3/certificate-issuers/{certificate-issuer-id}/verify", + "summary": "Verify certificate issuer.", + "return_type": "verification_response", "return_info": { "self": false, "custom": false, - "type": "subtenant_trusted_certificate" - }, - "x_filter": { - "name": [ - "eq" - ], - "service": [ - "eq" - ], - "expire": [ - "eq" - ], - "device_execution_mode": [ - "eq", - "neq" - ], - "owner": [ - "eq" - ], - "enrollment_mode": [ - "eq" - ], - "status": [ - "eq" - ], - "issuer": [ - "like" - ], - "subject": [ - "like" - ], - "valid": [ - "eq" - ] + "type": "verification_response" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "sub_accounts", - "total_count", - "has_more", - "data", - "name__eq", - "service__eq", - "expire__eq", - "device_execution_mode__eq", - "device_execution_mode__neq", - "owner__eq", - "enrollment_mode__eq", - "status__eq", - "issuer__like", - "subject__like", - "valid__eq" + "successful", + "message" ], - "group_id": "Accounts", + "group_id": "Security", "parameter_map": { - "account_id": "id" + "certificate-issuer-id": "id" }, - "operation_id": "getAllAccountCertificates", - "notes": "This lists the trusted certificates of the subtenant account.", + "unaggregated": true, + "operation_id": "verifyCertificateIssuer", "foreign_key": { - "entity": "subtenant_trusted_certificate" + "entity": "verification_response", + "group": "Security" }, - "pagination": true, + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "trusted_certificates" + "_key": "verify" + } + ], + "fields": [ + { + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 100, + "description": "General description for the certificate issuer.", + "example": "GlobalSign sample issuer", + "x-nullable": true, + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "type": "string", + "description": "Certificate issuer ID.", + "example": "01234567890ABCDEF01234567890ABCDEF", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value is empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.", + "example": [], + "api_fieldname": "issuer_attributes", + "readOnly": false, + "required": false, + "_key": "issuer_attributes" + }, + { + "type": "string", + "enum": [ + "GLOBAL_SIGN", + "CFSSL_AUTH" + ], + "description": "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. You must provide your own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n You must provide your own CFSSL host_url and credentials.", + "example": "GLOBAL_SIGN", + "api_fieldname": "issuer_type", + "readOnly": false, + "required": true, + "enum_reference": "certificate_issuer_type_enum", + "_key": "issuer_type" }, { - "description": "Update an account.\n\n**Example:**\n\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"phone_number\": \"12345678\"}'\n```", + "type": "string", + "maxLength": 50, + "description": "Certificate issuer name, unique per account.", + "example": "GS Issuer", + "api_fieldname": "name", + "readOnly": false, + "required": true, + "_key": "name" + } + ], + "field_renames": [], + "tags": [ + "Security and identity - certificate issuers" + ], + "group_id": "Security", + "_key": "certificate_issuer" + }, + { + "swagger_models": [ + "CertificateIssuerConfigListResponse", + "CertificateIssuerConfigRequest", + "CertificateIssuerConfigResponse", + "CreateCertificateIssuerConfig" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Configure the certificate issuer to use when creating device custom certificates.\n
\n**Example:**\n\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n-d '{\n \"reference\": \"customer.dlms\",\n \"certificate_issuer_id\": \"01621a36719d507b9d48a91b00000000\"\n}'\n```", "field_renames": [], "fields": [ { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "api_fieldname": "address_line1", - "entity_fieldname": "address_line1", - "parameter_fieldname": "address_line1", - "in": "body", - "required": false, - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "api_fieldname": "address_line2", - "entity_fieldname": "address_line2", - "parameter_fieldname": "address_line2", - "in": "body", - "required": false, - "_key": "address_line2" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "api_fieldname": "aliases", - "entity_fieldname": "aliases", - "parameter_fieldname": "aliases", - "in": "body", - "required": false, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "api_fieldname": "city", - "entity_fieldname": "city", - "parameter_fieldname": "city", - "in": "body", - "required": false, - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "api_fieldname": "company", - "entity_fieldname": "company", - "parameter_fieldname": "company", - "in": "body", - "required": false, - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "api_fieldname": "contact", - "entity_fieldname": "contact", - "parameter_fieldname": "contact", - "in": "body", - "required": false, - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "api_fieldname": "contract_number", - "entity_fieldname": "contract_number", - "parameter_fieldname": "contract_number", - "in": "body", - "required": false, - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "api_fieldname": "country", - "entity_fieldname": "country", - "parameter_fieldname": "country", - "in": "body", - "required": false, - "_key": "country" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "custom_fields", - "entity_fieldname": "custom_fields", - "parameter_fieldname": "custom_fields", - "in": "body", - "required": false, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "api_fieldname": "customer_number", - "entity_fieldname": "customer_number", - "parameter_fieldname": "customer_number", - "in": "body", - "required": false, - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "api_fieldname": "display_name", - "entity_fieldname": "display_name", - "parameter_fieldname": "display_name", - "in": "body", - "required": false, - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "api_fieldname": "email", - "entity_fieldname": "email", - "parameter_fieldname": "email", - "in": "body", - "required": false, - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "api_fieldname": "end_market", - "entity_fieldname": "end_market", - "parameter_fieldname": "end_market", - "in": "body", - "required": false, - "_key": "end_market" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "api_fieldname": "expiration_warning_threshold", - "entity_fieldname": "expiration_warning_threshold", - "parameter_fieldname": "expiration_warning_threshold", - "in": "body", - "required": false, - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "account_id", - "in": "path", - "required": true, - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "api_fieldname": "idle_timeout", - "entity_fieldname": "idle_timeout", - "parameter_fieldname": "idle_timeout", - "in": "body", - "required": false, - "_key": "idle_timeout" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "api_fieldname": "mfa_status", - "entity_fieldname": "mfa_status", - "parameter_fieldname": "mfa_status", - "in": "body", - "required": false, - "enum_reference": "account_mfa_status_enum", - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "api_fieldname": "notification_emails", - "entity_fieldname": "notification_emails", - "parameter_fieldname": "notification_emails", - "in": "body", - "required": false, - "_key": "notification_emails" - }, - { - "type": "object", - "required": false, - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "api_fieldname": "password_policy", - "entity_fieldname": "password_policy", - "parameter_fieldname": "password_policy", - "in": "body", - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "api_fieldname": "password_recovery_expiration", - "entity_fieldname": "password_recovery_expiration", - "parameter_fieldname": "password_recovery_expiration", - "in": "body", - "required": false, - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "api_fieldname": "phone_number", - "entity_fieldname": "phone_number", - "parameter_fieldname": "phone_number", - "in": "body", - "required": false, - "_key": "phone_number" - }, - { - "type": "string", - "maxLength": 100, "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "api_fieldname": "postal_code", - "entity_fieldname": "postal_code", - "parameter_fieldname": "postal_code", - "in": "body", - "required": false, - "_key": "postal_code" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "api_fieldname": "sales_contact", - "entity_fieldname": "sales_contact", - "parameter_fieldname": "sales_contact", + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "parameter_fieldname": "certificate_issuer_id", "in": "body", "required": false, - "_key": "sales_contact" + "_key": "certificate_issuer_id" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "api_fieldname": "state", - "entity_fieldname": "state", - "parameter_fieldname": "state", + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "parameter_fieldname": "reference", "in": "body", - "required": false, - "_key": "state" + "required": true, + "_key": "reference" } ], - "method": "put", - "mode": "update", + "method": "post", + "mode": "create", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "api_fieldname": "address_line1", - "entity_fieldname": "address_line1", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "api_fieldname": "address_line2", - "entity_fieldname": "address_line2", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_full_name", - "entity_fieldname": "admin_full_name", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "admin_id", - "entity_fieldname": "admin_id", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "api_fieldname": "admin_key", - "entity_fieldname": "admin_key", - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_password", - "entity_fieldname": "admin_password", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "api_fieldname": "aliases", - "entity_fieldname": "aliases", - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "api_fieldname": "city", - "entity_fieldname": "city", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "api_fieldname": "company", - "entity_fieldname": "company", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "api_fieldname": "contact", - "entity_fieldname": "contact", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", "x-nullable": true, - "description": "Contract number of the customer.", - "api_fieldname": "contract_number", - "entity_fieldname": "contract_number", - "_key": "contract_number" - }, - { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "api_fieldname": "country", - "entity_fieldname": "country", - "_key": "country" + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "_key": "certificate_issuer_id" }, { "type": "string", "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "custom_fields", - "entity_fieldname": "custom_fields", - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "api_fieldname": "customer_number", - "entity_fieldname": "customer_number", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "api_fieldname": "display_name", - "entity_fieldname": "display_name", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "api_fieldname": "email", - "entity_fieldname": "email", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "api_fieldname": "end_market", - "entity_fieldname": "end_market", - "_key": "end_market" - }, { "type": "string", + "description": "Entity instance signature.", "example": "1", - "description": "API resource entity version.", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "api_fieldname": "expiration", - "entity_fieldname": "expiration", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "api_fieldname": "expiration_warning_threshold", - "entity_fieldname": "expiration_warning_threshold", - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "api_fieldname": "idle_timeout", - "entity_fieldname": "idle_timeout", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "limits", - "entity_fieldname": "limits", - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "api_fieldname": "mfa_status", - "entity_fieldname": "mfa_status", - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "api_fieldname": "notification_emails", - "entity_fieldname": "notification_emails", - "_key": "notification_emails" + "type": "boolean", + "example": true, + "api_fieldname": "is_custom", + "entity_fieldname": "is_custom", + "_key": "is_custom" }, { "type": "string", - "description": "Entity name: always `account`.", "enum": [ - "account" + "certificate-issuer-configuration" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "api_fieldname": "parent_account", - "entity_fieldname": "parent_account", - "_key": "parent_account" - }, { "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "parent_id", - "entity_fieldname": "parent_id", - "_key": "parent_id" + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "api_fieldname": "password_policy", - "entity_fieldname": "password_policy", - "_key": "password_policy" - }, + "type": "string", + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer_config" + } + }, + "_key": "201" + }, + { + "description": "Validation error.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "api_fieldname": "password_recovery_expiration", - "entity_fieldname": "password_recovery_expiration", - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "api_fieldname": "phone_number", - "entity_fieldname": "phone_number", - "_key": "phone_number" + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", "properties": [ { "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" + "description": "Field name.", + "_key": "field" }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } + ] }, - "api_fieldname": "policies", - "entity_fieldname": "policies", - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "api_fieldname": "postal_code", - "entity_fieldname": "postal_code", - "_key": "postal_code" + "_key": "fields" }, { "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "api_fieldname": "reason", - "entity_fieldname": "reason", - "_key": "reason" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "api_fieldname": "reference_note", - "entity_fieldname": "reference_note", - "_key": "reference_note" + "description": "Entity name: `error`.", + "_key": "object" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "api_fieldname": "sales_contact", - "entity_fieldname": "sales_contact", - "_key": "sales_contact" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "api_fieldname": "state", - "entity_fieldname": "state", - "_key": "state" - }, + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" }, { "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "end_market", - "etag", - "id", - "object", - "status", - "tier" - ], "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "_key": "end_market" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "_key": "notification_emails" - }, - { - "type": "string", - "description": "Entity name: always `account`.", - "enum": [ - "account" - ], - "_key": "object" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - } - ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" - }, - "x-nullable": true, - "_key": "parent_account" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "_key": "parent_id" - }, - { - "type": "object", - "required": [ - "minimum_length" - ], - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } - ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" - }, - "description": "The password policy for this account.", - "x-nullable": true, - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "_key": "password_recovery_expiration" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "_key": "phone_number" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" - } - }, - "_key": "policies" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "_key": "postal_code" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "_key": "reason" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "A certificate issuer configuration with this reference already exists.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "_key": "reference_note" + "description": "Field name.", + "_key": "field" }, { - "pattern": "^(?=.{3,254}$).+\\@.+", "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "_key": "sales_contact" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "409" + } + ], + "path": "/v3/certificate-issuer-configurations", + "summary": "Create certificate issuer configuration.", + "return_type": "certificate_issuer_config", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer_config" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "is_custom", + "id", + "created_at", + "updated_at" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-configuration-id": "id" + }, + "operation_id": "createCertificateIssuerConfig", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete certificate issuer configuration.\nYou can only delete custom certificate configurations.", + "field_renames": [], + "fields": [ + { + "name": "certificate-issuer-configuration-id", + "in": "path", + "description": "Certificate issuer ID configuration.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "certificate-issuer-configuration-id", + "external_param": false, + "parameter_fieldname": "certificate-issuer-configuration-id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "No content.", + "_key": "204" + }, + { + "description": "Validation error.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "_key": "state" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" - ], - "_key": "status" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { - "type": "array", - "x-nullable": true, - "description": "List of sub accounts. Not available for developer users.", - "items": [], - "_key": "sub_accounts" + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "_key": "template_id" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "_key": "tier" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "_key": "upgraded_at" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents an account in requests and responses." + ] }, - "api_fieldname": "sub_accounts", - "entity_fieldname": "sub_accounts", - "_key": "sub_accounts" + "_key": "fields" }, { "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "template_id", - "entity_fieldname": "template_id", - "_key": "template_id" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "api_fieldname": "tier", - "entity_fieldname": "tier", - "_key": "tier" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "api_fieldname": "upgraded_at", - "entity_fieldname": "upgraded_at", - "_key": "upgraded_at" + "description": "Error type.", + "_key": "type" } - ], - "description": "Represents an account in requests and responses." + ] }, - "_key": "200" - }, + "_key": "404" + } + ], + "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", + "summary": "Delete certificate issuer configuration.", + "return_type": "certificate_issuer_config", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer_config" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "is_custom" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-configuration-id": "id" + }, + "operation_id": "deleteCertificateIssuerConfigByID", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Provides the configured certificate issuer used when creating device\ncertificates for LwM2M.", + "field_renames": [], + "fields": [], + "method": "get", + "mode": "get_default", + "responses": [ { - "description": "Error in input data format.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "x-nullable": true, + "type": "string", + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "_key": "certificate_issuer_id" }, { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" + "type": "string", + "format": "date-time", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "boolean", + "example": true, + "api_fieldname": "is_custom", + "entity_fieldname": "is_custom", + "_key": "is_custom" }, { "type": "string", - "description": "Entity name, always `error`.", "enum": [ - "error" + "certificate-issuer-configuration" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer_config" + } }, - "_key": "400" + "_key": "200" }, { - "description": "Authentication failure.", + "description": "Validation error.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11098,29 +25425,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11128,40 +25450,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11171,29 +25488,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11201,40 +25513,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Account with the given ID not found.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11244,29 +25551,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11274,42 +25576,36 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "404" + "_key": "403" } ], - "path": "/v3/accounts/{account_id}", - "summary": "Update attributes of an existing account.", - "return_type": "account", + "path": "/v3/certificate-issuer-configurations/lwm2m", + "summary": "Get certificate issuer configuration.", + "return_type": "certificate_issuer_config", "return_info": { "self": true, "custom": false, - "type": "account" + "type": "certificate_issuer_config" }, "x_filter": {}, "x_deprecation": null, @@ -11318,339 +25614,202 @@ "etag", "type", "filter", - "sub_accounts", + "is_custom", + "id", + "certificate_issuer_id", + "reference", "created_at", - "updated_at", - "parent_id", - "tier", - "status", - "upgraded_at", - "limits", - "policies", - "template_id", - "reason", - "reference_note", - "parent_account", - "expiration", - "admin_id", - "admin_name", - "admin_email", - "admin_key", - "admin_password", - "admin_full_name" + "updated_at" ], - "group_id": "Accounts", + "group_id": "Security", "parameter_map": { - "account_id": "id" + "certificate-issuer-configuration-id": "id" }, - "operation_id": "updateAccount", - "additional_operations": [ - { - "operation_id": "updateMyAccount", - "notes": "After retrieving the resource using the `me` method, it can modified using using this SDK method." - } - ], + "operation_id": "getCertificateIssuerConfig", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "update" + "_key": "get_default" }, { - "description": "Retrieve details of all active user invitations sent for new or existing users.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations \\\n-H 'Authorization: Bearer '\n```", + "description": "Get certificate issuer configurations, optionally filtered by reference.\n
\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n```\n
\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n```\n**Note:** This endpoint does not implement pagination, and therefore ignores list control parameters such as `limit` or `after`.", "field_renames": [], "fields": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", "api_fieldname": "after", "entity_fieldname": "after", - "name": "after", "in": "query", - "required": false, + "name": "after", "external_param": true, "parameter_fieldname": "after", + "required": false, "_key": "after" }, { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", "type": "string", - "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", - "_key": "id" + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" }, { "type": "integer", - "format": "int32", + "description": "The number of results to return (2-1000). Values outside of this range are set to the closest limit.", "example": 50, - "description": "The number of results to return (2-1000). Default 50.", + "minimum": 2, + "maximum": 1000, "api_fieldname": "limit", "entity_fieldname": "limit", - "name": "limit", "in": "query", - "required": false, - "default": 50, + "name": "limit", "external_param": true, "parameter_fieldname": "limit", + "required": false, "_key": "limit" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", "api_fieldname": "order", "entity_fieldname": "order", - "name": "order", "in": "query", - "required": false, - "default": "ASC", + "name": "order", "external_param": true, "parameter_fieldname": "order", - "enum_reference": "account_order_enum", + "required": false, "_key": "order" } ], "method": "get", - "mode": "user_invitations", + "mode": "list", "responses": [ { - "description": "Successful operation.", + "description": "OK.", "schema": { "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "description": "An offset token for current page.", + "example": "01631667477600000000000100100374", "api_fieldname": "after", "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", "_key": "after" }, { "type": "array", - "description": "A list of entities.", "items": { "type": "object", - "required": [ - "account_id", - "email", - "etag", - "id", - "object", - "user_id" - ], "properties": [ { + "x-nullable": true, "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account the user is invited to.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "_key": "certificate_issuer_id" }, { "type": "string", "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", "_key": "created_at" }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "friend@arm.com", - "description": "Email address of the invited user.", - "_key": "email" - }, { "type": "string", + "description": "Entity instance signature.", "example": "1", - "description": "API resource entity version.", "_key": "etag" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Invitation expiration as UTC time RFC3339.", - "_key": "expiration" - }, - { - "type": "array", - "description": "A list of IDs of the groups the user is invited to.", - "items": { - "type": "string" - }, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the invitation.", - "pattern": "[a-f0-9]{32}", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", "_key": "id" }, { - "type": "array", - "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", - "x-nullable": true, - "items": { - "type": "object", - "required": [ - "id" - ], - "properties": [ - { - "type": "string", - "description": "ID of the identity provider.", - "readOnly": false, - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "readOnly": false, - "description": "Name of the identity provider.", - "_override": true, - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Identity provider type.", - "readOnly": true, - "enum": [ - "NATIVE", - "MBED", - "SAML2", - "OIDC" - ], - "api_fieldname": "type", - "entity_fieldname": "type", - "_key": "type" - } - ], - "description": "Represents a user login profile in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "login_profile" - } - }, - "_key": "login_profiles" + "type": "boolean", + "example": true, + "_key": "is_custom" }, { "type": "string", - "description": "Entity name: always 'user-invitation'", "enum": [ - "user-invitation" + "certificate-issuer-configuration" ], "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "_key": "reference" }, { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the invited user.", - "pattern": "[a-f0-9]{32}", - "_key": "user_id" + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "_key": "updated_at" } ], - "description": "Represents an user invitation in responses.", "foreign_key": { - "group": "Accounts", - "entity": "user_invitation" + "group": "Security", + "entity": "certificate_issuer_config" } }, + "description": "List of certificate issuers.", "api_fieldname": "data", "entity_fieldname": "data", "_key": "data" }, { "type": "boolean", + "description": "More results are available.", "example": false, - "description": "Flag indicating whether there are more results.", "api_fieldname": "has_more", "entity_fieldname": "has_more", "_key": "has_more" }, { "type": "integer", - "format": "int32", + "description": "The number of results to return (2-1000). Values outside of this range are set to the closest limit.", "example": 50, - "description": "The number of results to return (2-1000). Default 50.", + "minimum": 2, + "maximum": 1000, "api_fieldname": "limit", "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", "_key": "limit" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], + "description": "The type of this API object is `list`.", + "example": "list", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], + "description": "Record order based on creation time.", + "example": "DESC", "api_fieldname": "order", "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "user_invitation_order_enum", "_key": "order" }, { + "format": "integer", "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", + "example": 1, "api_fieldname": "total_count", "entity_fieldname": "total_count", "_key": "total_count" @@ -11658,18 +25817,19 @@ ], "pagination": true, "foreign_key": { - "group": "Accounts", - "entity": "user_invitation" + "group": "Security", + "entity": "certificate_issuer_config" } }, "_key": "200" }, { - "description": "Authentication failure.", + "description": "Validation error.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11679,29 +25839,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11709,40 +25864,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11752,29 +25902,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11782,40 +25927,35 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "401" }, { - "description": "An account with the specified ID does not exist.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -11825,29 +25965,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -11855,45 +25990,39 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "404" + "_key": "403" } ], - "path": "/v3/accounts/{account_id}/user-invitations", - "summary": "Get the details of all user invitations.", - "return_type": "paginated_response(subtenant_user_invitation)", + "path": "/v3/certificate-issuer-configurations", + "summary": "Get certificate issuer configurations.", + "return_type": "paginated_response(certificate_issuer_config)", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_user_invitation" + "type": "certificate_issuer_config" }, "x_filter": { - "login_profiles": [ + "reference": [ "eq" ] }, @@ -11903,583 +26032,322 @@ "etag", "type", "filter", - "sub_accounts", - "total_count", + "is_custom", "has_more", + "total_count", "data", - "login_profiles__eq" - ], - "group_id": "Accounts", - "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAllAccountInvitations", - "notes": "This lists the user invitations of the subtenant account.", - "foreign_key": { - "entity": "subtenant_user_invitation" - }, - "pagination": true, - "request_content_type": "application/json", - "request_body": "json", - "_key": "user_invitations" - }, - { - "description": "Retrieve details of all users.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", - "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "account_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "users", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "email", - "etag", - "id", - "object", - "status" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "array", - "description": "List of active user sessions.", - "items": { - "type": "object", - "required": [ - "account_id", - "ip_address", - "login_time", - "object", - "reference_token", - "user_agent" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The UUID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", - "entity_fieldname": "ip_address", - "_key": "ip_address" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "The login time of the user.", - "api_fieldname": "login_time", - "entity_fieldname": "login_time", - "_key": "login_time" - }, - { - "type": "string", - "description": "Entity name: always 'user-session'", - "enum": [ - "user-session" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", - "description": "The reference token.", - "api_fieldname": "reference_token", - "entity_fieldname": "reference_token", - "_key": "reference_token" - }, - { - "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", - "entity_fieldname": "user_agent", - "_key": "user_agent" - } - ], - "description": "Represents an active user session.", - "foreign_key": { - "group": "Accounts", - "entity": "active_session" - } - }, - "_key": "active_sessions" - }, - { - "type": "string", - "example": "110 Fulbourn Rd, Cambridge, United Kingdom", - "description": "Address.", - "x-nullable": true, - "_key": "address" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "A timestamp of the user creation in the storage, in milliseconds.", - "_key": "creation_time" - }, - { - "type": "object", - "x-nullable": true, - "description": "User's account-specific custom properties. The value is a string.", - "additionalProperties": { - "type": "string" - }, - "_key": "custom_fields" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "user@arm.com", - "description": "The email address.", - "_key": "email" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating whether the user's email address has been verified or not.", - "_key": "email_verified" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "maxLength": 100, - "example": "User Doe", - "x-nullable": true, - "description": "The full name of the user.", - "_key": "full_name" - }, - { - "type": "array", - "description": "A list of IDs of the groups this user belongs to.", - "items": { - "type": "string" - }, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the user.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating that the user has accepted General Terms and Conditions.", - "_key": "is_gtc_accepted" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating that the user has consented to receive marketing information.", - "_key": "is_marketing_accepted" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating whether two-factor authentication (TOTP) has been enabled.", - "_key": "is_totp_enabled" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "A timestamp of the latest login of the user, in milliseconds.", - "_key": "last_login_time" - }, - { - "type": "array", - "maxItems": 5, - "description": "Timestamps, succeedings, IP addresses and user agent information of the last five logins of the user, with timestamps in RFC3339 format.", - "items": { - "type": "object", - "required": [ - "date", - "ip_address", - "success", - "user_agent" - ], - "properties": [ - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "UTC time RFC3339 for this login attempt.", - "api_fieldname": "date", - "entity_fieldname": "date", - "_key": "date" - }, - { - "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", - "entity_fieldname": "ip_address", - "_key": "ip_address" - }, - { - "type": "boolean", - "example": true, - "description": "Flag indicating whether login attempt was successful or not.", - "api_fieldname": "success", - "entity_fieldname": "success", - "_key": "success" - }, - { - "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", - "entity_fieldname": "user_agent", - "_key": "user_agent" - } - ], - "description": "Represents an entry in login history.", - "foreign_key": { - "group": "Accounts", - "entity": "login_history" - } - }, - "_key": "login_history" - }, - { - "type": "array", - "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", - "x-nullable": true, - "items": { - "type": "object", - "required": [ - "id" - ], - "properties": [ - { - "type": "string", - "description": "ID of the identity provider.", - "readOnly": false, - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "readOnly": false, - "description": "Name of the identity provider.", - "_override": true, - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Identity provider type.", - "readOnly": true, - "enum": [ - "NATIVE", - "MBED", - "SAML2", - "OIDC" - ], - "api_fieldname": "type", - "entity_fieldname": "type", - "_key": "type" - } - ], - "description": "Represents a user login profile in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "login_profile" - } - }, - "_key": "login_profiles" - }, + "reference__eq" + ], + "foreign_key_priority": "self", + "group_id": "Security", + "parameter_map": { + "certificate-issuer-configuration-id": "id" + }, + "operation_id": "getCertificateIssuerConfigs", + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer_config" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Provides the configured certificate issuer.", + "field_renames": [], + "fields": [ + { + "type": "string", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "certificate-issuer-configuration-id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "x-nullable": true, + "type": "string", + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "_key": "certificate_issuer_id" + }, + { + "type": "string", + "format": "date-time", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "boolean", + "example": true, + "api_fieldname": "is_custom", + "entity_fieldname": "is_custom", + "_key": "is_custom" + }, + { + "type": "string", + "enum": [ + "certificate-issuer-configuration" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer_config" + } + }, + "_key": "200" + }, + { + "description": "Validation error.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "description": "Entity name: always `user`.", - "enum": [ - "user" - ], - "_key": "object" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password when creating a new user. It will be generated when not present in the request.", - "x-nullable": true, - "_key": "password" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "A timestamp of the latest change of the user password, in milliseconds.", - "_key": "password_changed_time" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "maxLength": 100, - "example": "+44 (1223) 400 400", - "description": "Phone number.", - "x-nullable": true, - "_key": "phone_number" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the user. ENROLLING state indicates that the user is in the middle of the enrollment process. INVITED means that the user has not accepted the invitation request. RESET means that the password must be changed immediately. INACTIVE users are locked out and not permitted to use the system.", - "enum": [ - "ENROLLING", - "INVITED", - "ACTIVE", - "RESET", - "INACTIVE" - ], - "_key": "status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of scratch codes for the two-factor authentication. Visible only when 2FA is requested to be enabled or the codes regenerated.", - "items": { - "type": "string" - }, - "_key": "totp_scratch_codes" - }, + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "Field name.", + "_key": "field" }, { - "pattern": "[\\w\\-,._@+=]{4,30}", "type": "string", - "example": "admin", - "description": "A username.", - "x-nullable": true, - "_key": "username" + "description": "Error message related to the field.", + "_key": "message" } - ], - "description": "Represents a user in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "user" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "Error message.", + "_key": "message" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "user_order_enum", - "_key": "order" + "description": "Request ID from JWT.", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type.", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "user" - } + ] }, - "_key": "200" + "_key": "403" }, { - "description": "Authentication failure.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -12489,29 +26357,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -12519,40 +26382,178 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", + "summary": "Get certificate issuer configuration.", + "return_type": "certificate_issuer_config", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer_config" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "is_custom", + "certificate_issuer_id", + "reference", + "created_at", + "updated_at" + ], + "group_id": "Security", + "parameter_map": { + "certificate-issuer-configuration-id": "id" + }, + "operation_id": "getCertificateIssuerConfigByID", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Update certificate issuer configuration.", + "field_renames": [], + "fields": [ + { + "x-nullable": true, + "type": "string", + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "parameter_fieldname": "certificate_issuer_id", + "in": "body", + "required": false, + "_key": "certificate_issuer_id" + }, + { + "type": "string", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "certificate-issuer-configuration-id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "OK.", + "schema": { + "type": "object", + "properties": [ + { + "x-nullable": true, + "type": "string", + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "entity_fieldname": "certificate_issuer_id", + "_key": "certificate_issuer_id" + }, + { + "type": "string", + "format": "date-time", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "boolean", + "example": true, + "api_fieldname": "is_custom", + "entity_fieldname": "is_custom", + "_key": "is_custom" }, { "type": "string", - "description": "Entity name, always `error`.", "enum": [ - "error" + "certificate-issuer-configuration" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Security", + "entity": "certificate_issuer_config" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Validation error.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", @@ -12562,29 +26563,24 @@ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, + "description": "Error code. Correlates with response status code.", "_key": "code" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of request fields that failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Field name.", + "_key": "field" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "description": "Error message related to the field.", + "_key": "message" } ] }, @@ -12592,1042 +26588,1058 @@ }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", + "description": "Error message.", "_key": "message" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "Entity name: `error`.", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", + "description": "Request ID from JWT.", "_key": "request_id" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", + "description": "Error type.", "_key": "type" } ] }, - "_key": "403" + "_key": "400" }, { - "description": "An account with the given ID does not exist.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ "code", + "fields", "message", "object", "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/users", - "summary": "Get the details of all users.", - "return_type": "paginated_response(subtenant_user)", - "return_info": { - "self": false, - "custom": false, - "type": "subtenant_user" - }, - "x_filter": { - "email": [ - "eq" - ], - "status": [ - "eq", - "in", - "nin" - ], - "login_profiles": [ - "eq" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "sub_accounts", - "total_count", - "has_more", - "data", - "email__eq", - "status__eq", - "status__in", - "status__nin", - "login_profiles__eq" - ], - "group_id": "Accounts", - "parameter_map": { - "account_id": "id" - }, - "operation_id": "getAllAccountUsers", - "notes": "This lists the users of the subtenant account.", - "foreign_key": { - "entity": "subtenant_user" - }, - "pagination": true, - "request_content_type": "application/json", - "request_body": "json", - "_key": "users" - } - ], - "fields": [ - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "110 Fulbourn Rd", - "description": "Postal address line 1.", - "api_fieldname": "address_line1", - "readOnly": false, - "required": false, - "_key": "address_line1" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "Postal address line 2.", - "api_fieldname": "address_line2", - "readOnly": false, - "required": false, - "_key": "address_line2" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "admin@arm.com", - "description": "The email address of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_email", - "readOnly": false, - "required": false, - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Admin Doe", - "description": "The full name of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_full_name", - "readOnly": false, - "required": false, - "_key": "admin_full_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the admin user created for this account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "admin_id", - "readOnly": true, - "required": false, - "_key": "admin_id" - }, - { - "type": "string", - "x-nullable": true, - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT", - "description": "The admin API key created for this account. Present only in the response for account creation.", - "readOnly": true, - "api_fieldname": "admin_key", - "required": false, - "_key": "admin_key" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "admin", - "description": "The username of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_name", - "readOnly": false, - "required": false, - "_key": "admin_name" - }, - { - "type": "string", - "x-nullable": true, - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password of the admin user created for this account. Present only in the response for account creation.", - "api_fieldname": "admin_password", - "readOnly": false, - "required": false, - "_key": "admin_password" - }, - { - "type": "array", - "maxItems": 10, - "description": "An array of aliases.", - "items": { - "type": "string", - "pattern": "[\\w\\-._]{8,100}" - }, - "api_fieldname": "aliases", - "readOnly": false, - "required": false, - "_key": "aliases" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "Cambridge", - "description": "The city part of the postal address.", - "api_fieldname": "city", - "readOnly": false, - "required": false, - "_key": "city" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM Holdings Plc", - "description": "The name of the company.", - "api_fieldname": "company", - "readOnly": false, - "required": false, - "_key": "company" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "J. Doe", - "description": "The name of the contact person for this account.", - "api_fieldname": "contact", - "readOnly": false, - "required": false, - "_key": "contact" - }, - { - "type": "string", - "example": "1NX25_0001", - "x-nullable": true, - "description": "Contract number of the customer.", - "api_fieldname": "contract_number", - "readOnly": false, - "required": false, - "_key": "contract_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "United Kingdom", - "description": "The country part of the postal address.", - "api_fieldname": "country", - "readOnly": false, - "required": false, - "_key": "country" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "object", - "x-nullable": true, - "description": "Account's custom properties as key-value pairs.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "custom_fields", - "readOnly": false, - "required": false, - "_key": "custom_fields" - }, - { - "type": "string", - "example": "1NC25_0001", - "x-nullable": true, - "description": "Customer number of the customer.", - "api_fieldname": "customer_number", - "readOnly": false, - "required": false, - "_key": "customer_number" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "ARM", - "description": "The display name for the account.", - "api_fieldname": "display_name", - "readOnly": false, - "required": false, - "_key": "display_name" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "x-nullable": true, - "example": "info@arm.com", - "description": "The company email address for this account.", - "api_fieldname": "email", - "readOnly": false, - "required": false, - "_key": "email" - }, - { - "type": "string", - "example": "IT", - "description": "Account end market.", - "api_fieldname": "end_market", - "readOnly": false, - "required": true, - "_key": "end_market" - }, - { - "type": "string", - "x-nullable": true, - "format": "date-time", - "description": "Expiration time of the account, as UTC time RFC3339.", - "api_fieldname": "expiration", - "readOnly": true, - "required": false, - "_key": "expiration" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 180, - "example": "180", - "x-nullable": true, - "description": "Indicates how many days (1-180) before account expiration a notification email is sent.", - "api_fieldname": "expiration_warning_threshold", - "readOnly": false, - "required": false, - "_key": "expiration_warning_threshold" - }, - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "Account ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "integer", - "minimum": 1, - "maximum": 120, - "x-nullable": true, - "example": "30", - "description": "The reference token expiration time, in minutes, for this account.", - "api_fieldname": "idle_timeout", - "readOnly": false, - "required": false, - "_key": "idle_timeout" - }, - { - "type": "object", - "x-nullable": true, - "description": "List of limits as key-value pairs if requested.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "limits", - "readOnly": true, - "required": false, - "_key": "limits" - }, - { - "type": "string", - "x-nullable": true, - "description": "The enforcement status of multi-factor authentication, either `enforced` or `optional`.", - "enum": [ - "enforced", - "optional" - ], - "api_fieldname": "mfa_status", - "readOnly": false, - "required": false, - "enum_reference": "account_mfa_status_enum", - "_key": "mfa_status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of notification email addresses.", - "items": { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string" - }, - "api_fieldname": "notification_emails", - "readOnly": false, - "required": false, - "_key": "notification_emails" - }, - { - "type": "object", - "properties": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "entity_fieldname": "admin_email", - "_key": "admin_email" + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "401" }, { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "entity_fieldname": "admin_name", - "_key": "admin_name" + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" }, { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "Not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "Error message.", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "404" } ], - "description": "Represents parent account contact details in responses.", - "foreign_key": { - "group": "Accounts", - "entity": "parent_account" + "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", + "summary": "Update certificate issuer configuration.", + "return_type": "certificate_issuer_config", + "return_info": { + "self": true, + "custom": false, + "type": "certificate_issuer_config" }, - "x-nullable": true, - "api_fieldname": "parent_account", - "readOnly": true, - "required": false, - "_key": "parent_account" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account, if any.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "parent_id", - "readOnly": true, - "required": false, - "_key": "parent_id" - }, - { - "type": "object", - "required": false, - "properties": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "entity_fieldname": "minimum_length", - "_key": "minimum_length" - } + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "is_custom", + "reference", + "created_at", + "updated_at" ], - "foreign_key": { - "group": "Accounts", - "entity": "password_policy" + "group_id": "Security", + "parameter_map": { + "certificate-issuer-configuration-id": "id" }, - "description": "The password policy for this account.", - "x-nullable": true, - "api_fieldname": "password_policy", - "readOnly": false, - "_key": "password_policy" - }, - { - "type": "integer", - "format": "int32", - "minimum": 1, - "maximum": 45, - "description": "Indicates for how many minutes a password recovery email is valid.", - "api_fieldname": "password_recovery_expiration", - "readOnly": false, - "required": false, - "_key": "password_recovery_expiration" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "+44 (1223) 400 400", - "description": "The phone number of a company representative.", - "api_fieldname": "phone_number", - "readOnly": false, - "required": false, - "_key": "phone_number" - }, - { - "type": "array", - "x-nullable": true, - "description": "List of policies if requested.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "entity_fieldname": "action", - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "entity_fieldname": "allow", - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "entity_fieldname": "feature", - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "entity_fieldname": "inherited", - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "entity_fieldname": "inherited_from", - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "entity_fieldname": "inherited_type", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "entity_fieldname": "resource", - "_key": "resource" - } - ], - "description": "Represents a feature policy. Either the feature or the resource must be specified.", - "foreign_key": { - "group": "Accounts", - "entity": "policy" + "operation_id": "updateCertificateIssuerConfigByID", + "additional_operations": [ + { + "operation_id": "updateCertificateIssuerConfig", + "notes": "After retrieving the resource using the `lwm2m` method, it can modified using using this SDK method." } - }, - "api_fieldname": "policies", - "readOnly": true, - "required": false, - "_key": "policies" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": "CB1 9NJ", - "description": "The postal code part of the postal address.", - "api_fieldname": "postal_code", - "readOnly": false, - "required": false, - "_key": "postal_code" - }, - { - "type": "string", - "x-nullable": true, - "example": "Subscription paid.", - "description": "A note with the reason for account status update.", - "api_fieldname": "reason", - "readOnly": true, - "required": false, - "_key": "reason" - }, - { - "type": "string", - "x-nullable": true, - "example": "ARM-INT-0001", - "description": "A reference note for updating the status of the account.", - "api_fieldname": "reference_note", - "readOnly": true, - "required": false, - "_key": "reference_note" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "sales@arm.com", - "x-nullable": true, - "description": "Email address of the sales contact.", - "api_fieldname": "sales_contact", - "readOnly": false, - "required": false, - "_key": "sales_contact" - }, - { - "type": "string", - "maxLength": 100, - "x-nullable": true, - "example": " ", - "description": "The state part of the postal address.", - "api_fieldname": "state", - "readOnly": false, - "required": false, - "_key": "state" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the account.", - "enum": [ - "ENROLLING", - "ACTIVE", - "RESTRICTED", - "SUSPENDED" ], - "api_fieldname": "status", - "readOnly": true, - "required": false, - "enum_reference": "account_status_enum", - "_key": "status" - }, - { - "type": "string", - "x-nullable": true, - "example": "01619571e7160242ac12000600000000", - "description": "Account template ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "template_id", - "readOnly": true, - "required": false, - "_key": "template_id" - }, - { - "type": "string", - "example": "1", - "description": "The tier level of the account; `0`: free tier, `1`: commercial account, `2`: partner tier. Other values are reserved for the future.", - "api_fieldname": "tier", - "readOnly": true, - "required": false, - "_key": "tier" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Time when upgraded to commercial account in UTC format RFC3339.", - "api_fieldname": "upgraded_at", - "readOnly": true, - "required": false, - "_key": "upgraded_at" + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "update" } ], - "field_renames": [], - "tags": [ - "Account - profile", - "Tenant accounts - accounts", - "Tenant accounts - API keys", - "Tenant accounts - users", - "Tenant accounts - user invitations", - "Tenant device security - certificates", - "Tenant user interface configuration - colors", - "Tenant user interface configuration - images" - ], - "group_id": "Accounts", - "_key": "account" - }, - { - "swagger_models": [ - "ActiveSession" - ], - "primary_key_field": null, - "methods": [], "fields": [ { + "x-nullable": true, "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The UUID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" + "description": "Certificate issuer ID.\nNull if Device Management internal HSM is used.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "certificate_issuer_id", + "readOnly": false, + "required": true, + "_key": "certificate_issuer_id" }, { "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", + "format": "date-time", + "description": "Created UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", "readOnly": true, "required": false, - "_key": "ip_address" + "_key": "created_at" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "The login time of the user.", - "api_fieldname": "login_time", - "readOnly": true, - "required": false, - "_key": "login_time" + "description": "Certificate issuer ID. configuration.", + "example": "01648415a2a30242ac18000500000000", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" }, { "type": "string", - "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", - "description": "The reference token.", - "api_fieldname": "reference_token", - "readOnly": true, - "required": false, - "_key": "reference_token" + "description": "The certificate name to which the certificate issuer configuration applies.", + "example": "customer.dlms", + "api_fieldname": "reference", + "readOnly": false, + "required": true, + "_key": "reference" }, { "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", + "format": "date-time", + "description": "Updated UTC time RFC3339.", + "example": "2017-02-01T00:00:00Z", + "api_fieldname": "updated_at", "readOnly": true, "required": false, - "_key": "user_agent" + "_key": "updated_at" } ], "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "active_session" + "tags": [ + "Security and identity - certificate issuer configurations" + ], + "group_id": "Security", + "_key": "certificate_issuer_config" }, { "swagger_models": [ - "ApiKeyInfoReq", - "ApiKeyInfoResp", - "ApiKeyInfoRespList", - "ApiKeyUpdateReq", - "GroupSummaryList" + "BrandingColor", + "BrandingColorList" ], - "primary_key_field": "id", + "primary_key_field": "reference", "methods": [ { - "description": "Create a new API key.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d '{\"name\": \"MyKey1\"}' \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json'\n```", + "description": "Resets the branding color to its dark theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" + "is_primary_key": true, + "_override": true, + "type": "string", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "name": "reference", + "in": "path", + "description": "The name of the branding color.", + "required": true, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" + "_key": "401" }, { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "body", - "required": true, - "_key": "name" + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" }, { + "description": "Color not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/branding-colors/dark/{reference}", + "summary": "Reset branding color to default.", + "return_type": "void", + "return_info": { + "self": false, + "custom": true, + "type": "void" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Branding", + "operation_id": "resetDarkColor", + "spec": { + "return_type": "void" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Retrieve the dark theme branding colors.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "is_primary_key": true, + "_override": true, "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", - "in": "body", - "required": false, - "_key": "owner" + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", + "readOnly": true, + "enum": [ + "branding_color" + ], + "_key": "object" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "_key": "200" }, { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "parameter_fieldname": "status", - "in": "body", - "required": false, - "enum_reference": "api_key_status_enum", - "_key": "status" - } - ], - "method": "post", - "mode": "create", - "responses": [ - { - "description": "New entity created.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ - "etag", - "id", - "key", - "name", - "object" + "code", + "message", + "object", + "request_id", + "type" ], "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", - "description": "A list of group IDs this API key belongs to.", + "description": "Request fields which failed validation.", "items": { - "type": "string" + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "_key": "groups" + "_key": "fields" }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/branding-colors/dark", + "summary": "Get dark theme branding colors.", + "return_type": "paginated_response(dark_theme_color)", + "return_info": { + "self": true, + "custom": false, + "type": "dark_theme_color" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "limit", + "after", + "order", + "total_count", + "has_more", + "data" + ], + "foreign_key_priority": "self", + "group_id": "Branding", + "operation_id": "getDarkColors", + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Retrieve the requested dark theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "_key": "color" }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'branding_color'", + "readOnly": true, "enum": [ - "api-key" + "branding_color" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", "enum": [ - "ACTIVE", - "INACTIVE" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", + "description": "Last update time in UTC.", + "readOnly": true, "api_fieldname": "updated_at", "entity_fieldname": "updated_at", "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { - "group": "Accounts", - "entity": "subtenant_api_key" + "group": "Branding", + "entity": "subtenant_light_theme_color" } }, - "_key": "201" + "_key": "200" }, { - "description": "Error in input data, for example, missing display name.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -13697,10 +27709,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -13770,10 +27782,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Color not found.", "schema": { "type": "object", "required": [ @@ -13843,16 +27855,16 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/api-keys", - "summary": "Create a new API key.", - "return_type": "api_key", + "path": "/v3/branding-colors/dark/{reference}", + "summary": "Get dark theme branding color.", + "return_type": "dark_theme_color", "return_info": { "self": true, "custom": false, - "type": "api_key" + "type": "dark_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -13861,123 +27873,152 @@ "etag", "type", "filter", - "id", - "created_at", - "updated_at", - "key", - "creation_time", - "last_login_time", - "account_id" + "color", + "updated_at" ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "createApiKey", + "group_id": "Branding", + "operation_id": "getDarkColor", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "create" + "_key": "read" }, { - "description": "Delete the API key.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Update a dark theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"#f3f93e\" }'\n```", "field_renames": [], "fields": [ { - "name": "apikey_id", + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", "in": "path", - "description": "The ID of the API key to delete.", "required": true, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" + }, + { "type": "string", - "entity_fieldname": "id", - "api_fieldname": "apikey_id", - "external_param": false, - "parameter_fieldname": "apikey_id", - "_key": "id" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" } ], - "method": "delete", - "mode": "delete", + "method": "put", + "mode": "update", "responses": [ { - "description": "Deleted successfully.", - "_key": "204" - }, - { - "description": "Authentication failure.", + "description": "Color has been set successfully.", "schema": { "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "_key": "color" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always 'branding_color'", + "readOnly": true, "enum": [ - "error" + "branding_color" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_color" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Error in input data format.", "schema": { "type": "object", "required": [ @@ -14047,10 +28088,10 @@ } ] }, - "_key": "403" + "_key": "400" }, { - "description": "The API key with the specified ID does not exist.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -14120,299 +28161,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/api-keys/{apikey_id}", - "summary": "Delete API key.", - "return_type": "api_key", - "return_info": { - "self": true, - "custom": false, - "type": "api_key" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "deleteApiKey", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve API keys in an array, optionally filtered by the owner.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "api_key_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "etag", - "id", - "key", - "name", - "object" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "_key": "creation_time" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "_key": "last_login_time" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always 'api-key'", - "enum": [ - "api-key" - ], - "_key": "object" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "_key": "status" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - } - ], - "description": "Represents an API key in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "api_key" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "api_key" - } - }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -14482,10 +28234,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Color not found.", "schema": { "type": "object", "required": [ @@ -14555,202 +28307,243 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/api-keys", - "summary": "Get all API keys.", - "return_type": "paginated_response(api_key)", + "path": "/v3/branding-colors/dark/{reference}", + "summary": "Updates a dark theme branding color.", + "return_type": "dark_theme_color", "return_info": { "self": true, "custom": false, - "type": "api_key" - }, - "x_filter": { - "key": [ - "eq" - ], - "owner": [ - "eq" - ] + "type": "dark_theme_color" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", - "filter", - "total_count", - "has_more", - "data", - "key__eq", - "owner__eq" + "filter" ], - "foreign_key_priority": "self", - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "getAllApiKeys", - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "api_key" - }, + "group_id": "Branding", + "operation_id": "setDarkColor", + "additional_operations": [ + { + "operation_id": "bulkSetDarkColors", + "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." + } + ], + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "readOnly": false, + "required": false, + "_key": "color" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "readOnly": false, + "required": false, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" }, { - "description": "Retrieve API key details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "User interface configuration - colors" + ], + "group_id": "Branding", + "_key": "dark_theme_color" + }, + { + "swagger_models": [ + "BrandingImage", + "BrandingImageList" + ], + "primary_key_field": "reference", + "methods": [ + { + "description": "Revert an account branding image to dark theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], - "fields": [], - "method": "get", - "mode": "me", + "fields": [ + { + "is_primary_key": true, + "_override": true, + "type": "string", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "name": "reference", + "in": "path", + "description": "Name of the branding images (icon or picture).", + "required": true, + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" + } + ], + "method": "post", + "mode": "delete", "responses": [ { - "description": "Successful operation.", + "description": "Image reverted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ - "etag", - "id", - "key", - "name", - "object" + "code", + "message", + "object", + "request_id", + "type" ], "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, { "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", - "description": "A list of group IDs this API key belongs to.", + "description": "Request fields which failed validation.", "items": { - "type": "string" + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" + "_key": "fields" }, { "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name, always `error`.", "enum": [ - "api-key" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "description": "Represents an API key in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_api_key" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -14820,10 +28613,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -14893,16 +28686,16 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/api-keys/me", - "summary": "Get API key details.", - "return_type": "api_key", + "path": "/v3/branding-images/dark/{reference}/clear", + "summary": "Revert an image to dark theme default.", + "return_type": "dark_theme_image", "return_info": { "self": true, "custom": false, - "type": "api_key" + "type": "dark_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -14910,108 +28703,30 @@ "object", "etag", "type", - "filter", - "id", - "created_at", - "updated_at", - "key", - "name", - "groups", - "owner", - "status", - "creation_time", - "last_login_time", - "account_id" + "filter" ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "getMyApiKey", - "notes": "This is provided by the SDK to avoid listing to retrieve the user's own API Key.", + "group_id": "Branding", + "operation_id": "clearDarkImage", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "me" + "_key": "delete" }, { - "description": "Retrieve groups associated with the API key.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve metadata for all dark theme branding images.\n\n**Example:**\n`curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { + "is_primary_key": true, + "_override": true, "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "apikey_id", - "in": "path", - "description": "The ID of the API key.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "apikey_id", - "external_param": false, - "parameter_fieldname": "apikey_id", - "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "api_key_order_enum", - "_key": "order" + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" } ], "method": "get", - "mode": "policy_groups", + "mode": "list", "responses": [ { "description": "Successful operation.", @@ -15028,15 +28743,10 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", "_key": "after" }, { @@ -15044,84 +28754,82 @@ "description": "A list of entities.", "items": { "type": "object", - "required": [ - "account_id", - "apikey_count", - "etag", - "id", - "name", - "object", - "user_count" - ], "properties": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "integer", - "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "_key": "id" + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "_key": "object" }, { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "_key": "name" + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "_key": "reference" }, { "type": "string", - "description": "Entity name: always `group`.", - "enum": [ - "group" - ], - "_key": "object" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "_key": "static_uri" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", + "description": "Last update time in UTC.", + "readOnly": true, "_key": "updated_at" - }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "_key": "user_count" } ], - "description": "This object contains basic information about groups.", "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" + "group": "Branding", + "entity": "dark_theme_image" } }, "api_fieldname": "data", @@ -15140,15 +28848,9 @@ "type": "integer", "format": "int32", "example": 50, - "description": "The number of results to return (2-1000). Default 50.", + "description": "The number of results to return, or equal to `total_count`.", "api_fieldname": "limit", "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", "_key": "limit" }, { @@ -15163,20 +28865,13 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", "enum": [ "ASC", "DESC" ], "api_fieldname": "order", "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "subtenant_user_order_enum", "_key": "order" }, { @@ -15191,8 +28886,8 @@ ], "pagination": true, "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" + "group": "Branding", + "entity": "dark_theme_image" } }, "_key": "200" @@ -15342,88 +29037,15 @@ ] }, "_key": "403" - }, - { - "description": "An API key with the given ID does not exist.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" } ], - "path": "/v3/api-keys/{apikey_id}/groups", - "summary": "Get groups of the API key.", - "return_type": "paginated_response(policy_group)", + "path": "/v3/branding-images/dark", + "summary": "Get metadata of all dark theme images.", + "return_type": "paginated_response(dark_theme_image)", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "policy_group" + "type": "dark_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -15432,38 +29054,80 @@ "etag", "type", "filter", + "limit", + "after", + "order", "total_count", "has_more", "data" ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "getGroupsOfApikey", + "foreign_key_priority": "self", + "group_id": "Branding", + "operation_id": "getAllDarkImageData", + "pagination": true, "foreign_key": { - "entity": "policy_group" + "group": "Branding", + "entity": "dark_theme_image" }, - "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "policy_groups" + "_key": "list" }, { - "description": "Retrieve API key details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve metadata for one account dark theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", "in": "path", "required": true, - "_key": "id" + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" } ], "method": "get", @@ -15473,139 +29137,90 @@ "description": "Successful operation.", "schema": { "type": "object", - "required": [ - "etag", - "id", - "key", - "name", - "object" - ], "properties": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'branding_image'", + "readOnly": true, "enum": [ - "api-key" + "branding_image" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "_key": "owner" + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", + "description": "Last update time in UTC.", + "readOnly": true, "api_fieldname": "updated_at", "entity_fieldname": "updated_at", "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { - "group": "Accounts", - "entity": "subtenant_api_key" + "group": "Branding", + "entity": "subtenant_light_theme_image" } }, "_key": "200" @@ -15757,7 +29372,7 @@ "_key": "403" }, { - "description": "API key with the specified ID does not exist.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -15830,13 +29445,13 @@ "_key": "404" } ], - "path": "/v3/api-keys/{apikey_id}", - "summary": "Get API key details.", - "return_type": "api_key", + "path": "/v3/branding-images/dark/{reference}", + "summary": "Get metadata of a dark theme image.", + "return_type": "dark_theme_image", "return_info": { "self": true, "custom": false, - "type": "api_key" + "type": "dark_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -15845,243 +29460,194 @@ "etag", "type", "filter", - "created_at", - "updated_at", - "key", - "name", - "groups", - "owner", - "status", - "creation_time", - "last_login_time", - "account_id" + "static_uri", + "updated_at" ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "getApiKey", + "group_id": "Branding", + "operation_id": "getDarkImageData", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "read" }, { - "description": "Update API key details.\n\n**Example:**\n`curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestApiKey25\"}'\n```", + "description": "Upload a new account branding image as form data in the dark theme in PNG or JPEG format.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", - "in": "path", - "required": true, - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "body", + "in": "stream", + "name": "image", + "description": "The image in PNG or JPEG format as multipart form data.", "required": true, - "_key": "name" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", - "in": "body", - "required": false, - "_key": "owner" + "type": "file", + "entity_fieldname": "image", + "api_fieldname": "image", + "external_param": true, + "parameter_fieldname": "image", + "_key": "image" }, { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", "enum": [ - "ACTIVE", - "INACTIVE" + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" ], - "api_fieldname": "status", - "entity_fieldname": "status", - "parameter_fieldname": "status", - "in": "body", - "required": false, - "enum_reference": "api_key_status_enum", - "_key": "status" + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" } ], - "method": "put", + "method": "post", "mode": "update", "responses": [ { - "description": "Successful operation.", + "description": "Image uploaded successfully.", + "headers": [ + { + "type": "string", + "description": "Location of the image metadata.", + "_key": "Content-Location" + }, + { + "type": "string", + "description": "Location of the image binary.", + "_key": "Location" + } + ], "schema": { "type": "object", - "required": [ - "etag", - "id", - "key", - "name", - "object" - ], "properties": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'branding_image'", + "readOnly": true, "enum": [ - "api-key" + "branding_image" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "_key": "owner" + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", + "description": "Last update time in UTC.", + "readOnly": true, "api_fieldname": "updated_at", "entity_fieldname": "updated_at", "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { - "group": "Accounts", - "entity": "subtenant_api_key" + "group": "Branding", + "entity": "subtenant_light_theme_image" } }, - "_key": "200" + "_key": "201" }, { - "description": "Error in input data, for example, missing display name.", + "description": "Error in input data format, for example, image is too large.", "schema": { "type": "object", "required": [ @@ -16300,7 +29866,7 @@ "_key": "403" }, { - "description": "The API key with the specified ID does not exist.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -16373,13 +29939,13 @@ "_key": "404" } ], - "path": "/v3/api-keys/{apikey_id}", - "summary": "Update API key details.", - "return_type": "api_key", + "path": "/v3/branding-images/dark/{reference}/upload-multipart", + "summary": "Upload a dark theme image.", + "return_type": "dark_theme_image", "return_info": { "self": true, "custom": false, - "type": "api_key" + "type": "dark_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -16388,642 +29954,419 @@ "etag", "type", "filter", - "created_at", - "updated_at", - "key", - "creation_time", - "last_login_time", - "account_id" + "static_uri", + "updated_at" ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "updateApiKey", + "group_id": "Branding", + "operation_id": "uploadDarkImageMultipart", "additional_operations": [ { - "operation_id": "updateMyApiKey", - "notes": "After retrieving the resource using the `me` method, it can modified using using this SDK method." + "operation_id": "uploadDarkImage", + "notes": "The multipart endpoint is used by the SDKs as it offers the same functionality as the standard upload endpoint." } ], "pagination": false, - "request_content_type": "application/json", - "request_body": "json", + "request_content_type": "multipart/form-data", + "request_body": "file", "_key": "update" } ], "fields": [ { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "readOnly": true, - "required": false, - "_key": "creation_time" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", "readOnly": false, "required": false, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" }, { "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "readOnly": true, - "required": false, - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", "readOnly": true, + "api_fieldname": "static_uri", "required": false, - "_key": "last_login_time" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "readOnly": false, - "required": true, - "_key": "name" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "readOnly": false, - "required": false, - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "readOnly": false, - "required": false, - "enum_reference": "api_key_status_enum", - "_key": "status" + "_key": "static_uri" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", + "description": "Last update time in UTC.", "readOnly": true, + "api_fieldname": "updated_at", "required": false, "_key": "updated_at" } ], "field_renames": [], "tags": [ - "Account - API keys" + "User interface configuration - images" ], - "group_id": "Accounts", - "_key": "api_key" + "group_id": "Branding", + "_key": "dark_theme_image" }, { "swagger_models": [ - "CampaignDeviceMetadata" + "DeveloperCertificateRequestData", + "DeveloperCertificateResponseData", + "TrustedCertificateResp" ], "primary_key_field": "id", "methods": [ { - "description": "Get update campaign metadata.", + "description": "Create a developer certificate (a certificate that can be flashed to multiple devices to connect to the bootstrap server).\n\n**Note:** The number of developer certificates allowed per account is limited. Please see [Setting up a Certificate Authority](https://www.pelion.com/docs/device-management/current/provisioning-process/integrating-with-a-third-party-ca.html).\n\n**Example:**\n```\ncurl -X POST http://api.us-east-1.mbedcloud.com/v3/developer-certificates \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\" \\\n-d { \"name\": \"\", \"description\": \"\" }\n```", "field_renames": [ { - "api_fieldname": "campaign", - "_key": "campaign_id" + "api_fieldname": "developer_certificate", + "_key": "certificate" } ], "fields": [ { "type": "string", - "description": "The device's campaign ID", - "example": "015bf72fccda00000000000100100280", - "api_fieldname": "campaign", - "entity_fieldname": "campaign_id", - "parameter_fieldname": "campaign_id", - "in": "path", - "required": true, - "_key": "campaign_id" + "description": "Description for the developer certificate.", + "x-nullable": true, + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { "type": "string", - "description": "The metadata record ID", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "campaign_device_metadata_id", - "in": "path", + "description": "Name of the developer certificate.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", "required": true, - "_key": "id" + "_key": "name" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "create", "responses": [ { - "description": "Request successful", + "description": "Developer certificate created successfully.", "schema": { "type": "object", "properties": [ { "type": "string", - "description": "The device's campaign ID", - "example": "015bf72fccda00000000000100100280", - "api_fieldname": "campaign", - "entity_fieldname": "campaign_id", - "_key": "campaign" + "description": "Account to which the developer certificate belongs.", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", "format": "date-time", - "description": "The time the campaign was created", - "example": "2017-05-22T12:37:55.576563Z", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, - { - "description": "The state of the update campaign on the device", - "enum": [ - "pending", - "updated_connector_channel", - "failed_connector_channel_update", - "deployed", - "manifestremoved", - "deregistered" - ], - "type": "string", - "api_fieldname": "deployment_state", - "entity_fieldname": "deployment_state", - "_key": "deployment_state" - }, { "type": "string", - "maxLength": 2000, - "description": "Description", - "example": "", + "description": "Description for the developer certificate.", + "x-nullable": true, "api_fieldname": "description", "entity_fieldname": "description", "_key": "description" }, { "type": "string", - "description": "The device ID", - "example": "015c2fec9bba0000000000010010036f", - "api_fieldname": "device_id", - "entity_fieldname": "device_id", - "_key": "device_id" - }, - { - "type": "string", - "description": "API resource entity version", - "example": "2017-05-22T12:37:58.753425Z", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The metadata record ID", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "description": "How the firmware is delivered (connector or direct)", - "example": "connector", - "api_fieldname": "mechanism", - "entity_fieldname": "mechanism", - "_key": "mechanism" - }, - { - "type": "string", - "description": "The Device Management Connect URL", - "example": "", - "api_fieldname": "mechanism_url", - "entity_fieldname": "mechanism_url", - "_key": "mechanism_url" - }, - { - "type": "string", - "maxLength": 128, - "description": "The record name", - "example": "default_object_name", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "PEM-format X.509 developer certificate.", + "api_fieldname": "developer_certificate", + "entity_fieldname": "certificate", + "_key": "developer_certificate" }, { "type": "string", - "description": "The entity name: always 'update-campaign-device-metadata'", - "example": "update-campaign-device-metadata", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "PEM-format developer private key associated with the certificate.", + "api_fieldname": "developer_private_key", + "entity_fieldname": "developer_private_key", + "_key": "developer_private_key" }, - { - "type": "string", - "format": "date-time", - "description": "The record was modified in the database format: date-time", - "example": "2017-05-22T12:37:58.776736Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_device_metadata" - } - }, - "_key": "200" - }, - { - "description": "Unauthorized", - "_key": "401" - }, - { - "description": "Not Found", - "_key": "404" - } - ], - "path": "/v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id}/", - "summary": "Get a campaign device metadata", - "return_type": "campaign_device_metadata", - "return_info": { - "self": true, - "custom": false, - "type": "campaign_device_metadata" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "deployment_state", - "description", - "device_id", - "mechanism", - "mechanism_url", - "name", - "updated_at" - ], - "group_id": "Device_Update", - "parameter_map": { - "campaign_device_metadata_id": "id" - }, - "operation_id": "Update_Campaign_Metadata_retrieve", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "description": "The device's campaign ID", - "example": "015bf72fccda00000000000100100280", - "api_fieldname": "campaign", - "readOnly": false, - "required": true, - "_key": "campaign_id" - }, - { - "type": "string", - "format": "date-time", - "description": "The time the campaign was created", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "description": "The state of the update campaign on the device", - "enum": [ - "pending", - "updated_connector_channel", - "failed_connector_channel_update", - "deployed", - "manifestremoved", - "deregistered" - ], - "type": "string", - "api_fieldname": "deployment_state", - "readOnly": true, - "required": false, - "enum_reference": "campaign_device_metadata_deployment_state_enum", - "_key": "deployment_state" - }, - { - "type": "string", - "maxLength": 2000, - "description": "Description", - "example": "", - "api_fieldname": "description", - "readOnly": true, - "required": false, - "_key": "description" - }, - { - "type": "string", - "description": "The device ID", - "example": "015c2fec9bba0000000000010010036f", - "api_fieldname": "device_id", - "readOnly": true, - "required": false, - "_key": "device_id" - }, - { - "type": "string", - "description": "The metadata record ID", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "string", - "description": "How the firmware is delivered (connector or direct)", - "example": "connector", - "api_fieldname": "mechanism", - "readOnly": true, - "required": false, - "_key": "mechanism" - }, - { - "type": "string", - "description": "The Device Management Connect URL", - "example": "", - "api_fieldname": "mechanism_url", - "readOnly": true, - "required": false, - "_key": "mechanism_url" - }, - { - "type": "string", - "maxLength": 128, - "description": "The record name", - "example": "default_object_name", - "api_fieldname": "name", - "readOnly": true, - "required": false, - "_key": "name" - }, - { - "type": "string", - "format": "date-time", - "description": "The record was modified in the database format: date-time", - "example": "2017-05-22T12:37:58.776736Z", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [ - { - "api_fieldname": "campaign", - "_key": "campaign_id" - } - ], - "tags": [], - "group_id": "Device_Update", - "_key": "campaign_device_metadata" - }, - { - "swagger_models": [ - "EventTypeList", - "EventTypeSummary", - "EventTypeSummaryList" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Get a list of events grouped by summary", - "field_renames": [], - "fields": [ - { - "description": "The campaign ID", - "in": "path", - "name": "campaign_id", - "required": true, - "type": "string", - "entity_fieldname": "campaign_id", - "api_fieldname": "campaign_id", - "external_param": false, - "parameter_fieldname": "campaign_id", - "_key": "campaign_id" + { + "type": "string", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "ID that uniquely identifies the developer certificate.", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "developerCertificateId", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "description": "Name of the developer certificate.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `trusted-cert`.", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "description": "Content of the `security.c` file flashed to the device to provide security credentials.", + "api_fieldname": "security_file_content", + "entity_fieldname": "security_file_content", + "_key": "security_file_content" + } + ], + "foreign_key": { + "group": "Security", + "entity": "subtenant_trusted_certificate" + } + }, + "examples": [ + { + "object": "trusted-cert", + "id": "015fee4431fd38c98640fbfb00000000", + "etag": "1", + "created_at": "2017-12-11T14:22:20.009Z", + "account_id": "015fee5d9b3538c98640fbfb00000000", + "name": "DeveloperCertificate", + "description": "This certificate will be used with multiple developer devices.", + "developer_certificate": "-----BEGIN CERTIFICATE-----\\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\\nzhNupQ==\\n-----END CERTIFICATE-----\\n", + "developer_private_key": "-----BEGIN PRIVATE KEY-----\\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\\nQTuqnIv2\\n-----END PRIVATE KEY-----\\n", + "security_file_content": "/*\\n * Copyright (c) 2017 ARM Limited. All rights reserved.\\n * SPDX-License-Identifier: Apache-2.0\\n * Licensed under the Apache License, Version 2.0 (the License); you may\\n * not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\\n\\n#include \\n\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \\\"0161dbbcdd660a580a010c3403c00000\\\";\\nconst char MBED_CLOUD_DEV_ACCOUNT_ID[] = \\\"015843e32ec902420a015e0700000000\\\";\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \\\"coaps://coap-integration-lab.dev.mbed.com:5684?aid=015843e32ec902420a015e0700000000\\\";\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,\\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\\n 0x91, 0x07, 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\\n 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30, 0x15,\\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\\n 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12, 0x30,\\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,\\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\\n 0x4c, 0x74, 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, 0x30, 0x31,\\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\\n 0x63, 0x39, 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\\n 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, 0x62, 0x62,\\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\\n 0x38, 0x30, 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\\n 0x32, 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x30, 0x32,\\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\\n 0x5a, 0x30, 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47,\\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\\n 0x04, 0x08, 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69,\\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\\n 0x55, 0x04, 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10,\\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\\n 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04,\\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\\n 0x33, 0x65, 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, 0x31, 0x35,\\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, 0x30, 0x31,\\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\\n 0x36, 0x36, 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, 0x30, 0x33,\\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\\n 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\\n 0x04, 0x44, 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, 0x3d, 0xa3,\\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\\n 0xb7, 0x91, 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, 0x7a, 0x3f,\\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\\n 0x13, 0xa8, 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, 0x9c, 0x8b,\\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\\n 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, 0x40, 0x00,\\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, 0x0d, 0x8e,\\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\\n 0x42, 0x5c, 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, 0xa7, 0x76,\\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\\n 0xb1, 0x83, 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, 0x34, 0x1d,\\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\\n 0xce, 0x13, 0x6e, 0xa5 };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x5c,\\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, 0x43,\\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\\n 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x41, 0x30,\\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, 0x31,\\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\\n 0x18, 0x0f, 0x32, 0x30, 0x35, 0x32, 0x30, 0x35,\\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, 0x30,\\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\\n 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42,\\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,\\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\\n 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69, 0x72,\\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,\\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10, 0x30,\\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,\\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\\n 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,\\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, 0x6e,\\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\\n 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74,\\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, 0x30,\\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,\\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\\n 0xe0, 0x57, 0x4e, 0x1b, 0xac, 0x29, 0x82, 0xea,\\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, 0xbc,\\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\\n 0xfa, 0x41, 0xf8, 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, 0x78,\\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\\n 0x6f, 0x57, 0x04, 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x03,\\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\\n 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,\\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\\n 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xef, 0x69,\\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, 0xb8,\\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\\n 0x39, 0x30, 0x10, 0x06, 0x09, 0x2b, 0x06, 0x01,\\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03,\\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\\n 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03,\\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xa2,\\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\\n 0xf5, 0x71, 0x86, 0x33, 0x29, 0x05, 0x4c, 0xf9,\\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, 0x5c,\\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\\n 0x20, 0x3e, 0xfe, 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, 0x26,\\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\\n 0x44, 0x36, 0xf9, 0x74, 0xa1, 0x82, 0x76, 0x7a,\\n 0x6e };\\n\\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x26,\\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, 0x4a,\\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x18, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\\n 0x4d, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d,\\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, 0x30,\\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\\n 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x32, 0x31,\\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, 0x6f,\\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\\n 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30,\\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0e,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12,\\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,\\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\\n 0x67, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,\\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, 0x4d,\\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\\n 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x41,\\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x67,\\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\\n 0x57, 0x4d, 0x32, 0x4d, 0x20, 0x43, 0x41, 0x30,\\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\\n 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42,\\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, 0xf0,\\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\\n 0xa9, 0x29, 0xa1, 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, 0x2c,\\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\\n 0x14, 0x24, 0xb1, 0xfb, 0x16, 0x34, 0x0e, 0x43,\\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, 0xaa,\\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\\n 0xa0, 0xc5, 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b,\\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03,\\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\\n 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,\\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03,\\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\\n 0xa1, 0xa5, 0x94, 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, 0x9a,\\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\\n 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,\\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, 0x11,\\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\\n 0x13, 0x30, 0x52, 0x77, 0xaa, 0xda, 0xda, 0xcb,\\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, 0xfa,\\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\\n 0xb1, 0x67, 0x6b, 0x69, 0x07, 0x0e, 0xcd, 0x77,\\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, 0xc0,\\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\\n 0x70, 0x98, 0xb9, 0x1e };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = \\n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\\n 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,\\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\\n 0x01, 0x01, 0x04, 0x20, 0x78, 0xa7, 0x3d, 0xed,\\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, 0x46,\\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\\n 0xb3, 0xc0, 0x00, 0x98, 0x22, 0xcf, 0x3c, 0x38,\\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, 0x08,\\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\\n 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x44, 0x9c,\\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, 0x4d,\\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\\n 0x16, 0xcb, 0x48, 0x72, 0x4f, 0xb7, 0x91, 0x36,\\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, 0xe5,\\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\\n 0xd7, 0xbd, 0xa4, 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, 0xec,\\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\\n\\nconst char MBED_CLOUD_DEV_MANUFACTURER[] = \\\"dev_manufacturer\\\";\\n\\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \\\"dev_model_num\\\";\\n\\nconst char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \\\"0\\\";\\n\\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] = \\\"dev_device_type\\\";\\n\\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = \\\"dev_hardware_version\\\";\\n\\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB = 0;\\n\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\\n\\n#endif //__MBED_CLOUD_DEV_CREDENTIALS_H__\\n", + "_key": "Success" + } + ], + "_key": "201" }, { - "description": "The summary status. For example, fail", - "in": "path", - "name": "summary_status_id", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "summary_status_id", - "external_param": false, - "parameter_fieldname": "summary_status_id", - "_key": "id" - } - ], - "method": "get", - "mode": "events", - "responses": [ - { - "description": "OK", + "description": "Bad request.", "schema": { "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "string", - "description": "The entity ID to fetch after the given one", - "example": "null", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "_key": "campaign_id" - }, - { - "type": "integer", - "example": 10, - "_key": "count" - }, - { - "type": "string", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "_key": "created_at" - }, - { - "type": "string", - "example": "Update error, nonspecific network error", - "_key": "description" - }, - { - "type": "string", - "example": "UPD4_FAIL_101", - "_key": "event_type" - }, - { - "type": "string", - "example": "upd_fail_101", - "_key": "id" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "example": "event-type", - "_key": "object" - }, + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "examples": [ + { + "object": "error", + "code": 400, + "type": "validation_error", + "message": "Bad Request. Missing certificate name.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "fields": { + "name": "name", + "message": "Missing certificate name." + }, + "_key": "Bad Request Error" + } + ], + "_key": "400" + }, + { + "description": "Invalid access token.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ { "type": "string", - "example": "FAIL", - "_key": "summary_status" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "example": "fail", - "_key": "summary_status_id" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics_events" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "description": "A flag indicating whether there are more results", - "example": "false", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "description": "The number of results to return, (range: 2-1000), or equals to total_count", - "example": "50", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "The entity name: always 'list'", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "description": "The total number or records, if requested. It may be returned also for small lists.", - "example": "1", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics_events" - } + ] }, - "_key": "200" + "examples": [ + { + "object": "error", + "code": 401, + "type": "invalid_auth", + "message": "Invalid access token.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "_key": "Authentication Error" + } + ], + "_key": "401" }, { - "description": "Not Authenticated", + "description": "The maximum number of developer certificates for the given account has already been reached.", "schema": { "type": "object", "required": [ @@ -17093,10 +30436,24 @@ } ] }, - "_key": "401" + "examples": [ + { + "object": "error", + "code": 403, + "type": "account_limit_exceeded", + "message": "Forbidden. Limit for the number of certificates exceeded.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "fields": { + "name": "cert-count", + "message": "10" + }, + "_key": "Account Limit Exceeded Error" + } + ], + "_key": "403" }, { - "description": "Not Found", + "description": "Certificate with the given name already exists.", "schema": { "type": "object", "required": [ @@ -17166,16 +30523,30 @@ } ] }, - "_key": "404" + "examples": [ + { + "object": "error", + "code": 409, + "type": "duplicate", + "message": "Conflict. Certificate already exists.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "fields": { + "name": "certificate", + "message": "Certificate already exists." + }, + "_key": "Duplicate Error" + } + ], + "_key": "409" } ], - "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/", - "summary": "Get a list of events grouped by summary", - "return_type": "paginated_response(campaign_statistics_events)", + "path": "/v3/developer-certificates", + "summary": "Create a new developer certificate to connect to the bootstrap server.", + "return_type": "developer_certificate", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "campaign_statistics_events" + "type": "developer_certificate" }, "x_filter": {}, "x_deprecation": null, @@ -17184,176 +30555,127 @@ "etag", "type", "filter", - "order", - "limit", - "after", - "has_more", - "total_count", - "data" + "id", + "created_at", + "account_id", + "developer_private_key", + "security_file_content", + "certificate" ], - "group_id": "Device_Update", + "group_id": "Security", "parameter_map": { - "summary_status_id": "id" - }, - "operation_id": "Update_Campaign_event_types_list", - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics_events" + "developerCertificateId": "id" }, + "operation_id": "createDeveloperCertificate", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "events" + "_key": "create" }, { - "description": "Get a list of statistics for a campaign", - "field_renames": [], + "description": "Delete a trusted certificate.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [ + { + "api_fieldname": "developer_certificate", + "_key": "certificate" + } + ], "fields": [ { - "description": "The campaign ID", + "name": "cert_id", "in": "path", - "name": "campaign_id", + "description": "The ID of the trusted certificate to delete.", "required": true, "type": "string", - "entity_fieldname": "campaign_id", - "api_fieldname": "campaign_id", + "entity_fieldname": "id", + "api_fieldname": "cert_id", "external_param": false, - "parameter_fieldname": "campaign_id", - "_key": "campaign_id" + "parameter_fieldname": "cert_id", + "_key": "id" } ], - "method": "get", - "mode": "list", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "OK", + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "string", - "description": "The entity ID to fetch after the given one", - "example": "null", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "_key": "campaign_id" - }, - { - "type": "integer", - "example": 10, - "_key": "count" - }, - { - "type": "string", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "_key": "created_at" - }, - { - "type": "string", - "enum": [ - "fail", - "success", - "info", - "skipped" - ], - "example": "fail", - "description": "ID of the event type description", - "_key": "id" - }, - { - "type": "string", - "example": "summary_status", - "_key": "object" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "enum": [ - "FAIL", - "SUCCESS", - "INFO", - "SKIPPED" - ], - "example": "FAIL", - "description": "The event type description.", - "_key": "summary_status" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "description": "A flag indicating whether there are more results", - "example": "false", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "description": "The number of results to return, (range: 2-1000), or equals to total_count", - "example": "50", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "The entity name: always 'list'", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "description": "The total number or records, if requested. It may be returned also for small lists.", - "example": "1", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics" - } + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Not Authenticated", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -17423,10 +30745,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not Found", + "description": "A certificate not found.", "schema": { "type": "object", "required": [ @@ -17499,13 +30821,13 @@ "_key": "404" } ], - "path": "/v3/update-campaigns/{campaign_id}/statistics/", - "summary": "Get a list of statistics for a campaign", - "return_type": "paginated_response(campaign_statistics)", + "path": "/v3/trusted-certificates/{cert_id}", + "summary": "Delete a trusted certificate by ID.", + "return_type": "developer_certificate", "return_info": { "self": true, "custom": false, - "type": "campaign_statistics" + "type": "developer_certificate" }, "x_filter": {}, "x_deprecation": null, @@ -17513,139 +30835,252 @@ "object", "etag", "type", - "filter", - "order", - "limit", - "after", - "has_more", - "total_count", - "data" + "filter" ], - "foreign_key_priority": "self", - "group_id": "Device_Update", + "group_id": "Security", "parameter_map": { - "summary_status_id": "id" - }, - "operation_id": "Update_Campaign_statistics_list", - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics" + "developerCertificateId": "id", + "cert_id": "id" }, + "operation_id": "deleteCertificate", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "delete" }, { - "description": "Get a summary status", - "field_renames": [], - "fields": [ + "description": "Retrieve a trusted certificate.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [ { - "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "entity_fieldname": "campaign_id", - "parameter_fieldname": "campaign_id", - "in": "path", - "required": true, - "_key": "campaign_id" - }, + "api_fieldname": "developer_certificate", + "_key": "certificate" + } + ], + "fields": [ { "type": "string", - "enum": [ - "fail", - "success", - "info", - "skipped" - ], - "example": "fail", - "description": "ID of the event type description", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "summary_status_id", + "parameter_fieldname": "cert_id", "in": "path", "required": true, - "enum_reference": "campaign_statistics_id_enum", "_key": "id" } ], "method": "get", - "mode": "read", + "mode": "get_trusted_certificate_info", "responses": [ { - "description": "OK", + "description": "Successful operation.", "schema": { "type": "object", + "required": [ + "account_id", + "certificate", + "certificate_fingerprint", + "etag", + "id", + "issuer", + "name", + "object", + "service", + "subject", + "validity" + ], "properties": [ { "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "entity_fieldname": "campaign_id", - "_key": "campaign_id" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "type": "integer", - "example": 10, - "api_fieldname": "count", - "entity_fieldname": "count", - "_key": "count" + "type": "string", + "example": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----", + "description": "X509.v3 trusted certificate in PEM format.", + "api_fieldname": "certificate", + "entity_fieldname": "certificate", + "_key": "certificate" + }, + { + "type": "string", + "example": "a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1", + "description": "A SHA-256 fingerprint of the certificate.", + "api_fieldname": "certificate_fingerprint", + "entity_fieldname": "certificate_fingerprint", + "_key": "certificate_fingerprint" }, { "type": "string", "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { "type": "string", - "enum": [ - "fail", - "success", - "info", - "skipped" - ], - "example": "fail", - "description": "ID of the event type description", + "maxLength": 500, + "x-nullable": true, + "example": "Certificate created by me.", + "description": "Human readable description of this certificate.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "Device execution mode where 1 means a developer certificate.", + "api_fieldname": "device_execution_mode", + "entity_fieldname": "device_execution_mode", + "_key": "device_execution_mode" + }, + { + "type": "boolean", + "example": false, + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, + "api_fieldname": "enrollment_mode", + "entity_fieldname": "enrollment_mode", + "_key": "enrollment_mode" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, { "type": "string", - "example": "summary_status", + "example": "CN=issuer", + "description": "Issuer of the certificate.", + "api_fieldname": "issuer", + "entity_fieldname": "issuer", + "_key": "issuer" + }, + { + "type": "string", + "maxLength": 100, + "example": "My certificate", + "description": "Certificate name.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'trusted-cert'", + "enum": [ + "trusted-cert" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, + { + "x-nullable": true, + "type": "string", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the owner.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner_id", + "entity_fieldname": "owner_id", + "_key": "owner_id" + }, { "type": "string", + "description": "Service name where the certificate is used.", "enum": [ - "FAIL", - "SUCCESS", - "INFO", - "SKIPPED" + "lwm2m", + "bootstrap" ], - "example": "FAIL", - "description": "The event type description.", - "api_fieldname": "summary_status", - "entity_fieldname": "summary_status", - "_key": "summary_status" + "api_fieldname": "service", + "entity_fieldname": "service", + "_key": "service" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "Status of the certificate.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "example": "CN=subject", + "description": "Subject of the certificate.", + "api_fieldname": "subject", + "entity_fieldname": "subject", + "_key": "subject" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + }, + { + "type": "boolean", + "example": true, + "description": "This read-only flag indicates whether the certificate is valid or not.", + "readOnly": true, + "api_fieldname": "valid", + "entity_fieldname": "valid", + "_key": "valid" + }, + { + "type": "string", + "format": "date-time", + "example": "2038-02-14T15:24:14Z", + "description": "Expiration time in UTC formatted as RFC3339.", + "api_fieldname": "validity", + "entity_fieldname": "validity", + "_key": "validity" } ], + "description": "Represents a trusted certificate in responses.", "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics" + "group": "Security", + "entity": "developer_certificate" } }, "_key": "200" }, { - "description": "Not Authenticated", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -17718,7 +31153,80 @@ "_key": "401" }, { - "description": "Not Found", + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "A certificate not found.", "schema": { "type": "object", "required": [ @@ -17791,13 +31299,13 @@ "_key": "404" } ], - "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}", - "summary": "Get a summary status", - "return_type": "campaign_statistics", + "path": "/v3/trusted-certificates/{cert_id}", + "summary": "Get a trusted certificate.", + "return_type": "trusted_certificate", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "campaign_statistics" + "type": "trusted_certificate" }, "x_filter": {}, "x_deprecation": null, @@ -17806,211 +31314,164 @@ "etag", "type", "filter", - "summary_status", - "count", - "created_at" + "created_at", + "updated_at", + "name", + "description", + "account_id", + "owner_id", + "certificate", + "service", + "issuer", + "subject", + "validity", + "status", + "device_execution_mode", + "enrollment_mode", + "certificate_fingerprint", + "valid" ], - "group_id": "Device_Update", + "group_id": "Security", "parameter_map": { - "summary_status_id": "id" + "developerCertificateId": "id", + "cert_id": "id" + }, + "operation_id": "getCertificate", + "unaggregated": true, + "foreign_key": { + "entity": "trusted_certificate", + "group": "Security" }, - "operation_id": "Update_Campaign_statistics_retrieve", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "readOnly": false, - "required": true, - "_key": "campaign_id" - }, - { - "type": "integer", - "example": 10, - "api_fieldname": "count", - "readOnly": true, - "required": false, - "_key": "count" - }, - { - "type": "string", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "enum": [ - "fail", - "success", - "info", - "skipped" - ], - "example": "fail", - "description": "ID of the event type description", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "enum_reference": "campaign_statistics_id_enum", - "_key": "id" + "_key": "get_trusted_certificate_info" }, { - "type": "string", - "enum": [ - "FAIL", - "SUCCESS", - "INFO", - "SKIPPED" + "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", + "field_renames": [ + { + "api_fieldname": "developer_certificate", + "_key": "certificate" + } ], - "example": "FAIL", - "description": "The event type description.", - "api_fieldname": "summary_status", - "readOnly": true, - "required": false, - "enum_reference": "campaign_statistics_summary_status_enum", - "_key": "summary_status" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Device_Update", - "_key": "campaign_statistics" - }, - { - "swagger_models": [ - "EventType" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Get an event type for a campaign", - "field_renames": [], "fields": [ { "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "entity_fieldname": "campaign_id", - "parameter_fieldname": "campaign_id", - "in": "path", - "required": true, - "_key": "campaign_id" - }, - { - "type": "string", - "example": "upd_fail_101", + "description": "ID that uniquely identifies the developer certificate.", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "event_type_id", + "parameter_fieldname": "developerCertificateId", "in": "path", "required": true, "_key": "id" - }, - { - "type": "string", - "example": "fail", - "api_fieldname": "summary_status_id", - "entity_fieldname": "summary_status_id", - "parameter_fieldname": "summary_status_id", - "in": "path", - "required": true, - "_key": "summary_status_id" } ], "method": "get", "mode": "read", "responses": [ { - "description": "OK", + "description": "Developer certificate returned successfully.", "schema": { "type": "object", "properties": [ { "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "entity_fieldname": "campaign_id", - "_key": "campaign_id" - }, - { - "type": "integer", - "example": 10, - "api_fieldname": "count", - "entity_fieldname": "count", - "_key": "count" + "description": "Account to which the developer certificate belongs.", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { "type": "string", - "example": "Update error, nonspecific network error", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "Description for the developer certificate.", + "x-nullable": true, + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "description": "PEM-format X.509 developer certificate.", + "api_fieldname": "developer_certificate", + "entity_fieldname": "developer_certificate", + "_key": "developer_certificate" + }, + { + "type": "string", + "description": "PEM-format developer private key associated with the certificate.", + "api_fieldname": "developer_private_key", + "entity_fieldname": "developer_private_key", + "_key": "developer_private_key" }, { "type": "string", - "example": "UPD4_FAIL_101", - "api_fieldname": "event_type", - "entity_fieldname": "event_type", - "_key": "event_type" + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "example": "upd_fail_101", + "description": "ID that uniquely identifies the developer certificate.", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, { "type": "string", - "example": "event-type", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "Name of the developer certificate.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, { "type": "string", - "example": "FAIL", - "api_fieldname": "summary_status", - "entity_fieldname": "summary_status", - "_key": "summary_status" + "description": "Entity name: always `trusted-cert`.", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", - "example": "fail", - "api_fieldname": "summary_status_id", - "entity_fieldname": "summary_status_id", - "_key": "summary_status_id" + "description": "Content of the `security.c` file flashed to the device to provide security credentials.", + "api_fieldname": "security_file_content", + "entity_fieldname": "security_file_content", + "_key": "security_file_content" } ], "foreign_key": { - "group": "Device_Update", - "entity": "campaign_statistics_events" + "group": "Security", + "entity": "developer_certificate" } }, + "examples": [ + { + "object": "trusted-cert", + "id": "015fee4431fd38c98640fbfb00000000", + "etag": "1", + "created_at": "2017-12-11T14:22:20.009Z", + "account_id": "015fee5d9b3538c98640fbfb00000000", + "name": "DeveloperCertificate", + "description": "This certificate applies to multiple developer devices.", + "developer_certificate": "-----BEGIN CERTIFICATE-----\\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\\nzhNupQ==\\n-----END CERTIFICATE-----\\n", + "developer_private_key": "-----BEGIN PRIVATE KEY-----\\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\\nQTuqnIv2\\n-----END PRIVATE KEY-----\\n", + "security_file_content": "/*\\n * Copyright (c) 2017 ARM Limited. All rights reserved.\\n * SPDX-License-Identifier: Apache-2.0\\n * Licensed under the Apache License, Version 2.0 (the License); you may\\n * not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\\n\\n#include \\n\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \\\"0161dbbcdd660a580a010c3403c00000\\\";\\nconst char MBED_CLOUD_DEV_ACCOUNT_ID[] = \\\"015843e32ec902420a015e0700000000\\\";\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \\\"coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000\\\";\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,\\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\\n 0x91, 0x07, 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\\n 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30, 0x15,\\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\\n 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12, 0x30,\\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,\\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\\n 0x4c, 0x74, 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, 0x30, 0x31,\\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\\n 0x63, 0x39, 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\\n 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, 0x62, 0x62,\\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\\n 0x38, 0x30, 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\\n 0x32, 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x30, 0x32,\\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\\n 0x5a, 0x30, 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47,\\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\\n 0x04, 0x08, 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69,\\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\\n 0x55, 0x04, 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10,\\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\\n 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04,\\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\\n 0x33, 0x65, 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, 0x31, 0x35,\\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, 0x30, 0x31,\\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\\n 0x36, 0x36, 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, 0x30, 0x33,\\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\\n 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\\n 0x04, 0x44, 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, 0x3d, 0xa3,\\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\\n 0xb7, 0x91, 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, 0x7a, 0x3f,\\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\\n 0x13, 0xa8, 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, 0x9c, 0x8b,\\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\\n 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, 0x40, 0x00,\\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, 0x0d, 0x8e,\\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\\n 0x42, 0x5c, 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, 0xa7, 0x76,\\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\\n 0xb1, 0x83, 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, 0x34, 0x1d,\\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\\n 0xce, 0x13, 0x6e, 0xa5 };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x5c,\\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, 0x43,\\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\\n 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x41, 0x30,\\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, 0x31,\\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\\n 0x18, 0x0f, 0x32, 0x30, 0x35, 0x32, 0x30, 0x35,\\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, 0x30,\\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\\n 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42,\\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,\\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\\n 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69, 0x72,\\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,\\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10, 0x30,\\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,\\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\\n 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,\\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, 0x6e,\\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\\n 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74,\\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, 0x30,\\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,\\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\\n 0xe0, 0x57, 0x4e, 0x1b, 0xac, 0x29, 0x82, 0xea,\\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, 0xbc,\\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\\n 0xfa, 0x41, 0xf8, 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, 0x78,\\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\\n 0x6f, 0x57, 0x04, 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x03,\\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\\n 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,\\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\\n 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xef, 0x69,\\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, 0xb8,\\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\\n 0x39, 0x30, 0x10, 0x06, 0x09, 0x2b, 0x06, 0x01,\\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03,\\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\\n 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03,\\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xa2,\\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\\n 0xf5, 0x71, 0x86, 0x33, 0x29, 0x05, 0x4c, 0xf9,\\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, 0x5c,\\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\\n 0x20, 0x3e, 0xfe, 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, 0x26,\\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\\n 0x44, 0x36, 0xf9, 0x74, 0xa1, 0x82, 0x76, 0x7a,\\n 0x6e };\\n\\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x26,\\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, 0x4a,\\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x18, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\\n 0x4d, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d,\\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, 0x30,\\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\\n 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x32, 0x31,\\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, 0x6f,\\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\\n 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30,\\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0e,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12,\\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,\\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\\n 0x67, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,\\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, 0x4d,\\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\\n 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x41,\\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x67,\\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\\n 0x57, 0x4d, 0x32, 0x4d, 0x20, 0x43, 0x41, 0x30,\\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\\n 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42,\\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, 0xf0,\\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\\n 0xa9, 0x29, 0xa1, 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, 0x2c,\\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\\n 0x14, 0x24, 0xb1, 0xfb, 0x16, 0x34, 0x0e, 0x43,\\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, 0xaa,\\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\\n 0xa0, 0xc5, 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b,\\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03,\\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\\n 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,\\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03,\\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\\n 0xa1, 0xa5, 0x94, 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, 0x9a,\\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\\n 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,\\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, 0x11,\\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\\n 0x13, 0x30, 0x52, 0x77, 0xaa, 0xda, 0xda, 0xcb,\\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, 0xfa,\\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\\n 0xb1, 0x67, 0x6b, 0x69, 0x07, 0x0e, 0xcd, 0x77,\\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, 0xc0,\\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\\n 0x70, 0x98, 0xb9, 0x1e };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = \\n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\\n 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,\\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\\n 0x01, 0x01, 0x04, 0x20, 0x78, 0xa7, 0x3d, 0xed,\\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, 0x46,\\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\\n 0xb3, 0xc0, 0x00, 0x98, 0x22, 0xcf, 0x3c, 0x38,\\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, 0x08,\\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\\n 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x44, 0x9c,\\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, 0x4d,\\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\\n 0x16, 0xcb, 0x48, 0x72, 0x4f, 0xb7, 0x91, 0x36,\\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, 0xe5,\\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\\n 0xd7, 0xbd, 0xa4, 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, 0xec,\\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\\n\\nconst char MBED_CLOUD_DEV_MANUFACTURER[] = \\\"dev_manufacturer\\\";\\n\\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \\\"dev_model_num\\\";\\n\\nconst char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \\\"0\\\";\\n\\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] = \\\"dev_device_type\\\";\\n\\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = \\\"dev_hardware_version\\\";\\n\\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB = 0;\\n\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\\n\\n#endif //__MBED_CLOUD_DEV_CREDENTIALS_H__\\n", + "_key": "Success" + } + ], "_key": "200" }, { - "description": "Not Authenticated", + "description": "Bad request.", "schema": { "type": "object", "required": [ @@ -18080,10 +31541,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Not Found", + "description": "Invalid access token.", "schema": { "type": "object", "required": [ @@ -18153,385 +31614,273 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/{event_type_id}", - "summary": "Get an event type for a campaign", - "return_type": "campaign_statistics_events", - "return_info": { - "self": true, - "custom": false, - "type": "campaign_statistics_events" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "event_type", - "description", - "summary_status", - "count" - ], - "group_id": "Device_Update", - "parameter_map": { - "event_type_id": "id" - }, - "operation_id": "Update_Campaign_event_types_retrieve", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "example": "00000000000000000000000000000000", - "description": "ID of the associated campaign.", - "api_fieldname": "campaign_id", - "readOnly": false, - "required": true, - "_key": "campaign_id" - }, - { - "type": "integer", - "example": 10, - "api_fieldname": "count", - "readOnly": true, - "required": false, - "_key": "count" - }, - { - "type": "string", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "example": "Update error, nonspecific network error", - "api_fieldname": "description", - "readOnly": true, - "required": false, - "_key": "description" - }, - { - "type": "string", - "example": "UPD4_FAIL_101", - "api_fieldname": "event_type", - "readOnly": true, - "required": false, - "_key": "event_type" - }, - { - "type": "string", - "example": "upd_fail_101", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "string", - "example": "FAIL", - "api_fieldname": "summary_status", - "readOnly": true, - "required": false, - "_key": "summary_status" - }, - { - "type": "string", - "example": "fail", - "api_fieldname": "summary_status_id", - "readOnly": false, - "required": true, - "_key": "summary_status_id" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Device_Update", - "_key": "campaign_statistics_events" - }, - { - "swagger_models": [ - "CertificateEnrollment", - "CertificateEnrollmentListResponse" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Get certificate enrollments list, optionally filtered.\n\n**Examples:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments \\\n-H 'Authorization: Bearer '\n```\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments?device_id__eq=01612df56f3b0a580a010fc700000000 \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The ID of the item after which to retrieve the next page.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "pattern": "[0-9a-fA-F]{32}", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "include", - "in": "query", - "description": "a comma-separated list of data fields to return.", - "required": false, - "type": "string", - "enum": [ - "total_count" + "examples": [ + { + "object": "error", + "code": 401, + "type": "invalid_auth", + "message": "Invalid access token.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "_key": "Authentication Error" + } ], - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "enum_reference": "certificate_enrollment_include_enum", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "description": "The number of results to return (2-1000).", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "_key": "401" }, { - "type": "string", - "description": "The order of results.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "certificate_enrollment_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "OK.", + "description": "Developer certificate not found with given ID.", "schema": { "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "string", - "description": "The entity ID to fetch after the given one.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "maxLength": 50, - "description": "The certificate name.", - "example": "customer.dlms", - "api_fieldname": "certificate-name", - "entity_fieldname": "certificate_name", - "in": "path", - "name": "certificate-name", - "required": true, - "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", - "external_param": true, - "parameter_fieldname": "certificate-name", - "_key": "certificate_name" - }, - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "The device ID.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "device_id", - "entity_fieldname": "device_id", - "_key": "device_id" - }, - { - "type": "string", - "enum": [ - "success", - "failure" - ], - "description": "The result of certificate enrollment request.", - "example": "success", - "api_fieldname": "enroll_result", - "entity_fieldname": "enroll_result", - "_key": "enroll_result" - }, - { - "type": "string", - "description": "Additional information in case of failure.", - "example": "The device is currently processing too many certificate renewals.", - "api_fieldname": "enroll_result_detail", - "entity_fieldname": "enroll_result_detail", - "_key": "enroll_result_detail" - }, - { - "type": "string", - "description": "The status of certificate enrollment request.", - "enum": [ - "new", - "completed" - ], - "api_fieldname": "enroll_status", - "entity_fieldname": "enroll_status", - "_key": "enroll_status" - }, - { - "type": "string", - "description": "Entity instance signature.", - "example": "1", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "device-id", - "in": "path", - "required": true, - "_key": "id" - }, - { - "type": "string", - "enum": [ - "certificate-enrollment" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "format": "date-time", - "description": "Update UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "required": [ - "created_at", - "etag", - "id", - "device_id", - "certificate_name" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_enrollment" - } + ] }, - "description": "List of certificate enrollments.", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "format": "int32", - "description": "The number of results to return.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "list" + "error" ], - "description": "Describes the type of objects in the list.", - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "description": "The total number of records.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "certificate_enrollment" - } + ] }, - "_key": "200" + "examples": [ + { + "object": "error", + "code": 404, + "type": "not_found", + "message": "Not Found. Not found: 016006724ff53ade90ed948d03c00001", + "request_id": "015fee4431fd38c98640fbfb00000000", + "_key": "Authentication Error" + } + ], + "_key": "404" + } + ], + "path": "/v3/developer-certificates/{developerCertificateId}", + "summary": "Fetch an existing developer certificate to connect to the bootstrap server.", + "return_type": "developer_certificate", + "return_info": { + "self": true, + "custom": false, + "type": "developer_certificate" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "account_id", + "name", + "description", + "developer_private_key", + "security_file_content", + "certificate" + ], + "group_id": "Security", + "parameter_map": { + "developerCertificateId": "id" + }, + "operation_id": "getDeveloperCertificate", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "description": "Account to which the developer certificate belongs.", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "description": "PEM-format X.509 developer certificate.", + "api_fieldname": "developer_certificate", + "readOnly": true, + "required": false, + "_key": "certificate" + }, + { + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "description": "Description for the developer certificate.", + "x-nullable": true, + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "type": "string", + "description": "PEM-format developer private key associated with the certificate.", + "api_fieldname": "developer_private_key", + "readOnly": true, + "required": false, + "_key": "developer_private_key" + }, + { + "type": "string", + "description": "ID that uniquely identifies the developer certificate.", + "api_fieldname": "id", + "parameter_fieldname": "developerCertificateId", + "in": "path", + "required": true, + "readOnly": false, + "_key": "id" + }, + { + "type": "string", + "description": "Name of the developer certificate.", + "api_fieldname": "name", + "readOnly": false, + "required": true, + "_key": "name" + }, + { + "type": "string", + "description": "Content of the `security.c` file flashed to the device to provide security credentials.", + "api_fieldname": "security_file_content", + "readOnly": true, + "required": false, + "_key": "security_file_content" + } + ], + "field_renames": [ + { + "api_fieldname": "developer_certificate", + "_key": "certificate" + } + ], + "tags": [ + "Security and identity - developer class certificates", + "Security and identity - certificates" + ], + "group_id": "Security", + "_key": "developer_certificate" + }, + { + "swagger_models": [ + "CertificateEnrollment", + "DeviceData", + "DeviceDataPostRequest", + "DeviceDataPutRequest", + "DeviceGroupManipulation", + "DevicePage" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Add one device to a group. A device can be in multiple groups.", + "field_renames": [], + "fields": [ + { + "in": "path", + "description": "The ID of the group.", + "name": "device-group-id", + "required": true, + "type": "string", + "entity_fieldname": "device-group-id", + "api_fieldname": "device-group-id", + "external_param": true, + "parameter_fieldname": "device-group-id", + "_key": "device-group-id" }, { - "description": "Validation error.", + "type": "string", + "example": "00000000000000000000000000000000", + "name": "device_id", + "in": "body", + "schema_param": true, + "entity_fieldname": "id", + "api_fieldname": "device_id", + "external_param": false, + "parameter_fieldname": "device_id", + "required": true, + "_key": "id" + } + ], + "method": "post", + "mode": "add_to_group", + "responses": [ + { + "description": "Success - device added.", + "_key": "204" + }, + { + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -18541,24 +31890,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -18566,22 +31920,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -18594,7 +31954,6 @@ "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -18604,24 +31963,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -18629,22 +31993,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -18652,12 +32022,11 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -18667,24 +32036,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -18692,1127 +32066,2081 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/certificate-enrollments", - "summary": "Get certificate enrollments list.", - "return_type": "paginated_response(certificate_enrollment)", + "path": "/v3/device-groups/{device-group-id}/devices/add/", + "summary": "Add a device to a group.", + "return_type": "void", "return_info": { - "self": true, - "custom": false, - "type": "certificate_enrollment" - }, - "x_filter": { - "device_id": [ - "eq" - ], - "certificate_name": [ - "eq" - ], - "enroll_status": [ - "neq", - "eq" - ], - "enroll_result": [ - "neq", - "eq" - ], - "created_at": [ - "lte", - "gte" - ], - "updated_at": [ - "lte", - "gte" - ] + "self": false, + "custom": true, + "type": "void" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", - "filter", - "total_count", - "has_more", - "data", - "device_id__eq", - "certificate_name__eq", - "enroll_status__neq", - "enroll_status__eq", - "enroll_result__neq", - "enroll_result__eq", - "created_at__lte", - "created_at__gte", - "updated_at__lte", - "updated_at__gte" + "filter" ], - "foreign_key_priority": "self", - "group_id": "Security", + "group_id": "Devices", + "operation_id": "Group_members_add", "parameter_map": { - "certificate-enrollment-id": "id" + "device_id": "id" }, - "operation_id": "getCertificateEnrollments", - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "certificate_enrollment" + "spec": { + "return_type": "void" }, + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "add_to_group" }, { - "description": "Get a certificate enrollment by ID.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments/01612df56f3b0a580a010fc700000000 \\\n-H 'Authorization: Bearer '\n```", + "description": "Create a new device in Device Management. Usually you do not need to create a device this way, as it is automatically created when it bootstraps or connects to Device Management.", "field_renames": [], "fields": [ { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "entity_fieldname": "auto_update", + "parameter_fieldname": "auto_update", + "in": "body", + "required": false, + "_key": "auto_update" + }, + { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server.", + "api_fieldname": "bootstrap_expiration_date", + "entity_fieldname": "bootstrap_expiration_date", + "parameter_fieldname": "bootstrap_expiration_date", + "in": "body", + "required": false, + "_key": "bootstrap_expiration_date" + }, + { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "entity_fieldname": "ca_id", + "parameter_fieldname": "ca_id", + "in": "body", + "required": false, + "_key": "ca_id" + }, + { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server.", + "api_fieldname": "connector_expiration_date", + "entity_fieldname": "connector_expiration_date", + "parameter_fieldname": "connector_expiration_date", + "in": "body", + "required": false, + "_key": "connector_expiration_date" + }, + { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "parameter_fieldname": "custom_attributes", + "in": "body", + "required": false, + "_key": "custom_attributes" + }, + { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "", + "api_fieldname": "deployment", + "entity_fieldname": "deployment", + "parameter_fieldname": "deployment", + "in": "body", + "required": false, + "_key": "deployment" + }, + { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "type": "string", + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "", + "api_fieldname": "device_class", + "entity_fieldname": "device_class", + "parameter_fieldname": "device_class", + "in": "body", + "required": false, + "_key": "device_class" + }, + { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0, + "api_fieldname": "device_execution_mode", + "entity_fieldname": "device_execution_mode", + "parameter_fieldname": "device_execution_mode", + "in": "body", + "required": false, + "_key": "device_execution_mode" + }, + { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "entity_fieldname": "device_key", + "parameter_fieldname": "device_key", + "in": "body", + "required": false, + "_key": "device_key" + }, + { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "parameter_fieldname": "endpoint_name", + "in": "body", + "required": false, + "_key": "endpoint_name" + }, + { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "entity_fieldname": "endpoint_type", + "parameter_fieldname": "endpoint_type", + "in": "body", + "required": false, + "_key": "endpoint_type" + }, + { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "entity_fieldname": "host_gateway", + "parameter_fieldname": "host_gateway", + "in": "body", + "required": false, + "_key": "host_gateway" + }, + { + "type": "string", + "pattern": "[A-Fa-f0-9]{64}", + "x-nullable": true, + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", + "api_fieldname": "issuer_fingerprint", + "entity_fieldname": "issuer_fingerprint", + "parameter_fieldname": "issuer_fingerprint", + "in": "body", + "required": false, + "_key": "issuer_fingerprint" + }, + { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "", + "api_fieldname": "manifest", + "entity_fieldname": "manifest", + "parameter_fieldname": "manifest", + "in": "body", + "required": false, + "_key": "manifest" + }, + { + "enum": [ + "connector", + "direct" + ], + "type": "string", + "description": "NOT USED: The ID of the channel used to communicate with the device.", + "api_fieldname": "mechanism", + "entity_fieldname": "mechanism", + "parameter_fieldname": "mechanism", + "in": "body", + "required": false, + "enum_reference": "device_mechanism_enum", + "_key": "mechanism" + }, + { + "type": "string", + "description": "NOT USED: The address of the connector to use.", + "example": "", + "api_fieldname": "mechanism_url", + "entity_fieldname": "mechanism_url", + "parameter_fieldname": "mechanism_url", + "in": "body", + "required": false, + "_key": "mechanism_url" + }, + { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "serial_number", + "entity_fieldname": "serial_number", + "parameter_fieldname": "serial_number", + "in": "body", + "required": false, + "_key": "serial_number" + }, + { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "certificate-enrollment-id", - "in": "path", - "required": true, - "_key": "id" + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired.", + "api_fieldname": "state", + "entity_fieldname": "state", + "parameter_fieldname": "state", + "in": "body", + "required": false, + "enum_reference": "device_state_enum", + "_key": "state" + }, + { + "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "vendor_id", + "entity_fieldname": "vendor_id", + "parameter_fieldname": "vendor_id", + "in": "body", + "required": false, + "_key": "vendor_id" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "create", "responses": [ { - "description": "OK.", - "schema": { - "type": "object", - "properties": [ - { + "description": "Device created.", + "schema": [ + { + "group": "Devices", + "entity": "device", + "_key": "foreign_key" + }, + { + "device_execution_mode": { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0, + "api_fieldname": "device_execution_mode", + "entity_fieldname": "device_execution_mode" + }, + "groups": { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups" + }, + "issuer_fingerprint": { "type": "string", - "maxLength": 50, - "description": "The certificate name.", - "example": "customer.dlms", - "api_fieldname": "certificate_name", - "entity_fieldname": "certificate_name", - "in": "path", - "name": "certificate-name", - "required": true, - "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", - "external_param": true, - "parameter_fieldname": "certificate-name", - "_key": "certificate_name" + "pattern": "[A-Fa-f0-9]{64}", + "x-nullable": true, + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", + "api_fieldname": "issuer_fingerprint", + "entity_fieldname": "issuer_fingerprint" }, - { + "operator_suspended": { + "type": "boolean", + "description": "Device has been suspended by operator.", + "api_fieldname": "operator_suspended", + "entity_fieldname": "operator_suspended" + }, + "last_operator_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_operator_suspended_category", + "entity_fieldname": "last_operator_suspended_category" + }, + "last_operator_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance.", + "api_fieldname": "last_operator_suspended_description", + "entity_fieldname": "last_operator_suspended_description" + }, + "last_operator_suspended_updated_at": { "type": "string", "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_operator_suspended_updated_at", + "entity_fieldname": "last_operator_suspended_updated_at" }, - { + "system_suspended": { + "type": "boolean", + "description": "Is the device suspended by the system?", + "api_fieldname": "system_suspended", + "entity_fieldname": "system_suspended" + }, + "last_system_suspended_category": { "type": "string", - "description": "The device ID.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "device_id", - "entity_fieldname": "device_id", - "_key": "device_id" + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_system_suspended_category", + "entity_fieldname": "last_system_suspended_category" }, - { + "last_system_suspended_description": { "type": "string", - "enum": [ - "success", - "failure" - ], - "description": "The result of certificate enrollment request.", - "example": "success", - "api_fieldname": "enroll_result", - "entity_fieldname": "enroll_result", - "_key": "enroll_result" + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system.", + "api_fieldname": "last_system_suspended_description", + "entity_fieldname": "last_system_suspended_description" }, - { + "last_system_suspended_updated_at": { "type": "string", - "description": "Additional information in case of failure.", - "example": "The device is currently processing too many certificate renewals.", - "api_fieldname": "enroll_result_detail", - "entity_fieldname": "enroll_result_detail", - "_key": "enroll_result_detail" + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_system_suspended_updated_at", + "entity_fieldname": "last_system_suspended_updated_at" }, - { + "lifecycle_status": { "type": "string", - "description": "The status of certificate enrollment request.", "enum": [ - "new", - "completed" + "enabled", + "blocked" ], - "api_fieldname": "enroll_status", - "entity_fieldname": "enroll_status", - "_key": "enroll_status" + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled", + "api_fieldname": "lifecycle_status", + "entity_fieldname": "lifecycle_status" }, - { + "account_id": { "type": "string", - "description": "Entity instance signature.", - "example": "1", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id" }, - { + "auto_update": { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "entity_fieldname": "auto_update" + }, + "bootstrap_expiration_date": { + "format": "date", "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "device-id", - "in": "path", - "required": true, - "_key": "id" + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server.", + "api_fieldname": "bootstrap_expiration_date", + "entity_fieldname": "bootstrap_expiration_date" }, - { + "bootstrapped_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "enum": [ - "certificate-enrollment" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "The timestamp of the device's most recent bootstrap process.", + "api_fieldname": "bootstrapped_timestamp", + "entity_fieldname": "bootstrapped_timestamp" }, - { + "ca_id": { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "entity_fieldname": "ca_id" + }, + "component_attributes": { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "component_attributes", + "entity_fieldname": "component_attributes" + }, + "connector_expiration_date": { + "format": "date", "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server.", + "api_fieldname": "connector_expiration_date", + "entity_fieldname": "connector_expiration_date" + }, + "created_at": { "format": "date-time", - "description": "Update UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "required": [ - "created_at", - "etag", - "id", - "device_id", - "certificate_name" - ], - "foreign_key": { - "group": "Devices", - "entity": "device" - } - }, - "_key": "200" - }, - { - "description": "Validation error.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] + "custom_attributes": { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" }, - "_key": "fields" + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes" }, - { + "deployed_state": { + "enum": [ + "development", + "production" + ], "type": "string", - "description": "Error message.", - "_key": "message" + "description": "DEPRECATED: The state of the device's deployment.", + "api_fieldname": "deployed_state", + "entity_fieldname": "deployed_state" }, - { + "deployment": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "DEPRECATED: The last deployment used on the device.", + "example": "", + "api_fieldname": "deployment", + "entity_fieldname": "deployment" }, - { + "description": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "entity_fieldname": "description" }, - { + "device_class": { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "Unauthorized.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "", + "api_fieldname": "device_class", + "entity_fieldname": "device_class" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "id": { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id" }, - { + "device_key": { "type": "string", - "description": "Error message.", - "_key": "message" + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "entity_fieldname": "device_key" }, - { + "endpoint_name": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name" }, - { + "endpoint_type": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "entity_fieldname": "endpoint_type" }, - { + "etag": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "description": "The entity instance signature.", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "firmware_checksum": { + "type": "string", + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000", + "api_fieldname": "firmware_checksum", + "entity_fieldname": "firmware_checksum" + }, + "host_gateway": { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "entity_fieldname": "host_gateway" + }, + "manifest": { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "", + "api_fieldname": "manifest", + "entity_fieldname": "manifest" + }, + "manifest_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the current manifest version.", + "api_fieldname": "manifest_timestamp", + "entity_fieldname": "manifest_timestamp" + }, + "mechanism": { + "enum": [ + "connector", + "direct" + ], + "type": "string", + "description": "NOT USED: The ID of the channel used to communicate with the device.", + "api_fieldname": "mechanism", + "entity_fieldname": "mechanism" + }, + "mechanism_url": { + "type": "string", + "description": "NOT USED: The address of the connector to use.", + "example": "", + "api_fieldname": "mechanism_url", + "entity_fieldname": "mechanism_url" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "name": { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "entity_fieldname": "name" }, - { + "net_id": { "type": "string", - "description": "Error message.", - "_key": "message" + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000", + "api_fieldname": "net_id", + "entity_fieldname": "net_id" }, - { + "object": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The API resource entity.", + "example": "device", + "api_fieldname": "object", + "entity_fieldname": "object" }, - { + "serial_number": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "serial_number", + "entity_fieldname": "serial_number" }, - { + "state": { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired.", + "api_fieldname": "state", + "entity_fieldname": "state" + }, + "updated_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The time this data object was updated.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "vendor_id": { + "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "vendor_id", + "entity_fieldname": "vendor_id" + }, + "enrolment_list_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The claim date/time.", + "api_fieldname": "enrolment_list_timestamp", + "entity_fieldname": "enrolment_list_timestamp" + }, + "_key": "properties" + } + ], + "_key": "201" + }, + { + "description": "Validation error: The data used to create the device did not validate.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Account limit reached. Could not create device.", "_key": "403" }, { - "description": "Not found.", + "description": "Unique-constrained fields are used by other resources.", + "_key": "409" + } + ], + "path": "/v3/devices/", + "summary": "Create a device.", + "return_type": "device", + "return_info": { + "self": true, + "custom": false, + "type": "device" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "groups", + "operator_suspended", + "last_operator_suspended_category", + "last_operator_suspended_description", + "last_operator_suspended_updated_at", + "system_suspended", + "last_system_suspended_category", + "last_system_suspended_description", + "last_system_suspended_updated_at", + "lifecycle_status", + "account_id", + "bootstrapped_timestamp", + "component_attributes", + "created_at", + "deployed_state", + "id", + "firmware_checksum", + "manifest_timestamp", + "net_id", + "updated_at", + "enrolment_list_timestamp" + ], + "group_id": "Devices", + "operation_id": "Device_create", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete device. Only available for devices with a developer certificate. Attempting to delete a device with a production certificate returns a 400 response.", + "field_renames": [], + "fields": [ + { + "description": "The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) created by Device Management.", + "in": "path", + "name": "id", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "id", + "external_param": false, + "parameter_fieldname": "id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Device deleted.", + "_key": "204" + }, + { + "description": "Bad request.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to delete device because it can't be found.", + "_key": "404" + } + ], + "path": "/v3/devices/{id}/", + "summary": "Delete a device.", + "return_type": "device", + "return_info": { + "self": true, + "custom": false, + "type": "device" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "operation_id": "Device_destroy", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "List all devices enrolled to Device Management for the account.\n\n**Example:**\nFollowing example filters devices according to state field and returns only devices in 'registered' state:\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "type": "integer", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Request successful.", "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "type": "string", + "description": "An offset token for current page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { + "items": [ + { + "group": "Devices", + "entity": "device", + "_key": "foreign_key" + }, + { + "device_execution_mode": { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0 + }, + "groups": { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + } + }, + "issuer_fingerprint": { + "type": "string", + "pattern": "[A-Fa-f0-9]{64}", + "x-nullable": true, + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322" + }, + "operator_suspended": { + "type": "boolean", + "description": "Device has been suspended by operator." + }, + "last_operator_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance" + }, + "last_operator_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance." + }, + "last_operator_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z" + }, + "system_suspended": { + "type": "boolean", + "description": "Is the device suspended by the system?" + }, + "last_system_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance" + }, + "last_system_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system." + }, + "last_system_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z" + }, + "lifecycle_status": { + "type": "string", + "enum": [ + "enabled", + "blocked" + ], + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled" + }, + "account_id": { + "type": "string", + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000" + }, + "auto_update": { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update." + }, + "bootstrap_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server." + }, + "bootstrapped_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the device's most recent bootstrap process." + }, + "ca_id": { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000" + }, + "component_attributes": { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + } + }, + "connector_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server." + }, + "created_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory." + }, + "custom_attributes": { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + } + }, + "deployed_state": { + "enum": [ + "development", + "production" + ], + "type": "string", + "description": "DEPRECATED: The state of the device's deployment." + }, + "deployment": { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "" + }, + "description": { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device" + }, + "device_class": { + "type": "string", + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "" + }, + "id": { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000" + }, + "device_key": { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" + }, + "endpoint_name": { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true + }, + "endpoint_type": { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "" + }, + "etag": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The entity instance signature." + }, + "firmware_checksum": { + "type": "string", + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000" + }, + "host_gateway": { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "" + }, + "manifest": { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "" + }, + "manifest_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the current manifest version." + }, + "mechanism": { + "enum": [ + "connector", + "direct" + ], "type": "string", - "description": "Field name.", - "_key": "field" + "description": "NOT USED: The ID of the channel used to communicate with the device." }, - { + "mechanism_url": { "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "description": "NOT USED: The address of the connector to use.", + "example": "" + }, + "name": { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "net_id": { + "type": "string", + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000" + }, + "object": { + "type": "string", + "description": "The API resource entity.", + "example": "device" + }, + "serial_number": { + "type": "string", + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "state": { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], + "type": "string", + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired." + }, + "updated_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The time this data object was updated." + }, + "vendor_id": { + "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "enrolment_list_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The claim date/time." + }, + "_key": "properties" + } + ], + "type": "array", + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "Error message.", - "_key": "message" + "type": "boolean", + "description": "Are there more results available.", + "example": false, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "The type of this API object is a \"list\".", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type.", - "_key": "type" + "format": "integer", + "type": "integer", + "example": 1, + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device" + } }, + "_key": "200" + }, + { + "description": "Bad request.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to find page.", "_key": "404" } ], - "path": "/v3/certificate-enrollments/{certificate-enrollment-id}", - "summary": "Get a certificate enrollment by ID.", - "return_type": "certificate_enrollment", + "path": "/v3/devices/", + "summary": "List all devices.", + "return_type": "paginated_response(device)", "return_info": { "self": true, "custom": false, - "type": "certificate_enrollment" + "type": "device" + }, + "x_filter": { + "lifecycle_status": [ + "eq", + "neq", + "in", + "nin" + ], + "operator_suspended": [ + "eq", + "neq" + ], + "last_operator_suspended_category": [ + "eq", + "neq", + "in", + "nin" + ], + "last_operator_suspended_updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "system_suspended": [ + "eq", + "neq" + ], + "last_system_suspended_category": [ + "eq", + "neq", + "in", + "nin" + ], + "last_system_suspended_updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "account_id": [ + "eq", + "neq", + "in", + "nin" + ], + "auto_update": [ + "eq", + "neq" + ], + "bootstrap_expiration_date": [ + "in", + "nin", + "lte", + "gte" + ], + "bootstrapped_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "ca_id": [ + "eq", + "neq", + "in", + "nin" + ], + "connector_expiration_date": [ + "in", + "nin", + "lte", + "gte" + ], + "created_at": [ + "in", + "nin", + "lte", + "gte" + ], + "deployed_state": [ + "eq", + "neq", + "in", + "nin" + ], + "deployment": [ + "eq", + "neq", + "in", + "nin" + ], + "description": [ + "eq", + "neq", + "in", + "nin" + ], + "device_class": [ + "eq", + "neq", + "in", + "nin" + ], + "device_execution_mode": [ + "eq", + "neq", + "in", + "nin" + ], + "device_key": [ + "eq", + "neq", + "in", + "nin" + ], + "endpoint_name": [ + "eq", + "neq", + "in", + "nin" + ], + "endpoint_type": [ + "eq", + "neq", + "in", + "nin" + ], + "enrolment_list_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "firmware_checksum": [ + "eq", + "neq", + "in", + "nin" + ], + "host_gateway": [ + "eq", + "neq", + "in", + "nin" + ], + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "manifest": [ + "eq", + "neq", + "in", + "nin" + ], + "manifest_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "mechanism": [ + "eq", + "neq", + "in", + "nin" + ], + "mechanism_url": [ + "eq", + "neq", + "in", + "nin" + ], + "name": [ + "eq", + "neq", + "in", + "nin" + ], + "net_id": [ + "eq", + "neq", + "in", + "nin" + ], + "serial_number": [ + "eq", + "neq", + "in", + "nin" + ], + "state": [ + "eq", + "neq", + "in", + "nin" + ], + "updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "vendor_id": [ + "eq", + "neq", + "in", + "nin" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "created_at", - "device_id", - "certificate_name", - "enroll_status", - "enroll_result", - "enroll_result_detail", - "updated_at" - ], - "group_id": "Security", - "parameter_map": { - "certificate-enrollment-id": "id" - }, - "operation_id": "getCertificateEnrollment", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "maxLength": 50, - "description": "The certificate name.", - "example": "customer.dlms", - "api_fieldname": "certificate_name", - "in": "path", - "name": "certificate-name", - "required": false, - "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", - "external_param": true, - "parameter_fieldname": "certificate-name", - "readOnly": true, - "_key": "certificate_name" - }, - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "The device ID.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "device_id", - "readOnly": true, - "required": false, - "_key": "device_id" - }, - { - "type": "string", - "enum": [ - "success", - "failure" - ], - "description": "The result of certificate enrollment request.", - "example": "success", - "api_fieldname": "enroll_result", - "readOnly": true, - "required": false, - "enum_reference": "certificate_enrollment_enroll_result_enum", - "_key": "enroll_result" - }, - { - "type": "string", - "description": "Additional information in case of failure.", - "example": "The device is currently processing too many certificate renewals.", - "api_fieldname": "enroll_result_detail", - "readOnly": true, - "required": false, - "_key": "enroll_result_detail" - }, - { - "type": "string", - "description": "The status of certificate enrollment request.", - "enum": [ - "new", - "completed" + "data", + "has_more", + "total_count", + "lifecycle_status__eq", + "lifecycle_status__neq", + "lifecycle_status__in", + "lifecycle_status__nin", + "operator_suspended__eq", + "operator_suspended__neq", + "last_operator_suspended_category__eq", + "last_operator_suspended_category__neq", + "last_operator_suspended_category__in", + "last_operator_suspended_category__nin", + "last_operator_suspended_updated_at__in", + "last_operator_suspended_updated_at__nin", + "last_operator_suspended_updated_at__lte", + "last_operator_suspended_updated_at__gte", + "system_suspended__eq", + "system_suspended__neq", + "last_system_suspended_category__eq", + "last_system_suspended_category__neq", + "last_system_suspended_category__in", + "last_system_suspended_category__nin", + "last_system_suspended_updated_at__in", + "last_system_suspended_updated_at__nin", + "last_system_suspended_updated_at__lte", + "last_system_suspended_updated_at__gte", + "account_id__eq", + "account_id__neq", + "account_id__in", + "account_id__nin", + "auto_update__eq", + "auto_update__neq", + "bootstrap_expiration_date__in", + "bootstrap_expiration_date__nin", + "bootstrap_expiration_date__lte", + "bootstrap_expiration_date__gte", + "bootstrapped_timestamp__in", + "bootstrapped_timestamp__nin", + "bootstrapped_timestamp__lte", + "bootstrapped_timestamp__gte", + "ca_id__eq", + "ca_id__neq", + "ca_id__in", + "ca_id__nin", + "connector_expiration_date__in", + "connector_expiration_date__nin", + "connector_expiration_date__lte", + "connector_expiration_date__gte", + "created_at__in", + "created_at__nin", + "created_at__lte", + "created_at__gte", + "deployed_state__eq", + "deployed_state__neq", + "deployed_state__in", + "deployed_state__nin", + "deployment__eq", + "deployment__neq", + "deployment__in", + "deployment__nin", + "description__eq", + "description__neq", + "description__in", + "description__nin", + "device_class__eq", + "device_class__neq", + "device_class__in", + "device_class__nin", + "device_execution_mode__eq", + "device_execution_mode__neq", + "device_execution_mode__in", + "device_execution_mode__nin", + "device_key__eq", + "device_key__neq", + "device_key__in", + "device_key__nin", + "endpoint_name__eq", + "endpoint_name__neq", + "endpoint_name__in", + "endpoint_name__nin", + "endpoint_type__eq", + "endpoint_type__neq", + "endpoint_type__in", + "endpoint_type__nin", + "enrolment_list_timestamp__in", + "enrolment_list_timestamp__nin", + "enrolment_list_timestamp__lte", + "enrolment_list_timestamp__gte", + "firmware_checksum__eq", + "firmware_checksum__neq", + "firmware_checksum__in", + "firmware_checksum__nin", + "host_gateway__eq", + "host_gateway__neq", + "host_gateway__in", + "host_gateway__nin", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "manifest__eq", + "manifest__neq", + "manifest__in", + "manifest__nin", + "manifest_timestamp__in", + "manifest_timestamp__nin", + "manifest_timestamp__lte", + "manifest_timestamp__gte", + "mechanism__eq", + "mechanism__neq", + "mechanism__in", + "mechanism__nin", + "mechanism_url__eq", + "mechanism_url__neq", + "mechanism_url__in", + "mechanism_url__nin", + "name__eq", + "name__neq", + "name__in", + "name__nin", + "net_id__eq", + "net_id__neq", + "net_id__in", + "net_id__nin", + "serial_number__eq", + "serial_number__neq", + "serial_number__in", + "serial_number__nin", + "state__eq", + "state__neq", + "state__in", + "state__nin", + "updated_at__in", + "updated_at__nin", + "updated_at__lte", + "updated_at__gte", + "vendor_id__eq", + "vendor_id__neq", + "vendor_id__in", + "vendor_id__nin" ], - "api_fieldname": "enroll_status", - "readOnly": true, - "required": false, - "enum_reference": "certificate_enrollment_enroll_status_enum", - "_key": "enroll_status" - }, - { - "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", - "api_fieldname": "id", - "parameter_fieldname": "device-id", - "in": "path", - "required": true, - "readOnly": false, - "_key": "id" + "foreign_key_priority": "self", + "group_id": "Devices", + "operation_id": "Device_list", + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" }, { - "type": "string", - "format": "date-time", - "description": "Update UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "Device security - device certificate renewals" - ], - "group_id": "Security", - "_key": "certificate_enrollment" - }, - { - "swagger_models": [ - "CertificateIssuerInfo", - "CertificateIssuerInfoListResponse", - "CertificateIssuerRequest", - "CertificateIssuerUpdateRequest", - "CertificateIssuerVerifyResponse" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Create a certificate issuer.\nThe maximum number of issuers is limited to 20 per account.\nMultiple certificate issuers of the same issuer type can be created, provided they have a different name. This allows verification of the certificate issuer configuration before activating it.\n
\n**Example usage:**\n\n```\ncurl -X POST \\\n-H 'authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers \\\n-d '{\n \"issuer_type\": \"GLOBAL_SIGN\",\n \"name\": \"GS Issuer\",\n \"description\": \"Sample GlobalSign certificate issuer\",\n \"issuer_attributes\": null,\n \"issuer_credentials\": {\n \"api_key\": \"e510e289e6cd8947\",\n \"api_secret\": \"a477a8393d17a55ecb2ba6a61f58feb84770b621\",\n \"client_certificate\": \"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END CERTIFICATE-----\",\n \"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\nProc-Type: 4,ENCRYPTED\\nDEK-Info: DES-EDE3-CBC,CCAC26A4133947CB\\n\\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\\nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\\n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\\nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\\nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\\n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\\notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\\nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\\n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\\nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\\n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\\nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\\n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\\n-----END RSA PRIVATE KEY-----\",\n \"passphrase\": \"helloworld\"\n }\n}'\n```\n", + "description": "Retrieve information about a specific device. This API returns [DeviceData](https://www.pelion.com/docs/device-management-api/device-directory/). If you want to see the structure of resources in the device or the actual resource values, use the [Connect API](https://www.pelion.com/docs/device-management-api/connect/).\n\n**Example:**\nFollowing example must be updated with the device's ID to the URL. The id is from of \"01667c6e992c00000000000100100370\"\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "parameter_fieldname": "description", - "in": "body", - "required": false, - "_key": "description" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "entity_fieldname": "issuer_attributes", - "parameter_fieldname": "issuer_attributes", - "in": "body", - "required": false, - "_key": "issuer_attributes" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The credentials required for connecting to the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.\n", - "example": [], - "name": "issuer_credentials", - "in": "body", - "schema_param": true, - "entity_fieldname": "issuer_credentials", - "api_fieldname": "issuer_credentials", - "external_param": true, - "parameter_fieldname": "issuer_credentials", - "required": true, - "_key": "issuer_credentials" - }, - { - "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "api_fieldname": "issuer_type", - "entity_fieldname": "issuer_type", - "parameter_fieldname": "issuer_type", - "in": "body", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", "required": true, - "enum_reference": "certificate_issuer_type_enum", - "_key": "issuer_type" - }, - { - "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "body", - "required": false, - "_key": "name" + "_key": "id" } ], - "method": "post", - "mode": "create", + "method": "get", + "mode": "read", "responses": [ { - "description": "Created.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "Retrieved result successfully.", + "schema": [ + { + "group": "Devices", + "entity": "device", + "_key": "foreign_key" + }, + { + "device_execution_mode": { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0, + "api_fieldname": "device_execution_mode", + "entity_fieldname": "device_execution_mode" }, - { + "groups": { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups" + }, + "issuer_fingerprint": { "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", + "pattern": "[A-Fa-f0-9]{64}", "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", + "api_fieldname": "issuer_fingerprint", + "entity_fieldname": "issuer_fingerprint" }, - { + "operator_suspended": { + "type": "boolean", + "description": "Device has been suspended by operator.", + "api_fieldname": "operator_suspended", + "entity_fieldname": "operator_suspended" + }, + "last_operator_suspended_category": { "type": "string", - "description": "Entity instance signature.", - "example": "1", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_operator_suspended_category", + "entity_fieldname": "last_operator_suspended_category" }, - { + "last_operator_suspended_description": { "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance.", + "api_fieldname": "last_operator_suspended_description", + "entity_fieldname": "last_operator_suspended_description" }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "entity_fieldname": "issuer_attributes", - "_key": "issuer_attributes" + "last_operator_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_operator_suspended_updated_at", + "entity_fieldname": "last_operator_suspended_updated_at" }, - { + "system_suspended": { + "type": "boolean", + "description": "Is the device suspended by the system?", + "api_fieldname": "system_suspended", + "entity_fieldname": "system_suspended" + }, + "last_system_suspended_category": { "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "api_fieldname": "issuer_type", - "entity_fieldname": "issuer_type", - "_key": "issuer_type" + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_system_suspended_category", + "entity_fieldname": "last_system_suspended_category" }, - { + "last_system_suspended_description": { "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system.", + "api_fieldname": "last_system_suspended_description", + "entity_fieldname": "last_system_suspended_description" }, - { + "last_system_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_system_suspended_updated_at", + "entity_fieldname": "last_system_suspended_updated_at" + }, + "lifecycle_status": { "type": "string", "enum": [ - "certificate-issuer" + "enabled", + "blocked" ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - } - ], - "required": [ - "issuer_type" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer" - } - }, - "_key": "201" - }, - { - "description": "Validation error: The data used to create the certificate issuer failed validation.\n", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled", + "api_fieldname": "lifecycle_status", + "entity_fieldname": "lifecycle_status" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "account_id": { + "type": "string", + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id" }, - { + "auto_update": { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "entity_fieldname": "auto_update" + }, + "bootstrap_expiration_date": { + "format": "date", "type": "string", - "description": "Error message.", - "_key": "message" + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server.", + "api_fieldname": "bootstrap_expiration_date", + "entity_fieldname": "bootstrap_expiration_date" }, - { + "bootstrapped_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The timestamp of the device's most recent bootstrap process.", + "api_fieldname": "bootstrapped_timestamp", + "entity_fieldname": "bootstrapped_timestamp" }, - { + "ca_id": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "entity_fieldname": "ca_id" }, - { + "component_attributes": { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "component_attributes", + "entity_fieldname": "component_attributes" + }, + "connector_expiration_date": { + "format": "date", "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "You are not authorized to view the resource.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server.", + "api_fieldname": "connector_expiration_date", + "entity_fieldname": "connector_expiration_date" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] + "created_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "custom_attributes": { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" }, - "_key": "fields" + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes" + }, + "deployed_state": { + "enum": [ + "development", + "production" + ], + "type": "string", + "description": "DEPRECATED: The state of the device's deployment.", + "api_fieldname": "deployed_state", + "entity_fieldname": "deployed_state" + }, + "deployment": { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "", + "api_fieldname": "deployment", + "entity_fieldname": "deployment" }, - { + "description": { "type": "string", - "description": "Error message.", - "_key": "message" + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "entity_fieldname": "description" }, - { + "device_class": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "", + "api_fieldname": "device_class", + "entity_fieldname": "device_class" }, - { + "id": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id" }, - { + "device_key": { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "entity_fieldname": "device_key" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "endpoint_name": { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name" }, - { + "endpoint_type": { "type": "string", - "description": "Error message.", - "_key": "message" + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "entity_fieldname": "endpoint_type" }, - { + "etag": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The entity instance signature.", + "api_fieldname": "etag", + "entity_fieldname": "etag" }, - { + "firmware_checksum": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000", + "api_fieldname": "firmware_checksum", + "entity_fieldname": "firmware_checksum" }, - { + "host_gateway": { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "403" - }, - { - "description": "Conflict. A certificate issuer with this name already exists.\n", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "entity_fieldname": "host_gateway" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "manifest": { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "", + "api_fieldname": "manifest", + "entity_fieldname": "manifest" }, - { + "manifest_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Error message.", - "_key": "message" + "description": "The timestamp of the current manifest version.", + "api_fieldname": "manifest_timestamp", + "entity_fieldname": "manifest_timestamp" }, - { + "mechanism": { + "enum": [ + "connector", + "direct" + ], "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "NOT USED: The ID of the channel used to communicate with the device.", + "api_fieldname": "mechanism", + "entity_fieldname": "mechanism" }, - { + "mechanism_url": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "NOT USED: The address of the connector to use.", + "example": "", + "api_fieldname": "mechanism_url", + "entity_fieldname": "mechanism_url" }, - { + "name": { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "409" - }, - { - "description": "The request failed due to customer configured external service.\n", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "entity_fieldname": "name" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "net_id": { + "type": "string", + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000", + "api_fieldname": "net_id", + "entity_fieldname": "net_id" }, - { + "object": { "type": "string", - "description": "Error message.", - "_key": "message" + "description": "The API resource entity.", + "example": "device", + "api_fieldname": "object", + "entity_fieldname": "object" }, - { + "serial_number": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "serial_number", + "entity_fieldname": "serial_number" }, - { + "state": { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired.", + "api_fieldname": "state", + "entity_fieldname": "state" }, - { + "updated_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "424" + "description": "The time this data object was updated.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "vendor_id": { + "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "vendor_id", + "entity_fieldname": "vendor_id" + }, + "enrolment_list_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The claim date/time.", + "api_fieldname": "enrolment_list_timestamp", + "entity_fieldname": "enrolment_list_timestamp" + }, + "_key": "properties" + } + ], + "_key": "200" + }, + { + "description": "Bad request.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to find device.", + "_key": "404" } ], - "path": "/v3/certificate-issuers", - "summary": "Create certificate issuer.", - "return_type": "certificate_issuer", + "path": "/v3/devices/{id}/", + "summary": "Get a device.", + "return_type": "device", "return_info": { "self": true, "custom": false, - "type": "certificate_issuer" + "type": "device" }, "x_filter": {}, "x_deprecation": null, @@ -19821,50 +34149,98 @@ "etag", "type", "filter", + "device_execution_mode", + "groups", + "issuer_fingerprint", + "operator_suspended", + "last_operator_suspended_category", + "last_operator_suspended_description", + "last_operator_suspended_updated_at", + "system_suspended", + "last_system_suspended_category", + "last_system_suspended_description", + "last_system_suspended_updated_at", + "lifecycle_status", + "account_id", + "auto_update", + "bootstrap_expiration_date", + "bootstrapped_timestamp", + "ca_id", + "component_attributes", + "connector_expiration_date", "created_at", - "id" + "custom_attributes", + "deployed_state", + "deployment", + "description", + "device_class", + "device_key", + "endpoint_name", + "endpoint_type", + "firmware_checksum", + "host_gateway", + "manifest", + "manifest_timestamp", + "mechanism", + "mechanism_url", + "name", + "net_id", + "serial_number", + "state", + "updated_at", + "vendor_id", + "enrolment_list_timestamp" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-id": "id" - }, - "operation_id": "createCertificateIssuer", + "group_id": "Devices", + "operation_id": "Device_retrieve", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "create" + "_key": "read" }, { - "description": "Delete a certificate issuer by ID.\n
\n**Example usage:**\n\n```\ncurl -X DELETE \\\n-H 'authorization: ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000\n```\n", + "description": "Remove one device from a group.", "field_renames": [], "fields": [ { - "name": "certificate-issuer-id", "in": "path", - "description": "Certificate issuer ID.
The ID of the certificate issuer.\nAn active certificate issuer may not be deleted.\n", + "description": "The ID of the group.", + "name": "device-group-id", "required": true, "type": "string", + "entity_fieldname": "device-group-id", + "api_fieldname": "device-group-id", + "external_param": true, + "parameter_fieldname": "device-group-id", + "_key": "device-group-id" + }, + { + "type": "string", + "example": "00000000000000000000000000000000", + "name": "device_id", + "in": "body", + "schema_param": true, "entity_fieldname": "id", - "api_fieldname": "certificate-issuer-id", + "api_fieldname": "device_id", "external_param": false, - "parameter_fieldname": "certificate-issuer-id", + "parameter_fieldname": "device_id", + "required": true, "_key": "id" } ], - "method": "delete", - "mode": "delete", + "method": "post", + "mode": "remove_from_group", "responses": [ { - "description": "Certificate issuer deleted.", + "description": "Success - device removed.", "_key": "204" }, { - "description": "Validation error: An active certificate issuer cannot be deleted.\n", + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -19874,24 +34250,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -19899,22 +34280,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -19927,7 +34314,6 @@ "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -19937,87 +34323,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", + "description": "Message describing the error condition.", "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" - }, - { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -20025,27 +34353,33 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "401" }, { "description": "Not found.", @@ -20053,7 +34387,6 @@ "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -20063,24 +34396,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -20088,22 +34426,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -20111,13 +34455,13 @@ "_key": "404" } ], - "path": "/v3/certificate-issuers/{certificate-issuer-id}", - "summary": "Delete certificate issuer.", - "return_type": "certificate_issuer", + "path": "/v3/device-groups/{device-group-id}/devices/remove/", + "summary": "Remove a device from a group.", + "return_type": "void", "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer" + "self": false, + "custom": true, + "type": "void" }, "x_filter": {}, "x_deprecation": null, @@ -20127,237 +34471,166 @@ "type", "filter" ], - "group_id": "Security", + "group_id": "Devices", + "operation_id": "Group_members_remove", "parameter_map": { - "certificate-issuer-id": "id" + "device_id": "id" + }, + "spec": { + "return_type": "void" }, - "operation_id": "deleteCertificateIssuer", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "delete" + "_key": "remove_from_group" }, { - "description": "Note: This endpoint does not implement pagination and therefore, list control parameters such as `limit` or `after` will be ignored by the system.\n", + "description": "Request a certificate renewal.\n\n**Example:**\n\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew \\\n-H 'Authorization: Bearer ' \\\n-H 'content-length: 0'\n```", "field_renames": [], "fields": [ { "type": "string", - "description": "The ID of The item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", + "maxLength": 50, + "description": "The certificate name.", + "example": "customer.dlms", + "api_fieldname": "certificate-name", + "entity_fieldname": "certificate_name", + "in": "path", + "name": "certificate-name", + "required": true, + "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" + "parameter_fieldname": "certificate-name", + "_key": "certificate_name" }, { "type": "string", - "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "device-id", + "in": "path", + "required": true, + "_key": "id" } ], - "method": "get", - "mode": "list", + "method": "post", + "mode": "renew_certificate", "responses": [ { - "description": "OK.", + "description": "Created.", "schema": { "type": "object", "properties": [ { "type": "string", - "description": "The ID of The item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" + "maxLength": 50, + "description": "The certificate name.", + "example": "customer.dlms", + "api_fieldname": "certificate_name", + "entity_fieldname": "certificate_name", + "_key": "certificate_name" }, { - "type": "array", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "_key": "created_at" - }, - { - "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "_key": "description" - }, - { - "type": "string", - "description": "Entity instance signature.", - "example": "1", - "_key": "etag" - }, - { - "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "_key": "id" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "_key": "issuer_attributes" - }, - { - "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "_key": "issuer_type" - }, - { - "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "_key": "name" - }, - { - "type": "string", - "enum": [ - "certificate-issuer" - ], - "_key": "object" - } - ], - "required": [ - "issuer_type" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer" - } - }, - "description": "List of certificate issuers.", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { - "type": "boolean", - "description": "Are there more results available.", - "example": false, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "string", + "description": "The device ID.", + "example": "01625daa23230a580a0100bd00000000", + "api_fieldname": "device_id", + "entity_fieldname": "device_id", + "_key": "device_id" }, { - "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" + "type": "string", + "enum": [ + "success", + "failure" + ], + "description": "The result of certificate enrollment request.", + "example": "success", + "api_fieldname": "enroll_result", + "entity_fieldname": "enroll_result", + "_key": "enroll_result" }, { "type": "string", - "description": "The type of this API object is a `list`.", - "example": "list", + "description": "Additional information in case of failure.", + "example": "The device is currently processing too many certificate renewals.", + "api_fieldname": "enroll_result_detail", + "entity_fieldname": "enroll_result_detail", + "_key": "enroll_result_detail" + }, + { + "type": "string", + "description": "The status of certificate enrollment request.", + "enum": [ + "new", + "completed" + ], + "api_fieldname": "enroll_status", + "entity_fieldname": "enroll_status", + "_key": "enroll_status" + }, + { + "type": "string", + "description": "Entity instance signature.", + "example": "1", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "The certificate enrollment ID.", + "example": "01612df56f3b0a580a010fc700000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "enum": [ + "certificate-enrollment" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" - }, - { - "format": "integer", - "type": "integer", - "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "format": "date-time", + "description": "Update UTC time RFC3339.", + "example": "2017-01-01T00:00:00Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } ], - "pagination": true, + "required": [ + "created_at", + "etag", + "id", + "device_id", + "certificate_name" + ], "foreign_key": { "group": "Security", - "entity": "certificate_issuer" + "entity": "certificate_enrollment" } }, - "_key": "200" + "_key": "201" }, { - "description": "Unauthorized.", + "description": "Validation error: There is no certificate issuer configured for this certificate.", "schema": { "type": "object", "required": [ @@ -20417,10 +34690,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "You are not authorized to perform the action.", "schema": { "type": "object", "required": [ @@ -20480,156 +34753,136 @@ } ] }, - "_key": "403" - } - ], - "path": "/v3/certificate-issuers", - "summary": "Get certificate issuers list.", - "return_type": "paginated_response(certificate_issuer)", - "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "has_more", - "total_count", - "data" - ], - "foreign_key_priority": "self", - "group_id": "Security", - "parameter_map": { - "certificate-issuer-id": "id" - }, - "operation_id": "getCertificateIssuers", - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "(No description provided)", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "certificate-issuer-id", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "get", - "mode": "read", - "responses": [ + "_key": "401" + }, { - "description": "OK.", + "description": "Forbidden.", "schema": { "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" + }, { "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "Error message.", + "_key": "message" }, { "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "description": "Entity instance signature.", - "example": "1", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "The device ID or certificate name is not found.", + "schema": { + "type": "object", + "required": [ + "code", + "fields", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "Error code. Correlates with response status code.", + "_key": "code" + }, + { + "type": "array", + "description": "A list of request fields that failed validation.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Field name.", + "_key": "field" + }, + { + "type": "string", + "description": "Error message related to the field.", + "_key": "message" + } + ] + }, + "_key": "fields" }, { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "entity_fieldname": "issuer_attributes", - "_key": "issuer_attributes" + "type": "string", + "description": "Error message.", + "_key": "message" }, { "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "api_fieldname": "issuer_type", - "entity_fieldname": "issuer_type", - "_key": "issuer_type" + "description": "Entity name: `error`.", + "_key": "object" }, { "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "Request ID from JWT.", + "_key": "request_id" }, { "type": "string", - "enum": [ - "certificate-issuer" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "Error type.", + "_key": "type" } - ], - "required": [ - "issuer_type" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer" - } + ] }, - "_key": "200" + "_key": "404" }, { - "description": "Validation error: The data used to get the certificate issuer failed validation.\n", + "description": "Conflict. A renewal request for this certificate is in progress.", "schema": { "type": "object", "required": [ @@ -20689,10 +34942,10 @@ } ] }, - "_key": "400" + "_key": "409" }, { - "description": "Unauthorized.", + "description": "Either:\n- Operation not supported for this device.\n- The device is not connected.", "schema": { "type": "object", "required": [ @@ -20735,546 +34988,1236 @@ "description": "Error message.", "_key": "message" }, - { + { + "type": "string", + "description": "Entity name: `error`.", + "_key": "object" + }, + { + "type": "string", + "description": "Request ID from JWT.", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type.", + "_key": "type" + } + ] + }, + "_key": "423" + } + ], + "path": "/v3/devices/{device-id}/certificates/{certificate-name}/renew", + "summary": "Request certificate renewal.", + "return_type": "certificate_enrollment", + "return_info": { + "self": false, + "custom": false, + "type": "certificate_enrollment" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "device_id", + "enroll_status", + "enroll_result", + "enroll_result_detail", + "updated_at" + ], + "group_id": "Devices", + "operation_id": "RequestCertificateRenewal", + "unaggregated": true, + "parameter_map": { + "device-id": "id", + "certificate-name": "certificate_name" + }, + "foreign_key": { + "entity": "certificate_enrollment", + "group": "Security" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "renew_certificate" + }, + { + "description": "Update a specific device.\n\n**Example:**\nFollowing example will update the specific devices description field to contain \"Testing description field\".\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"description\": \"Testing description field\"}'\n```", + "field_renames": [], + "fields": [ + { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "entity_fieldname": "auto_update", + "parameter_fieldname": "auto_update", + "in": "body", + "required": false, + "_key": "auto_update" + }, + { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "entity_fieldname": "ca_id", + "parameter_fieldname": "ca_id", + "in": "body", + "required": false, + "_key": "ca_id" + }, + { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "parameter_fieldname": "custom_attributes", + "in": "body", + "required": false, + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "entity_fieldname": "device_key", + "parameter_fieldname": "device_key", + "in": "body", + "required": false, + "_key": "device_key" + }, + { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "parameter_fieldname": "endpoint_name", + "in": "body", + "required": false, + "_key": "endpoint_name" + }, + { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "entity_fieldname": "endpoint_type", + "parameter_fieldname": "endpoint_type", + "in": "body", + "required": false, + "_key": "endpoint_type" + }, + { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "entity_fieldname": "host_gateway", + "parameter_fieldname": "host_gateway", + "in": "body", + "required": false, + "_key": "host_gateway" + }, + { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "Device updated.", + "schema": [ + { + "group": "Devices", + "entity": "device", + "_key": "foreign_key" + }, + { + "device_execution_mode": { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0, + "api_fieldname": "device_execution_mode", + "entity_fieldname": "device_execution_mode" + }, + "groups": { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups" + }, + "issuer_fingerprint": { + "type": "string", + "pattern": "[A-Fa-f0-9]{64}", + "x-nullable": true, + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", + "api_fieldname": "issuer_fingerprint", + "entity_fieldname": "issuer_fingerprint" + }, + "operator_suspended": { + "type": "boolean", + "description": "Device has been suspended by operator.", + "api_fieldname": "operator_suspended", + "entity_fieldname": "operator_suspended" + }, + "last_operator_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_operator_suspended_category", + "entity_fieldname": "last_operator_suspended_category" + }, + "last_operator_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance.", + "api_fieldname": "last_operator_suspended_description", + "entity_fieldname": "last_operator_suspended_description" + }, + "last_operator_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_operator_suspended_updated_at", + "entity_fieldname": "last_operator_suspended_updated_at" + }, + "system_suspended": { + "type": "boolean", + "description": "Is the device suspended by the system?", + "api_fieldname": "system_suspended", + "entity_fieldname": "system_suspended" + }, + "last_system_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_system_suspended_category", + "entity_fieldname": "last_system_suspended_category" + }, + "last_system_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system.", + "api_fieldname": "last_system_suspended_description", + "entity_fieldname": "last_system_suspended_description" + }, + "last_system_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_system_suspended_updated_at", + "entity_fieldname": "last_system_suspended_updated_at" + }, + "lifecycle_status": { + "type": "string", + "enum": [ + "enabled", + "blocked" + ], + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled", + "api_fieldname": "lifecycle_status", + "entity_fieldname": "lifecycle_status" + }, + "account_id": { + "type": "string", + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id" + }, + "auto_update": { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "entity_fieldname": "auto_update" + }, + "bootstrap_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server.", + "api_fieldname": "bootstrap_expiration_date", + "entity_fieldname": "bootstrap_expiration_date" + }, + "bootstrapped_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the device's most recent bootstrap process.", + "api_fieldname": "bootstrapped_timestamp", + "entity_fieldname": "bootstrapped_timestamp" + }, + "ca_id": { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "entity_fieldname": "ca_id" + }, + "component_attributes": { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "component_attributes", + "entity_fieldname": "component_attributes" + }, + "connector_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server.", + "api_fieldname": "connector_expiration_date", + "entity_fieldname": "connector_expiration_date" + }, + "created_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "custom_attributes": { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes" + }, + "deployed_state": { + "enum": [ + "development", + "production" + ], + "type": "string", + "description": "DEPRECATED: The state of the device's deployment.", + "api_fieldname": "deployed_state", + "entity_fieldname": "deployed_state" + }, + "deployment": { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "", + "api_fieldname": "deployment", + "entity_fieldname": "deployment" + }, + "description": { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "entity_fieldname": "description" + }, + "device_class": { + "type": "string", + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "", + "api_fieldname": "device_class", + "entity_fieldname": "device_class" + }, + "id": { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id" + }, + "device_key": { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "entity_fieldname": "device_key" + }, + "endpoint_name": { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name" + }, + "endpoint_type": { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "entity_fieldname": "endpoint_type" + }, + "etag": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The entity instance signature.", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "firmware_checksum": { + "type": "string", + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000", + "api_fieldname": "firmware_checksum", + "entity_fieldname": "firmware_checksum" + }, + "host_gateway": { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "entity_fieldname": "host_gateway" + }, + "manifest": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "", + "api_fieldname": "manifest", + "entity_fieldname": "manifest" }, - { + "manifest_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The timestamp of the current manifest version.", + "api_fieldname": "manifest_timestamp", + "entity_fieldname": "manifest_timestamp" }, - { + "mechanism": { + "enum": [ + "connector", + "direct" + ], "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "description": "NOT USED: The ID of the channel used to communicate with the device.", + "api_fieldname": "mechanism", + "entity_fieldname": "mechanism" }, - { + "mechanism_url": { "type": "string", - "description": "Error message.", - "_key": "message" + "description": "NOT USED: The address of the connector to use.", + "example": "", + "api_fieldname": "mechanism_url", + "entity_fieldname": "mechanism_url" }, - { + "name": { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "entity_fieldname": "name" }, - { + "net_id": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000", + "api_fieldname": "net_id", + "entity_fieldname": "net_id" }, - { + "object": { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "403" - }, - { - "description": "Not found.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "description": "The API resource entity.", + "example": "device", + "api_fieldname": "object", + "entity_fieldname": "object" }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "serial_number": { + "type": "string", + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "serial_number", + "entity_fieldname": "serial_number" }, - { + "state": { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], "type": "string", - "description": "Error message.", - "_key": "message" + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired.", + "api_fieldname": "state", + "entity_fieldname": "state" }, - { + "updated_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The time this data object was updated.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" }, - { + "vendor_id": { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "vendor_id", + "entity_fieldname": "vendor_id" }, - { + "enrolment_list_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, + "description": "The claim date/time.", + "api_fieldname": "enrolment_list_timestamp", + "entity_fieldname": "enrolment_list_timestamp" + }, + "_key": "properties" + } + ], + "_key": "200" + }, + { + "description": "Validation error: The data used to update the device did not validate.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to update device because it can't be found.", "_key": "404" } ], - "path": "/v3/certificate-issuers/{certificate-issuer-id}", - "summary": "Get certificate issuer by ID.", - "return_type": "certificate_issuer", - "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "issuer_type", - "name", - "description", - "issuer_attributes" + "path": "/v3/devices/{id}/", + "summary": "Update a device.", + "return_type": "device", + "return_info": { + "self": true, + "custom": false, + "type": "device" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "device_execution_mode", + "groups", + "issuer_fingerprint", + "operator_suspended", + "last_operator_suspended_category", + "last_operator_suspended_description", + "last_operator_suspended_updated_at", + "system_suspended", + "last_system_suspended_category", + "last_system_suspended_description", + "last_system_suspended_updated_at", + "lifecycle_status", + "account_id", + "bootstrap_expiration_date", + "bootstrapped_timestamp", + "component_attributes", + "connector_expiration_date", + "created_at", + "deployed_state", + "deployment", + "device_class", + "firmware_checksum", + "manifest", + "manifest_timestamp", + "mechanism", + "mechanism_url", + "net_id", + "serial_number", + "state", + "updated_at", + "vendor_id", + "enrolment_list_timestamp" + ], + "group_id": "Devices", + "operation_id": "Device_update", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update.", + "api_fieldname": "auto_update", + "readOnly": false, + "required": false, + "_key": "auto_update" + }, + { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server.", + "api_fieldname": "bootstrap_expiration_date", + "readOnly": false, + "required": false, + "_key": "bootstrap_expiration_date" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the device's most recent bootstrap process.", + "api_fieldname": "bootstrapped_timestamp", + "readOnly": true, + "required": false, + "_key": "bootstrapped_timestamp" + }, + { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000", + "api_fieldname": "ca_id", + "readOnly": false, + "required": false, + "_key": "ca_id" + }, + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "component_attributes", + "readOnly": true, + "required": false, + "_key": "component_attributes" + }, + { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server.", + "api_fieldname": "connector_expiration_date", + "readOnly": false, + "required": false, + "_key": "connector_expiration_date" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "readOnly": false, + "required": false, + "_key": "custom_attributes" + }, + { + "enum": [ + "development", + "production" + ], + "type": "string", + "description": "DEPRECATED: The state of the device's deployment.", + "api_fieldname": "deployed_state", + "readOnly": true, + "required": false, + "enum_reference": "device_deployed_state_enum", + "_key": "deployed_state" + }, + { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "", + "api_fieldname": "deployment", + "readOnly": false, + "required": false, + "_key": "deployment" + }, + { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device", + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "type": "string", + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "", + "api_fieldname": "device_class", + "readOnly": false, + "required": false, + "_key": "device_class" + }, + { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0, + "api_fieldname": "device_execution_mode", + "readOnly": false, + "required": false, + "_key": "device_execution_mode" + }, + { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", + "api_fieldname": "device_key", + "readOnly": false, + "required": false, + "_key": "device_key" + }, + { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true, + "api_fieldname": "endpoint_name", + "required": false, + "_key": "endpoint_name" + }, + { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "", + "api_fieldname": "endpoint_type", + "readOnly": false, + "required": false, + "_key": "endpoint_type" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The claim date/time.", + "api_fieldname": "enrolment_list_timestamp", + "readOnly": true, + "required": false, + "_key": "enrolment_list_timestamp" + }, + { + "type": "string", + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000", + "api_fieldname": "firmware_checksum", + "readOnly": true, + "required": false, + "_key": "firmware_checksum" + }, + { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + }, + "api_fieldname": "groups", + "readOnly": true, + "required": false, + "_key": "groups" + }, + { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "", + "api_fieldname": "host_gateway", + "readOnly": false, + "required": false, + "_key": "host_gateway" + }, + { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "pattern": "[A-Fa-f0-9]{64}", + "x-nullable": true, + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", + "api_fieldname": "issuer_fingerprint", + "readOnly": false, + "required": false, + "_key": "issuer_fingerprint" + }, + { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_operator_suspended_category", + "readOnly": true, + "required": false, + "_key": "last_operator_suspended_category" + }, + { + "type": "string", + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance.", + "api_fieldname": "last_operator_suspended_description", + "readOnly": true, + "required": false, + "_key": "last_operator_suspended_description" + }, + { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_operator_suspended_updated_at", + "readOnly": true, + "required": false, + "_key": "last_operator_suspended_updated_at" + }, + { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance", + "api_fieldname": "last_system_suspended_category", + "readOnly": true, + "required": false, + "_key": "last_system_suspended_category" + }, + { + "type": "string", + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system.", + "api_fieldname": "last_system_suspended_description", + "readOnly": true, + "required": false, + "_key": "last_system_suspended_description" + }, + { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "last_system_suspended_updated_at", + "readOnly": true, + "required": false, + "_key": "last_system_suspended_updated_at" + }, + { + "type": "string", + "enum": [ + "enabled", + "blocked" + ], + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled", + "api_fieldname": "lifecycle_status", + "readOnly": true, + "required": false, + "enum_reference": "device_lifecycle_status_enum", + "_key": "lifecycle_status" + }, + { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "", + "api_fieldname": "manifest", + "readOnly": false, + "required": false, + "_key": "manifest" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the current manifest version.", + "api_fieldname": "manifest_timestamp", + "readOnly": true, + "required": false, + "_key": "manifest_timestamp" + }, + { + "enum": [ + "connector", + "direct" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-id": "id" - }, - "operation_id": "getCertificateIssuer", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" + "type": "string", + "description": "NOT USED: The ID of the channel used to communicate with the device.", + "api_fieldname": "mechanism", + "readOnly": false, + "required": false, + "enum_reference": "device_mechanism_enum", + "_key": "mechanism" + }, + { + "type": "string", + "description": "NOT USED: The address of the connector to use.", + "example": "", + "api_fieldname": "mechanism_url", + "readOnly": false, + "required": false, + "_key": "mechanism_url" + }, + { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "name", + "readOnly": false, + "required": false, + "_key": "name" + }, + { + "type": "string", + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000", + "api_fieldname": "net_id", + "readOnly": true, + "required": false, + "_key": "net_id" + }, + { + "type": "boolean", + "description": "Device has been suspended by operator.", + "api_fieldname": "operator_suspended", + "readOnly": true, + "required": false, + "_key": "operator_suspended" + }, + { + "type": "string", + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "serial_number", + "readOnly": false, + "required": false, + "_key": "serial_number" + }, + { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" + ], + "type": "string", + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired.", + "api_fieldname": "state", + "readOnly": false, + "required": false, + "enum_reference": "device_state_enum", + "_key": "state" + }, + { + "type": "boolean", + "description": "Is the device suspended by the system?", + "api_fieldname": "system_suspended", + "readOnly": true, + "required": false, + "_key": "system_suspended" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The time this data object was updated.", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" }, { - "description": "Update a certificate issuer.\n
\n**Example usage:**\n\n```\ncurl -X PUT \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000 \\\n-d '{\n \"description\": \"Sample GlobalSign certificate issuer - updated.\",\n \"name\": \"GlobalSign Issuer\"\n}'\n```\n", + "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000", + "api_fieldname": "vendor_id", + "readOnly": false, + "required": false, + "_key": "vendor_id" + } + ], + "field_renames": [], + "tags": [ + "Device directory - devices", + "Device security - device certificate renewals", + "Device directory - groups" + ], + "group_id": "Devices", + "_key": "device" + }, + { + "swagger_models": [ + "EnrollmentId", + "EnrollmentIdentities", + "EnrollmentIdentity" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "When the device connects to the bootstrap server and provides the enrollment ID, it is assigned to your account.\n
\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments \\\n-d '{\"enrollment_identity\": \"A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5\"}'\n```", "field_renames": [], "fields": [ { "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "parameter_fieldname": "description", + "description": "Enrollment identity.", + "pattern": "^A-[A-Za-z0-9:]{95}$", + "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", + "api_fieldname": "enrollment_identity", + "entity_fieldname": "enrollment_identity", + "parameter_fieldname": "enrollment_identity", "in": "body", - "required": false, - "_key": "description" - }, - { - "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "certificate-issuer-id", - "in": "path", "required": true, - "_key": "id" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "entity_fieldname": "issuer_attributes", - "parameter_fieldname": "issuer_attributes", - "in": "body", - "required": false, - "_key": "issuer_attributes" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The credentials required for connecting to the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.\n", - "example": [], - "name": "issuer_credentials", - "in": "body", - "schema_param": true, - "entity_fieldname": "issuer_credentials", - "api_fieldname": "issuer_credentials", - "external_param": true, - "parameter_fieldname": "issuer_credentials", - "required": false, - "_key": "issuer_credentials" - }, - { - "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "body", - "required": false, - "_key": "name" + "_key": "enrollment_identity" } ], - "method": "put", - "mode": "update", + "method": "post", + "mode": "create", "responses": [ { - "description": "OK.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "type": "string", - "description": "Entity instance signature.", - "example": "1", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "entity_fieldname": "issuer_attributes", - "_key": "issuer_attributes" - }, - { - "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "api_fieldname": "issuer_type", - "entity_fieldname": "issuer_type", - "_key": "issuer_type" - }, - { - "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "enum": [ - "certificate-issuer" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - } - ], - "required": [ - "issuer_type" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer" - } - }, - "_key": "200" - }, - { - "description": "Validation error: The data used to update the certificate issuer failed validation.\n", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" - }, - { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "Unauthorized.", + "description": "Created. The enrollment claim has been created and is waiting for the device to connect.", "schema": { "type": "object", "required": [ - "code", - "fields", - "message", "object", - "request_id", - "type" + "id", + "etag", + "account_id", + "created_at", + "expires_at", + "claimed_at", + "enrollment_identity", + "enrolled_device_id" ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "The time the device was claimed.", + "format": "date-time", + "api_fieldname": "claimed_at", + "entity_fieldname": "claimed_at", + "_key": "claimed_at" }, { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ + "description": "The time of the enrollment identity creation.", + "format": "date-time", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "type": "string", + "description": "The ID of the device in the Device Directory once it is registered.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "enrolled_device_id", + "entity_fieldname": "enrolled_device_id", + "_key": "enrolled_device_id" }, { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "type": "string", + "description": "Enrollment identity.", + "pattern": "^A-[A-Za-z0-9:]{95}$", + "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", + "api_fieldname": "enrollment_identity", + "entity_fieldname": "enrollment_identity", + "_key": "enrollment_identity" }, { "type": "string", - "description": "Error message.", - "_key": "message" + "pattern": "[A-Za-z0-9]{1,256}", + "example": "7642xfaxz", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", + "format": "date-time", + "api_fieldname": "expires_at", + "entity_fieldname": "expires_at", + "_key": "expires_at" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "Enrollment identity.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "description": "Error type.", - "_key": "type" + "enum": [ + "enrollment" + ], + "example": "enrollment", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" } - ] + ], + "foreign_key": { + "group": "Devices", + "entity": "device_enrollment" + } }, - "_key": "403" + "_key": "201" }, { - "description": "Not found.", + "description": "Bad request. The enrollment identity is not valid.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21284,24 +36227,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21309,35 +36257,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "404" + "_key": "400" }, { - "description": "Conflict. A certificate issuer with this name already exists.\n", + "description": "The provided access token is not valid.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21347,24 +36300,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21372,35 +36330,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "409" + "_key": "401" }, { - "description": "The request failed due to customer configured external service.\n", + "description": "Conflict. The requested identity to add already exists on this or another account.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21410,24 +36373,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21435,36 +36403,42 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "424" + "_key": "409" } ], - "path": "/v3/certificate-issuers/{certificate-issuer-id}", - "summary": "Update certificate issuer.", - "return_type": "certificate_issuer", + "path": "/v3/device-enrollments", + "summary": "Create a single enrollment.", + "return_type": "device_enrollment", "return_info": { "self": true, "custom": false, - "type": "certificate_issuer" + "type": "device_enrollment" }, "x_filter": {}, "x_deprecation": null, @@ -21473,75 +36447,50 @@ "etag", "type", "filter", + "id", "created_at", - "issuer_type" + "claimed_at", + "account_id", + "expires_at", + "enrolled_device_id" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-id": "id" - }, - "operation_id": "updateCertificateIssuer", + "group_id": "Devices", + "operation_id": "createDeviceEnrollment", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "update" + "_key": "create" }, { - "description": "A utility API that can be used to validate the user configuration before activating a certificate issuer.\nVerifies that the certificate issuer is accessible and can be used to generate certificates by Device Management.\n
\n**Note:**\nThe API requests the 3rd party CA to sign a test certificate.\nFor some 3rd party CAs, this operation may make use of the account quota.\n
\n**Example usage:**\n\n```\ncurl -X POST \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify\n```\n", + "description": "To free a device from your account, delete the enrollment claim. To bypass the device ownership, you need to delete the enrollment and factory reset the device. For more information, see [Transferring ownership using First-to-Claim](https://www.pelion.com/docs/device-management/current/connecting/device-ownership-first-to-claim-by-enrollment-list.html).\n
\n**Example:**\n```\ncurl -X DELETE \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id}\n```", "field_renames": [], "fields": [ { - "name": "certificate-issuer-id", "in": "path", - "description": "Certificate issuer ID.
The ID of the certificate issuer.\n", - "required": true, + "name": "id", "type": "string", + "required": true, + "description": "Enrollment identity.", "entity_fieldname": "id", - "api_fieldname": "certificate-issuer-id", + "api_fieldname": "id", "external_param": false, - "parameter_fieldname": "certificate-issuer-id", + "parameter_fieldname": "id", "_key": "id" } ], - "method": "post", - "mode": "verify", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "OK.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Provides details in case of failure.\n", - "example": "message describing the verification failure", - "api_fieldname": "message", - "entity_fieldname": "message", - "_key": "message" - }, - { - "type": "boolean", - "description": "Indicates whether the certificate issuer was verified successfully.\n", - "example": false, - "api_fieldname": "successful", - "entity_fieldname": "successful", - "_key": "successful" - } - ], - "foreign_key": { - "group": "Security", - "entity": "verification_response" - } - }, - "_key": "200" + "description": "No content. The enrollment claim has been deleted.", + "_key": "204" }, { - "description": "Validation error", + "description": "Bad request. Invalid enrollment identity.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21551,24 +36500,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21576,22 +36530,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -21599,12 +36559,11 @@ "_key": "400" }, { - "description": "Unauthorized.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21614,24 +36573,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21639,98 +36603,297 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "401" + "_key": "404" + } + ], + "path": "/v3/device-enrollments/{id}", + "summary": "Delete an enrollment by ID.", + "return_type": "device_enrollment", + "return_info": { + "self": true, + "custom": false, + "type": "device_enrollment" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "operation_id": "deleteDeviceEnrollment", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Provides a list of pending and claimed enrollments.\n\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments\n```\nWith query parameters:\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\n'https://api.us-east-1.mbedcloud.com/v3/device-enrollments?limit=10'\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "description": "Entity ID to fetch after.", + "example": "00005a4e027f0a580a01081c00000000", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { - "description": "Forbidden.", + "name": "include", + "type": "string", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "description": "Number of results to return (2-1000).", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "description": "ASC or DESC", + "required": false, + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "device_enrollment_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "OK.", "schema": { "type": "object", "required": [ - "code", - "fields", - "message", "object", - "request_id", - "type" + "limit", + "after", + "order", + "has_more", + "total_count", + "data" ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { "type": "array", - "description": "A list of request fields that failed validation.", "items": { "type": "object", + "required": [ + "object", + "id", + "etag", + "account_id", + "created_at", + "expires_at", + "claimed_at", + "enrollment_identity", + "enrolled_device_id" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "_key": "account_id" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "The time the device was claimed.", + "format": "date-time", + "_key": "claimed_at" + }, + { + "type": "string", + "description": "The time of the enrollment identity creation.", + "format": "date-time", + "_key": "created_at" + }, + { + "type": "string", + "description": "The ID of the device in the Device Directory once it is registered.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "_key": "enrolled_device_id" + }, + { + "type": "string", + "description": "Enrollment identity.", + "pattern": "^A-[A-Za-z0-9:]{95}$", + "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", + "_key": "enrollment_identity" + }, + { + "type": "string", + "pattern": "[A-Za-z0-9]{1,256}", + "example": "7642xfaxz", + "_key": "etag" + }, + { + "type": "string", + "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", + "format": "date-time", + "_key": "expires_at" + }, + { + "type": "string", + "description": "Enrollment identity.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "_key": "id" + }, + { + "type": "string", + "enum": [ + "enrollment" + ], + "example": "enrollment", + "_key": "object" } - ] + ], + "foreign_key": { + "group": "Devices", + "entity": "device_enrollment" + } }, - "_key": "fields" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": true, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { - "type": "string", - "description": "Error message.", - "_key": "message" + "type": "integer", + "description": "Range 2-1000, or default.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name: `error`.", + "enum": [ + "list" + ], + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "enum": [ + "ASC", + "DESC" + ], + "default": "ASC", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type.", - "_key": "type" + "type": "integer", + "example": 100, + "format": "int32", + "minimum": 1, + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device_enrollment" + } }, - "_key": "403" + "_key": "200" }, { - "description": "Not found.", + "description": "Bad request. The access token could not be read.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21740,24 +36903,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21765,35 +36933,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "404" + "_key": "400" }, { - "description": "The request failed due to customer configured external service.\n", + "description": "The provided access token is not valid.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -21803,24 +36976,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -21828,36 +37006,42 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "424" + "_key": "401" } ], - "path": "/v3/certificate-issuers/{certificate-issuer-id}/verify", - "summary": "Verify certificate issuer.", - "return_type": "verification_response", + "path": "/v3/device-enrollments", + "summary": "Get a list of enrollments per account.", + "return_type": "paginated_response(device_enrollment)", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "verification_response" + "type": "device_enrollment" }, "x_filter": {}, "x_deprecation": null, @@ -21866,290 +37050,149 @@ "etag", "type", "filter", - "successful", - "message" + "has_more", + "total_count", + "data" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-id": "id" - }, - "unaggregated": true, - "operation_id": "verifyCertificateIssuer", + "foreign_key_priority": "self", + "group_id": "Devices", + "operation_id": "getDeviceEnrollments", + "pagination": true, "foreign_key": { - "entity": "verification_response", - "group": "Security" + "group": "Devices", + "entity": "device_enrollment" }, - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "verify" - } - ], - "fields": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "maxLength": 100, - "description": "General description for the certificate issuer.", - "example": "GlobalSign sample issuer", - "x-nullable": true, - "api_fieldname": "description", - "readOnly": false, - "required": false, - "_key": "description" - }, - { - "type": "string", - "description": "The ID of the certificate issuer.", - "example": "01234567890ABCDEF01234567890ABCDEF", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "General attributes for connecting the certificate issuer.\nWhen the issuer_type is GLOBAL_SIGN, the value shall be empty.\nWhen the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.\n", - "example": [], - "api_fieldname": "issuer_attributes", - "readOnly": false, - "required": false, - "_key": "issuer_attributes" - }, - { - "type": "string", - "enum": [ - "GLOBAL_SIGN", - "CFSSL_AUTH" - ], - "description": "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates are issued by GlobalSign service. The users must provide their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n The users must provide their own CFSSL host_url and credentials.\n", - "example": "GLOBAL_SIGN", - "api_fieldname": "issuer_type", - "readOnly": false, - "required": true, - "enum_reference": "certificate_issuer_type_enum", - "_key": "issuer_type" + "_key": "list" }, { - "type": "string", - "maxLength": 50, - "description": "Certificate issuer name, unique per account.", - "example": "GS Issuer", - "api_fieldname": "name", - "readOnly": false, - "required": true, - "_key": "name" - } - ], - "field_renames": [], - "tags": [ - "Certificate Issuers" - ], - "group_id": "Security", - "_key": "certificate_issuer" - }, - { - "swagger_models": [ - "CertificateIssuerConfigListResponse", - "CertificateIssuerConfigRequest", - "CertificateIssuerConfigResponse", - "CreateCertificateIssuerConfig" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Configure the certificate issuer to be used when creating the device custom certificates.\n
\n**Example usage:**\n\n```\ncurl -X POST \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \\\n-d '{\n \"reference\": \"customer.dlms\",\n \"certificate_issuer_id\": \"01621a36719d507b9d48a91b00000000\"\n}'\n```\n", + "description": "Check detailed enrollment info, for example, date of claim or expiration date.\n\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id}\n```", "field_renames": [], "fields": [ - { - "x-nullable": true, - "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "parameter_fieldname": "certificate_issuer_id", - "in": "body", - "required": false, - "_key": "certificate_issuer_id" - }, { "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "parameter_fieldname": "reference", - "in": "body", + "description": "Enrollment identity.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", "required": true, - "_key": "reference" + "_key": "id" } ], - "method": "post", - "mode": "create", + "method": "get", + "mode": "read", "responses": [ { - "description": "OK.", + "description": "OK. Pending enrollment data.", "schema": { "type": "object", + "required": [ + "object", + "id", + "etag", + "account_id", + "created_at", + "expires_at", + "claimed_at", + "enrollment_identity", + "enrolled_device_id" + ], "properties": [ { - "x-nullable": true, "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "_key": "certificate_issuer_id" + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", + "description": "The time the device was claimed.", + "format": "date-time", + "api_fieldname": "claimed_at", + "entity_fieldname": "claimed_at", + "_key": "claimed_at" + }, + { + "type": "string", + "description": "The time of the enrollment identity creation.", "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { "type": "string", - "description": "Entity instance signature.", - "example": "1", + "description": "The ID of the device in the Device Directory once it is registered.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "enrolled_device_id", + "entity_fieldname": "enrolled_device_id", + "_key": "enrolled_device_id" + }, + { + "type": "string", + "description": "Enrollment identity.", + "pattern": "^A-[A-Za-z0-9:]{95}$", + "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", + "api_fieldname": "enrollment_identity", + "entity_fieldname": "enrollment_identity", + "_key": "enrollment_identity" + }, + { + "type": "string", + "pattern": "[A-Za-z0-9]{1,256}", + "example": "7642xfaxz", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", + "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", + "format": "date-time", + "api_fieldname": "expires_at", + "entity_fieldname": "expires_at", + "_key": "expires_at" + }, + { + "type": "string", + "description": "Enrollment identity.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, - { - "type": "boolean", - "example": true, - "api_fieldname": "is_custom", - "entity_fieldname": "is_custom", - "_key": "is_custom" - }, { "type": "string", "enum": [ - "certificate-issuer-configuration" + "enrollment" ], + "example": "enrollment", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" - }, - { - "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" } ], "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" + "group": "Devices", + "entity": "device_enrollment" } }, - "_key": "201" - }, - { - "description": "Validation error.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" - }, - { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" + "_key": "200" }, { - "description": "Unauthorized.", + "description": "Bad request. Invalid enrollment identity.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22159,87 +37202,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", + "description": "Message describing the error condition.", "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" - }, - { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22247,35 +37232,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "400" }, { - "description": "A certificate issuer configuration with this reference already exists.\n", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22285,24 +37275,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22310,36 +37305,42 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "409" + "_key": "404" } ], - "path": "/v3/certificate-issuer-configurations", - "summary": "Create certificate issuer configuration.", - "return_type": "certificate_issuer_config", + "path": "/v3/device-enrollments/{id}", + "summary": "Get details of an single enrollment by ID.", + "return_type": "device_enrollment", "return_info": { "self": true, "custom": false, - "type": "certificate_issuer_config" + "type": "device_enrollment" }, "x_filter": {}, "x_deprecation": null, @@ -22348,178 +37349,262 @@ "etag", "type", "filter", - "is_custom", - "id", "created_at", - "updated_at" + "claimed_at", + "enrollment_identity", + "account_id", + "expires_at", + "enrolled_device_id" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" - }, - "operation_id": "createCertificateIssuerConfig", + "group_id": "Devices", + "operation_id": "getDeviceEnrollment", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "create" + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "description": "The time the device was claimed.", + "format": "date-time", + "api_fieldname": "claimed_at", + "readOnly": true, + "required": false, + "_key": "claimed_at" + }, + { + "type": "string", + "description": "The time of the enrollment identity creation.", + "format": "date-time", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "description": "The ID of the device in the Device Directory once it is registered.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "enrolled_device_id", + "readOnly": true, + "required": false, + "_key": "enrolled_device_id" + }, + { + "type": "string", + "description": "Enrollment identity.", + "pattern": "^A-[A-Za-z0-9:]{95}$", + "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", + "api_fieldname": "enrollment_identity", + "readOnly": false, + "required": true, + "_key": "enrollment_identity" + }, + { + "type": "string", + "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", + "format": "date-time", + "api_fieldname": "expires_at", + "readOnly": true, + "required": false, + "_key": "expires_at" }, { - "description": "Delete the configured certificate issuer configuration.\nYou can only delete the configurations of custom certificates.\n", + "type": "string", + "description": "Enrollment identity.", + "pattern": "^[A-Za-z0-9]{32}", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + } + ], + "field_renames": [], + "tags": [ + "Device ownership - enrollments" + ], + "group_id": "Devices", + "_key": "device_enrollment" + }, + { + "swagger_models": [ + "BulkResponse" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "With bulk upload, you can upload a `CSV` file containing a number of enrollment IDs.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads\n\n```\n **To ensure your CSV file is valid:**\n 1. The first line of the file (header) is ignored.\n 1. Each line can contain comma-separated values, where the first value is the Enrollment ID. Everything after the first comma is ignored.\n 1. Valid enrollments begin with A followed by a - and 95 characters (examples below).\n 1. One enrollment ID per line. Empty lines are ignored.\n 1. Trailing comma at the end of the line is optional.\n 1. Lines are terminated with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n 1. Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from the identity before validation.\n 1. Empty identities are ignored.\n 1. Valid enrollment identities may be enclosed within quotation marks. Whitespace inside quotation marks is not trimmed and will cause validation to fail. Empty quotation marks are also invalid.\n 1. Use UTF-8 encoding.\n\n\n**A valid enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\",\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12, This text is ignored.\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12 , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\" , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\", First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Too-short identity.\n\"\", Empty quotation marks are an invalid identity\n\" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12 \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored\"\n\n,,\n, This is also considered a blank line.\n```", "field_renames": [], "fields": [ { - "name": "certificate-issuer-configuration-id", - "in": "path", - "description": "The ID of the certificate issuer configuration.\n", + "in": "stream", + "name": "enrollment_identities", + "type": "file", "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "certificate-issuer-configuration-id", - "external_param": false, - "parameter_fieldname": "certificate-issuer-configuration-id", - "_key": "id" + "description": "The `CSV` file containing the enrollment IDs. The maximum file size is 10 MB.", + "entity_fieldname": "enrollment_identities", + "api_fieldname": "enrollment_identities", + "external_param": true, + "parameter_fieldname": "enrollment_identities", + "_key": "enrollment_identities" } ], - "method": "delete", - "mode": "delete", + "method": "post", + "mode": "create", "responses": [ { - "description": "No content.", - "_key": "204" - }, - { - "description": "Validation error.", + "description": "Bulk upload data received and asynchronous processing started.", "schema": { "type": "object", "required": [ - "code", - "fields", - "message", "object", - "request_id", - "type" + "id", + "etag", + "created_at", + "account_id", + "status", + "total_count", + "processed_count", + "errors_count", + "completet_at", + "full_report_file", + "errors_report_file" ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "entity_fieldname": "completed_at", + "_key": "completed_at" }, { "type": "string", - "description": "Error message.", - "_key": "message" + "description": "The time of receiving the bulk creation task.", + "format": "date-time", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "entity_fieldname": "errors_count", + "_key": "errors_count" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "entity_fieldname": "errors_report_file", + "_key": "errors_report_file" }, { "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "Unauthorized.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "description": "etag", + "example": "1", + "pattern": "[A-Za-z0-9]{0,256}", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "type": "string", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "entity_fieldname": "full_report_file", + "_key": "full_report_file" }, { "type": "string", - "description": "Error message.", - "_key": "message" + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "description": "Entity name: `error`.", + "enum": [ + "enrollment-identity-bulk-uploads" + ], + "example": "enrollment-identity-bulk-uploads", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "entity_fieldname": "processed_count", + "_key": "processed_count" }, { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", "type": "string", - "description": "Error type.", - "_key": "type" + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "foreign_key": { + "group": "Devices", + "entity": "device_enrollment_bulk_delete" + } }, - "_key": "401" + "_key": "201" }, { - "description": "Forbidden.", + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22529,24 +37614,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22554,35 +37644,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "400" }, { - "description": "Not found.", + "description": "Invalid access token.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22592,24 +37687,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22617,36 +37717,116 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "404" + "_key": "401" } ], - "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", - "summary": "Delete certificate issuer configuration.", - "return_type": "certificate_issuer_config", + "path": "/v3/device-enrollments-bulk-uploads", + "summary": "Bulk upload.", + "return_type": "device_enrollment_bulk_create", + "return_info": { + "self": true, + "custom": false, + "type": "device_enrollment_bulk_create" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "id", + "account_id", + "created_at", + "status", + "total_count", + "processed_count", + "errors_count", + "completed_at", + "full_report_file", + "errors_report_file" + ], + "group_id": "Devices", + "operation_id": "createBulkDeviceEnrollment", + "pagination": false, + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "create" + }, + { + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "field_renames": [], + "fields": [], + "method": null, + "mode": "download_errors_report_file", + "responses": [], + "path": null, + "summary": "Download the error report file for the created the bulk enrollment.", + "return_type": "file", + "return_info": { + "self": false, + "custom": true, + "type": "file" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "custom_method": "download_errors_report_file", + "spec": { + "summary": "Download the error report file for the created the bulk enrollment.", + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "return_type": "file" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "download_errors_report_file" + }, + { + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "field_renames": [], + "fields": [], + "method": null, + "mode": "download_full_report_file", + "responses": [], + "path": null, + "summary": "Download the full report file for the created of the bulk enrollment.", + "return_type": "file", "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer_config" + "self": false, + "custom": true, + "type": "file" }, "x_filter": {}, "x_deprecation": null, @@ -22654,113 +37834,178 @@ "object", "etag", "type", - "filter", - "is_custom" + "filter" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" + "group_id": "Devices", + "custom_method": "download_full_report_file", + "spec": { + "summary": "Download the full report file for the created of the bulk enrollment.", + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "return_type": "file" }, - "operation_id": "deleteCertificateIssuerConfigByID", - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "delete" + "_key": "download_full_report_file" }, { - "description": "Provides the configured certificate issuer to be used when creating device\ncertificates for LwM2M communication.
\n", + "description": "Provides information on bulk upload for the given ID, for example, bulk status and number of processed enrollment identities. Provides links to bulk upload reports as well.\n\n**Report file format:**\nThe report files have a header line, and the values are separated by commas. Delimit lines with a line break (CRLF). Make sure the report file is compliant with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180).\n\nAn example of a full report file:\n```\n\"entity__id\",\"entity__created_at\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n```\nAn example of an error report file:\n```\n\"entity__id\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n```\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/{id}\n```", "field_renames": [], - "fields": [], + "fields": [ + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", + "required": true, + "_key": "id" + } + ], "method": "get", - "mode": "get_default", + "mode": "read", "responses": [ { - "description": "OK.", + "description": "Bulk upload entity found.", "schema": { "type": "object", + "required": [ + "object", + "id", + "etag", + "created_at", + "account_id", + "status", + "total_count", + "processed_count", + "errors_count", + "completet_at", + "full_report_file", + "errors_report_file" + ], "properties": [ { - "x-nullable": true, "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "_key": "certificate_issuer_id" + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "entity_fieldname": "completed_at", + "_key": "completed_at" + }, + { + "type": "string", + "description": "The time of receiving the bulk creation task.", "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "entity_fieldname": "errors_count", + "_key": "errors_count" + }, { "type": "string", - "description": "Entity instance signature.", + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "entity_fieldname": "errors_report_file", + "_key": "errors_report_file" + }, + { + "type": "string", + "description": "etag", "example": "1", + "pattern": "[A-Za-z0-9]{0,256}", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "entity_fieldname": "full_report_file", + "_key": "full_report_file" + }, + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, - { - "type": "boolean", - "example": true, - "api_fieldname": "is_custom", - "entity_fieldname": "is_custom", - "_key": "is_custom" - }, { "type": "string", "enum": [ - "certificate-issuer-configuration" + "enrollment-identity-bulk-uploads" ], + "example": "enrollment-identity-bulk-uploads", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "entity_fieldname": "processed_count", + "_key": "processed_count" }, { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" + "group": "Devices", + "entity": "device_enrollment_bulk_delete" } }, "_key": "200" }, { - "description": "Validation error.", + "description": "Bad request. Invalid bulk identity.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22770,24 +38015,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22795,22 +38045,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -22818,12 +38074,11 @@ "_key": "400" }, { - "description": "Unauthorized.", + "description": "Invalid access token.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -22833,87 +38088,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", + "description": "Message describing the error condition.", "_key": "message" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "Error message.", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name: `error`.", - "_key": "object" - }, - { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -22921,260 +38118,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" - } - ], - "path": "/v3/certificate-issuer-configurations/lwm2m", - "summary": "Get certificate issuer configuration.", - "return_type": "certificate_issuer_config", - "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer_config" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "is_custom", - "id", - "certificate_issuer_id", - "reference", - "created_at", - "updated_at" - ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" - }, - "operation_id": "getCertificateIssuerConfig", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "get_default" - }, - { - "description": "Get certificate issuer configurations, optionally filtered by reference.\n
\n**Example usage:**\n\n```\ncurl \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \\\n```\n```\ncurl \\\n-H 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms \\\n```\nNote: This endpoint does not implement pagination and therefore, list control parameters such as `limit` or `after` will be ignored by the system.\n", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The ID of The item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" - }, - { - "type": "string", - "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "OK.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "An offset token for current page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "items": { - "type": "object", - "properties": [ - { - "x-nullable": true, - "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "_key": "certificate_issuer_id" - }, - { - "type": "string", - "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "_key": "created_at" - }, - { - "type": "string", - "description": "Entity instance signature.", - "example": "1", - "_key": "etag" - }, - { - "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", - "_key": "id" - }, - { - "type": "boolean", - "example": true, - "_key": "is_custom" - }, - { - "type": "string", - "enum": [ - "certificate-issuer-configuration" - ], - "_key": "object" - }, - { - "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" - } - }, - "description": "List of certificate issuers.", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "description": "Are there more results available.", - "example": false, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "The type of this API object is a `list`.", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "The creation time based order of the entries.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "format": "integer", - "type": "integer", - "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" - } - }, - "_key": "200" + "_key": "401" }, { - "description": "Validation error.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23184,24 +38161,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23209,35 +38191,345 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "400" + "_key": "404" + } + ], + "path": "/v3/device-enrollments-bulk-uploads/{id}", + "summary": "Get bulk upload entity.", + "return_type": "device_enrollment_bulk_create", + "return_info": { + "self": true, + "custom": false, + "type": "device_enrollment_bulk_create" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "account_id", + "created_at", + "status", + "total_count", + "processed_count", + "errors_count", + "completed_at", + "full_report_file", + "errors_report_file" + ], + "group_id": "Devices", + "operation_id": "getBulkDeviceEnrollment", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "readOnly": true, + "required": false, + "_key": "completed_at" + }, + { + "type": "string", + "description": "The time of receiving the bulk creation task.", + "format": "date-time", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "readOnly": true, + "required": false, + "_key": "errors_count" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "readOnly": true, + "required": false, + "_key": "errors_report_file" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "readOnly": true, + "required": false, + "_key": "full_report_file" + }, + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "readOnly": true, + "required": false, + "_key": "processed_count" + }, + { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", + "type": "string", + "api_fieldname": "status", + "readOnly": true, + "required": false, + "enum_reference": "device_enrollment_bulk_create_status_enum", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "readOnly": true, + "required": false, + "_key": "total_count" + } + ], + "field_renames": [], + "tags": [ + "Device ownership - enrollments" + ], + "group_id": "Devices", + "_key": "device_enrollment_bulk_create" + }, + { + "swagger_models": [ + "BulkResponse" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "With bulk delete, you can upload a `CSV` file containing a number of enrollment IDs to delete.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes\n\n```\n**To ensure your CSV file is valid:**\n1. The first line of the file (header) is ignored.\n1. Each line can contain comma-separated values, where the first value is the Enrollment ID. Everything after the first comma is ignored.\n1. Valid enrollments begin with A followed by a - and 95 characters (examples below).\n1. One enrollment ID per line. Empty lines are ignored.\n1. Trailing comma at the end of the line is optional.\n1. Lines are terminated with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n1. Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from the identity before validation.\n1. Empty identities are ignored.\n1. Valid enrollment identities may be enclosed within quotation marks. Whitespace inside quotation marks is not trimmed and will cause validation to fail. Empty quotation marks are also invalid.\n1. Use UTF-8 encoding.\n\n**A valid enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\",\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12, This text is ignored,\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12 , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\" , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\", First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23, Too-short identity.\n\"\", Empty quotation marks are an invalid identity.\n\" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12 \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored.\"\n\n,,\n, This is also considered to a blank line.\n```", + "field_renames": [], + "fields": [ + { + "in": "stream", + "name": "enrollment_identities", + "type": "file", + "required": true, + "description": "The `CSV` file containing the enrollment IDs. The maximum file size is 10MB.", + "entity_fieldname": "enrollment_identities", + "api_fieldname": "enrollment_identities", + "external_param": true, + "parameter_fieldname": "enrollment_identities", + "_key": "enrollment_identities" + } + ], + "method": "post", + "mode": "delete", + "responses": [ + { + "description": "Bulk delete data received and asynchronous processing started.", + "schema": { + "type": "object", + "required": [ + "object", + "id", + "etag", + "created_at", + "account_id", + "status", + "total_count", + "processed_count", + "errors_count", + "completet_at", + "full_report_file", + "errors_report_file" + ], + "properties": [ + { + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "entity_fieldname": "completed_at", + "_key": "completed_at" + }, + { + "type": "string", + "description": "The time of receiving the bulk creation task.", + "format": "date-time", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "entity_fieldname": "errors_count", + "_key": "errors_count" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "entity_fieldname": "errors_report_file", + "_key": "errors_report_file" + }, + { + "type": "string", + "description": "etag", + "example": "1", + "pattern": "[A-Za-z0-9]{0,256}", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "entity_fieldname": "full_report_file", + "_key": "full_report_file" + }, + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "enum": [ + "enrollment-identity-bulk-uploads" + ], + "example": "enrollment-identity-bulk-uploads", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "entity_fieldname": "processed_count", + "_key": "processed_count" + }, + { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", + "type": "string", + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "foreign_key": { + "group": "Devices", + "entity": "device_enrollment_bulk_create" + } + }, + "_key": "201" }, { - "description": "Unauthorized.", + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23247,24 +38539,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23272,35 +38569,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Invalid access token.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23310,24 +38612,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23335,80 +38642,147 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "401" } ], - "path": "/v3/certificate-issuer-configurations", - "summary": "Get certificate issuer configurations.", - "return_type": "paginated_response(certificate_issuer_config)", + "path": "/v3/device-enrollments-bulk-deletes", + "summary": "Bulk delete.", + "return_type": "device_enrollment_bulk_delete", "return_info": { "self": true, "custom": false, - "type": "certificate_issuer_config" - }, - "x_filter": { - "reference": [ - "eq" - ] + "type": "device_enrollment_bulk_delete" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "is_custom", - "has_more", + "id", + "account_id", + "created_at", + "status", "total_count", - "data", - "reference__eq" + "processed_count", + "errors_count", + "completed_at", + "full_report_file", + "errors_report_file" ], - "foreign_key_priority": "self", - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" + "group_id": "Devices", + "operation_id": "deleteBulkDeviceEnrollment", + "pagination": false, + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "delete" + }, + { + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "field_renames": [], + "fields": [], + "method": null, + "mode": "download_errors_report_file", + "responses": [], + "path": null, + "summary": "Download the error report file for the bulk enrollment deletion.", + "return_type": "file", + "return_info": { + "self": false, + "custom": true, + "type": "file" }, - "operation_id": "getCertificateIssuerConfigs", - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "custom_method": "download_errors_report_file", + "spec": { + "summary": "Download the error report file for the bulk enrollment deletion.", + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "return_type": "file" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "download_errors_report_file" + }, + { + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "field_renames": [], + "fields": [], + "method": null, + "mode": "download_full_report_file", + "responses": [], + "path": null, + "summary": "Download the full report file for the bulk enrollment deletion.", + "return_type": "file", + "return_info": { + "self": false, + "custom": true, + "type": "file" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "custom_method": "download_full_report_file", + "spec": { + "summary": "Download the full report file for the bulk enrollment deletion.", + "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", + "return_type": "file" }, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "download_full_report_file" }, { - "description": "Provides the configured certificate issuer.\n", + "description": "Provides information on bulk delete for the given ID, for example, bulk status and the number of processed enrollment identities. Provides links to bulk delete reports as well.\n\n**Report file format:**\nThe report files have a header line and the value are separated by commas. The lines are delimited by a line break (CRLF). Make sure the report file is compliant with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180).\n\nAn example of a full report file:\n```\n\"entity__id\",\"entity__deleted_at\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n```\nAn example of an error report file:\n```\n\"entity__id\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n```\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes/{id}\n```", "field_renames": [], "fields": [ { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "certificate-issuer-configuration-id", + "parameter_fieldname": "id", "in": "path", "required": true, "_key": "id" @@ -23418,92 +38792,148 @@ "mode": "read", "responses": [ { - "description": "OK.", + "description": "Bulk delete entity found.", "schema": { "type": "object", + "required": [ + "object", + "id", + "etag", + "created_at", + "account_id", + "status", + "total_count", + "processed_count", + "errors_count", + "completet_at", + "full_report_file", + "errors_report_file" + ], "properties": [ { - "x-nullable": true, "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "_key": "certificate_issuer_id" + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "entity_fieldname": "completed_at", + "_key": "completed_at" + }, + { + "type": "string", + "description": "The time of receiving the bulk creation task.", "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "entity_fieldname": "errors_count", + "_key": "errors_count" + }, { "type": "string", - "description": "Entity instance signature.", + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "entity_fieldname": "errors_report_file", + "_key": "errors_report_file" + }, + { + "type": "string", + "description": "etag", "example": "1", + "pattern": "[A-Za-z0-9]{0,256}", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "entity_fieldname": "full_report_file", + "_key": "full_report_file" + }, + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", + "required": true, "_key": "id" }, - { - "type": "boolean", - "example": true, - "api_fieldname": "is_custom", - "entity_fieldname": "is_custom", - "_key": "is_custom" - }, { "type": "string", "enum": [ - "certificate-issuer-configuration" + "enrollment-identity-bulk-uploads" ], + "example": "enrollment-identity-bulk-uploads", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "entity_fieldname": "processed_count", + "_key": "processed_count" }, { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" + "group": "Devices", + "entity": "device_enrollment_bulk_create" } }, "_key": "200" }, { - "description": "Validation error.", + "description": "Bad request. Invalid bulk identity.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23513,24 +38943,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23538,22 +38973,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -23561,12 +39002,11 @@ "_key": "400" }, { - "description": "Unauthorized.", + "description": "Invalid access token.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23576,24 +39016,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23601,22 +39046,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -23624,12 +39075,11 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23639,24 +39089,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23664,241 +39119,874 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "404" + } + ], + "path": "/v3/device-enrollments-bulk-deletes/{id}", + "summary": "Get bulk delete entity.", + "return_type": "device_enrollment_bulk_delete", + "return_info": { + "self": true, + "custom": false, + "type": "device_enrollment_bulk_delete" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "account_id", + "created_at", + "status", + "total_count", + "processed_count", + "errors_count", + "completed_at", + "full_report_file", + "errors_report_file" + ], + "group_id": "Devices", + "operation_id": "getBulkDeviceEnrollmentDelete", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "description": "ID", + "example": "00005a4e027f0a580a01081c00000000", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" + }, + { + "type": "string", + "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", + "format": "date-time", + "api_fieldname": "completed_at", + "readOnly": true, + "required": false, + "_key": "completed_at" + }, + { + "type": "string", + "description": "The time of receiving the bulk creation task.", + "format": "date-time", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities with failed processing.", + "api_fieldname": "errors_count", + "readOnly": true, + "required": false, + "_key": "errors_count" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to error report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", + "api_fieldname": "errors_report_file", + "readOnly": true, + "required": false, + "_key": "errors_report_file" + }, + { + "type": "string", + "x-nullable": true, + "description": "Link to full report file.\nNull when creating bulk upload or delete.", + "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", + "api_fieldname": "full_report_file", + "readOnly": true, + "required": false, + "_key": "full_report_file" + }, + { + "type": "string", + "description": "Bulk ID", + "pattern": "^[A-Za-z0-9]{32}", + "api_fieldname": "id", + "parameter_fieldname": "id", + "in": "path", + "required": true, + "readOnly": false, + "_key": "id" + }, + { + "type": "integer", + "example": 0, + "description": "The number of enrollment identities processed until now.", + "api_fieldname": "processed_count", + "readOnly": true, + "required": false, + "_key": "processed_count" + }, + { + "enum": [ + "new", + "processing", + "completed" + ], + "default": "new", + "example": "new", + "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", + "type": "string", + "api_fieldname": "status", + "readOnly": true, + "required": false, + "enum_reference": "device_enrollment_bulk_delete_status_enum", + "_key": "status" + }, + { + "type": "integer", + "example": 10, + "description": "Total number of enrollment identities found in the input CSV.", + "api_fieldname": "total_count", + "readOnly": true, + "required": false, + "_key": "total_count" + } + ], + "field_renames": [], + "tags": [ + "Device ownership - enrollments" + ], + "group_id": "Devices", + "_key": "device_enrollment_bulk_delete" + }, + { + "swagger_models": [ + "DeviceEventData", + "DeviceEventPage" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "List all or a filtered list of device events for the account. Device events are events significant to operation or lifetime, such as creation, firmware update, and suspension.\n\nTo see statistics for device connectivity and usage, use the [Statistics API](https://www.pelion.com/docs/device-management-api/connect-statistics/).\n\n **Example:**\n Following example gets device-events limiting returned results to max 5 events\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5 \\\n -H 'Authorization: Bearer '\n ```\n or to get events for certain device filter based on device_id:\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id= \\\n -H 'Authorization: Bearer '\n ```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "description": "The ID of the item after which to retrieve the next page.", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" }, { - "description": "Not found.", + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "type": "integer", + "example": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "in": "query", + "name": "limit", + "minimum": 2, + "maximum": 1000, + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Request successful.", "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" + "type": "string", + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { - "type": "array", - "description": "A list of request fields that failed validation.", "items": { - "type": "object", "properties": [ + { + "type": "object", + "additionalProperties": { + "type": "object" + }, + "example": [], + "x-deprecation": { + "issued_at": "2019-01-15T14:55:20+00:00", + "end_of_life_at": "2020-01-15T14:55:20+00:00", + "comment": "This field is not used.", + "links": [] + }, + "_key": "changes" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "_key": "created_at" + }, + { + "type": "object", + "example": { + "campaign_id": "00000000000000000000000000000000" + }, + "description": "Additional data relevant to the event.", + "additionalProperties": { + "type": "string" + }, + "_key": "data" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "_key": "date_time" + }, + { + "type": "string", + "example": "Device record created", + "_key": "description" + }, { "type": "string", - "description": "Field name.", - "_key": "field" + "example": "00000000000000000000000000000000", + "_key": "device_id" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "_key": "etag" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "maxLength": 100, + "example": "UPD2_100", + "description": "Event code", + "_key": "event_type" + }, + { + "type": "string", + "example": "FAIL_MANIFEST_REJECTED", + "description": "Category code that groups the event type by a summary category.", + "_key": "event_type_category" + }, + { + "type": "string", + "example": "FAIL", + "description": "Generic description of the event.", + "_key": "event_type_description" + }, + { + "type": "string", + "example": "00000000000000000000000000000000", + "_key": "id" + }, + { + "type": "string", + "description": "The API resource entity.", + "example": "device-event", + "_key": "object" + }, + { + "type": "boolean", + "_key": "state_change" } - ] + ], + "required": [ + "date_time", + "id" + ], + "foreign_key": { + "group": "Devices", + "entity": "device_events" + } }, - "_key": "fields" + "type": "array", + "example": "[]", + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "Error message.", - "_key": "message" + "type": "boolean", + "example": false, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "example": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name: `error`.", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type.", - "_key": "type" + "type": "integer", + "example": 1, + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device_events" + } }, + "_key": "200" + }, + { + "description": "Bad request.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to find page.", "_key": "404" } ], - "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", - "summary": "Get certificate issuer configuration.", - "return_type": "certificate_issuer_config", + "path": "/v3/device-events/", + "summary": "List all device events.", + "return_type": "paginated_response(device_events)", "return_info": { "self": true, "custom": false, - "type": "certificate_issuer_config" + "type": "device_events" + }, + "x_filter": { + "date_time": [ + "in", + "nin", + "lte", + "gte" + ], + "description": [ + "eq", + "neq", + "in", + "nin" + ], + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "device_id": [ + "eq", + "neq", + "in", + "nin" + ], + "event_type": [ + "eq", + "neq", + "in", + "nin" + ], + "state_change": [ + "eq", + "neq" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "is_custom", - "certificate_issuer_id", - "reference", - "created_at", - "updated_at" + "data", + "has_more", + "total_count", + "date_time__in", + "date_time__nin", + "date_time__lte", + "date_time__gte", + "description__eq", + "description__neq", + "description__in", + "description__nin", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "device_id__eq", + "device_id__neq", + "device_id__in", + "device_id__nin", + "event_type__eq", + "event_type__neq", + "event_type__in", + "event_type__nin", + "state_change__eq", + "state_change__neq" ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" + "foreign_key_priority": "self", + "group_id": "Devices", + "operation_id": "Device_Event_list", + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device_events" }, - "operation_id": "getCertificateIssuerConfigByID", - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "list" }, { - "description": "Update the configured certificate issuer configuration.\n", + "description": "\"Retrieve a specific device event. See '/v3/device-events/' for information on device events, and how to get the device_event_id.\"\n\n**Example:**\nTo fetch a specific event you can use the 'id' field from '/v3/device-events'. Form of '016c03d40a4e000000000001001003b4'\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ - { - "x-nullable": true, - "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "parameter_fieldname": "certificate_issuer_id", - "in": "body", - "required": false, - "_key": "certificate_issuer_id" - }, { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", + "example": "00000000000000000000000000000000", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "certificate-issuer-configuration-id", + "parameter_fieldname": "device_event_id", "in": "path", "required": true, "_key": "id" } ], - "method": "put", - "mode": "update", + "method": "get", + "mode": "read", "responses": [ { - "description": "OK.", + "description": "Retrieved result successfully.", "schema": { - "type": "object", "properties": [ { - "x-nullable": true, - "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "entity_fieldname": "certificate_issuer_id", - "_key": "certificate_issuer_id" + "type": "object", + "additionalProperties": { + "type": "object" + }, + "example": [], + "x-deprecation": { + "issued_at": "2019-01-15T14:55:20+00:00", + "end_of_life_at": "2020-01-15T14:55:20+00:00", + "comment": "This field is not used.", + "links": [] + }, + "api_fieldname": "changes", + "entity_fieldname": "changes", + "_key": "changes" }, { - "type": "string", "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { + "type": "object", + "example": { + "campaign_id": "00000000000000000000000000000000" + }, + "description": "Additional data relevant to the event.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "date_time", + "entity_fieldname": "date_time", + "_key": "date_time" + }, + { + "type": "string", + "example": "Device record created", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "example": "00000000000000000000000000000000", + "api_fieldname": "device_id", + "entity_fieldname": "device_id", + "_key": "device_id" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "Entity instance signature.", - "example": "1", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "maxLength": 100, + "example": "UPD2_100", + "description": "Event code", + "api_fieldname": "event_type", + "entity_fieldname": "event_type", + "_key": "event_type" }, { - "type": "boolean", - "example": true, - "api_fieldname": "is_custom", - "entity_fieldname": "is_custom", - "_key": "is_custom" + "type": "string", + "example": "FAIL_MANIFEST_REJECTED", + "description": "Category code that groups the event type by a summary category.", + "api_fieldname": "event_type_category", + "entity_fieldname": "event_type_category", + "_key": "event_type_category" }, { "type": "string", - "enum": [ - "certificate-issuer-configuration" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "example": "FAIL", + "description": "Generic description of the event.", + "api_fieldname": "event_type_description", + "entity_fieldname": "event_type_description", + "_key": "event_type_description" }, { "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "The API resource entity.", + "example": "device-event", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "boolean", + "api_fieldname": "state_change", + "entity_fieldname": "state_change", + "_key": "state_change" } ], + "required": [ + "date_time", + "id" + ], "foreign_key": { - "group": "Security", - "entity": "certificate_issuer_config" + "group": "Devices", + "entity": "device_events" } }, "_key": "200" }, { - "description": "Validation error.", + "description": "Bad request.", + "_key": "400" + }, + { + "description": "Not authenticated.", + "_key": "401" + }, + { + "description": "Unable to find device.", + "_key": "404" + } + ], + "path": "/v3/device-events/{device_event_id}/", + "summary": "Retrieve a device event.", + "return_type": "device_events", + "return_info": { + "self": true, + "custom": false, + "type": "device_events" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "changes", + "data", + "date_time", + "description", + "device_id", + "event_type", + "event_type_category", + "event_type_description", + "state_change" + ], + "group_id": "Devices", + "operation_id": "Device_Event_retrieve", + "parameter_map": { + "device_event_id": "id" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "object", + "additionalProperties": { + "type": "object" + }, + "example": [], + "x-deprecation": { + "issued_at": "2019-01-15T14:55:20+00:00", + "end_of_life_at": "2020-01-15T14:55:20+00:00", + "comment": "This field is not used.", + "links": [] + }, + "api_fieldname": "changes", + "readOnly": true, + "required": false, + "_key": "changes" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "object", + "example": { + "campaign_id": "00000000000000000000000000000000" + }, + "description": "Additional data relevant to the event.", + "additionalProperties": { + "type": "string" + }, + "api_fieldname": "data", + "readOnly": true, + "required": false, + "_key": "data" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "date_time", + "readOnly": true, + "required": false, + "_key": "date_time" + }, + { + "type": "string", + "example": "Device record created", + "api_fieldname": "description", + "readOnly": true, + "required": false, + "_key": "description" + }, + { + "type": "string", + "example": "00000000000000000000000000000000", + "api_fieldname": "device_id", + "readOnly": true, + "required": false, + "_key": "device_id" + }, + { + "type": "string", + "maxLength": 100, + "example": "UPD2_100", + "description": "Event code", + "api_fieldname": "event_type", + "readOnly": true, + "required": false, + "_key": "event_type" + }, + { + "type": "string", + "example": "FAIL_MANIFEST_REJECTED", + "description": "Category code that groups the event type by a summary category.", + "api_fieldname": "event_type_category", + "readOnly": true, + "required": false, + "_key": "event_type_category" + }, + { + "type": "string", + "example": "FAIL", + "description": "Generic description of the event.", + "api_fieldname": "event_type_description", + "readOnly": true, + "required": false, + "_key": "event_type_description" + }, + { + "type": "string", + "example": "00000000000000000000000000000000", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "boolean", + "api_fieldname": "state_change", + "readOnly": true, + "required": false, + "_key": "state_change" + } + ], + "field_renames": [], + "tags": [ + "Device directory - events" + ], + "group_id": "Devices", + "_key": "device_events" + }, + { + "swagger_models": [ + "DeviceGroup", + "DeviceGroupManipulation", + "DeviceGroupPage", + "DevicePage" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Add one device to a group. A device can be in multiple groups.", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "00000000000000000000000000000000", + "name": "device_id", + "in": "body", + "schema_param": true, + "entity_fieldname": "device_id", + "api_fieldname": "device_id", + "external_param": true, + "parameter_fieldname": "device_id", + "required": false, + "_key": "device_id" + }, + { + "in": "path", + "description": "The ID of the group.", + "name": "device-group-id", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "device-group-id", + "external_param": false, + "parameter_fieldname": "device-group-id", + "_key": "id" + } + ], + "method": "post", + "mode": "add_device", + "responses": [ + { + "description": "Success - device added.", + "_key": "204" + }, + { + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23908,24 +39996,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23933,22 +40026,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -23961,7 +40060,6 @@ "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -23971,24 +40069,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -23996,22 +40099,28 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] @@ -24019,12 +40128,11 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -24034,24 +40142,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -24059,35 +40172,224 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "404" + } + ], + "path": "/v3/device-groups/{device-group-id}/devices/add/", + "summary": "Add a device to a group.", + "return_type": "void", + "return_info": { + "self": false, + "custom": true, + "type": "void" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_members_add", + "spec": { + "return_type": "void" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "add_device" + }, + { + "description": "Create a group.", + "field_renames": [], + "fields": [ + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "name": "custom_attributes", + "in": "body", + "schema_param": true, + "parameter_fieldname": "custom_attributes", + "required": false, + "_key": "custom_attributes" }, { - "description": "Not found.", + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "entity_fieldname": "description", + "name": "description", + "in": "body", + "schema_param": true, + "parameter_fieldname": "description", + "required": false, + "_key": "description" + }, + { + "type": "string", + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "entity_fieldname": "name", + "name": "name", + "in": "body", + "schema_param": true, + "parameter_fieldname": "name", + "required": false, + "_key": "name" + } + ], + "method": "post", + "mode": "create", + "responses": [ + { + "description": "Created.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "format": "date-time", + "description": "The time the group was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "integer", + "description": "The number of devices in this group.", + "example": 10, + "api_fieldname": "devices_count", + "entity_fieldname": "devices_count", + "_key": "devices_count" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `device-group`.", + "example": "device-group", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "description": "The time this object was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Devices", + "entity": "device_group" + } + }, + "_key": "201" + }, + { + "description": "Bad request.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -24097,24 +40399,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -24122,175 +40429,36 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/certificate-issuer-configurations/{certificate-issuer-configuration-id}", - "summary": "Update certificate issuer configuration.", - "return_type": "certificate_issuer_config", - "return_info": { - "self": true, - "custom": false, - "type": "certificate_issuer_config" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "is_custom", - "reference", - "created_at", - "updated_at" - ], - "group_id": "Security", - "parameter_map": { - "certificate-issuer-configuration-id": "id" - }, - "operation_id": "updateCertificateIssuerConfigByID", - "additional_operations": [ - { - "operation_id": "updateCertificateIssuerConfig", - "notes": "After retrieving the resource using the `lwm2m` method, it can modified using using this SDK method." - } - ], - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "update" - } - ], - "fields": [ - { - "x-nullable": true, - "type": "string", - "description": "The ID of the certificate issuer.\nNull if Device Management internal HSM is used.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "certificate_issuer_id", - "readOnly": false, - "required": true, - "_key": "certificate_issuer_id" - }, - { - "type": "string", - "format": "date-time", - "description": "Created UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "The ID of the certificate issuer configuration.\n", - "example": "01648415a2a30242ac18000500000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "string", - "description": "The certificate name to which the certificate issuer configuration applies.", - "example": "customer.dlms", - "api_fieldname": "reference", - "readOnly": false, - "required": true, - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "description": "Updated UTC time RFC3339.", - "example": "2017-02-01T00:00:00Z", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "Certificate Issuers Activation" - ], - "group_id": "Security", - "_key": "certificate_issuer_config" - }, - { - "swagger_models": [ - "BrandingColor", - "BrandingColorList" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Resets the branding color to its dark theme default.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "is_primary_key": true, - "_override": true, - "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "name": "reference", - "in": "path", - "description": "The name of the branding color.", - "required": true, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Deleted successfully.", - "_key": "204" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -24363,7 +40531,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Conflict - Group name already exists.", "schema": { "type": "object", "required": [ @@ -24433,10 +40601,138 @@ } ] }, - "_key": "403" + "_key": "409" + } + ], + "path": "/v3/device-groups/", + "summary": "Create a group.", + "return_type": "device_group", + "return_info": { + "self": true, + "custom": false, + "type": "device_group" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "id", + "devices_count", + "created_at", + "updated_at" + ], + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_create", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete a group. This deletes the group, but not the devices in the group.", + "field_renames": [], + "fields": [ + { + "description": "The ID of the group.", + "in": "path", + "name": "device-group-id", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "device-group-id", + "external_param": false, + "parameter_fieldname": "device-group-id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Success - group deleted.", + "_key": "204" }, { - "description": "Color not found.", + "description": "Unauthorized.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -24509,13 +40805,13 @@ "_key": "404" } ], - "path": "/v3/branding-colors/dark/{reference}", - "summary": "Reset branding color to default.", - "return_type": "void", + "path": "/v3/device-groups/{device-group-id}/", + "summary": "Delete a group.", + "return_type": "device_group", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "device_group" }, "x_filter": {}, "x_deprecation": null, @@ -24525,161 +40821,451 @@ "type", "filter" ], - "group_id": "Branding", - "operation_id": "resetDarkColor", - "spec": { - "return_type": "void" + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" }, + "operation_id": "Group_delete", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "delete" }, { - "description": "Retrieve the dark theme branding colors.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \\\n-H 'Authorization: Bearer '\n```", + "description": "Get a page of devices in a specified group.", "field_renames": [], "fields": [ { - "is_primary_key": true, - "_override": true, "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "in": "path", + "name": "device-group-id", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "device-group-id", + "external_param": false, + "parameter_fieldname": "device-group-id", + "_key": "id" + }, + { + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "type": "integer", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" } ], "method": "get", - "mode": "list", + "mode": "devices", "responses": [ { - "description": "Successful operation.", + "description": "Ok.", "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", "api_fieldname": "after", "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, "_key": "after" }, { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "properties": [ - { + "items": [ + { + "group": "Devices", + "entity": "device", + "_key": "foreign_key" + }, + { + "device_execution_mode": { + "enum": [ + 0, + 1, + 5 + ], + "type": "integer", + "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", + "example": 0, + "default": 0 + }, + "groups": { + "description": "An array containing an ID of each group this device belongs to.", + "type": "array", + "items": { + "type": "string", + "example": "00000000000000000000000000000000" + } + }, + "issuer_fingerprint": { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", + "pattern": "[A-Fa-f0-9]{64}", "x-nullable": true, - "_key": "color" + "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", + "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322" }, - { + "operator_suspended": { + "type": "boolean", + "description": "Device has been suspended by operator." + }, + "last_operator_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance" + }, + "last_operator_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description why the device was suspended or returned to service.", + "example": "Suspended for maintenance." + }, + "last_operator_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent suspension activity.", + "example": "2017-05-22T12:37:55.576563Z" + }, + "system_suspended": { + "type": "boolean", + "description": "Is the device suspended by the system?" + }, + "last_system_suspended_category": { + "type": "string", + "description": "The reference of the block category.", + "pattern": "[a-f0-9_]{32}", + "example": "maintenance" + }, + "last_system_suspended_description": { + "type": "string", + "maxLength": 2000, + "description": "The most recent description of why the device was blocked or unblocked by the system.", + "example": "A certificate in the device's certificate chain was blacklisted by the system." + }, + "last_system_suspended_updated_at": { + "type": "string", + "format": "date-time", + "description": "The timestamp of the most recent system block activity.", + "example": "2017-05-22T12:37:55.576563Z" + }, + "lifecycle_status": { "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, "enum": [ - "branding_color" + "enabled", + "blocked" ], - "_key": "object" + "description": "The lifecycle status of the device.\n* Enabled: The device is allowed to connect to Pelion Device Management.\n* Blocked: The device is prevented from connecting to Pelion Device Management. Device can be, for example, 'suspended'.", + "example": "enabled" }, - { + "account_id": { + "type": "string", + "description": "The ID of the associated account.", + "example": "00000000000000000000000000000000" + }, + "auto_update": { + "type": "boolean", + "description": "DEPRECATED: Mark this device for automatic firmware update." + }, + "bootstrap_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to bootstrap server." + }, + "bootstrapped_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the device's most recent bootstrap process." + }, + "ca_id": { + "type": "string", + "maxLength": 500, + "description": "The certificate issuer's ID.", + "example": "00000000000000000000000000000000" + }, + "component_attributes": { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128 + }, + "description": "Up to ten custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + } + }, + "connector_expiration_date": { + "format": "date", + "type": "string", + "x-nullable": true, + "description": "The expiration date of the certificate used to connect to LwM2M server." + }, + "created_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of when the device was created in the device directory." + }, + "custom_attributes": { + "type": "object", + "maxProperties": 5, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + } + }, + "deployed_state": { "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" + "development", + "production" + ], + "type": "string", + "description": "DEPRECATED: The state of the device's deployment." + }, + "deployment": { + "type": "string", + "description": "DEPRECATED: The last deployment used on the device.", + "example": "" + }, + "description": { + "type": "string", + "maxLength": 2000, + "description": "The description of the device.", + "example": "Temperature measuring device" + }, + "device_class": { + "type": "string", + "maxLength": 32, + "description": "An ID representing the model and hardware revision of the device.", + "example": "" + }, + "id": { + "type": "string", + "description": "The ID of the device. The device ID is used across all Device Management APIs.", + "example": "00000000000000000000000000000000" + }, + "device_key": { + "type": "string", + "maxLength": 512, + "description": "The fingerprint of the device certificate.", + "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" + }, + "endpoint_name": { + "type": "string", + "description": "The endpoint name given to the device. The endpoint_name is from the device certificate and is set by factory tool.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": true + }, + "endpoint_type": { + "type": "string", + "description": "The endpoint type of the device. For example, the device is a gateway.", + "maxLength": 64, + "example": "" + }, + "etag": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The entity instance signature." + }, + "firmware_checksum": { + "type": "string", + "description": "The SHA256 checksum of the current firmware image.", + "example": "0000000000000000000000000000000000000000000000000000000000000000" + }, + "host_gateway": { + "type": "string", + "description": "The ID of the host gateway, if appropriate. A device behind Edge has this host_gateway set.", + "example": "" + }, + "manifest": { + "type": "string", + "description": "DEPRECATED: The URL for the current device manifest.", + "example": "" + }, + "manifest_timestamp": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The timestamp of the current manifest version." + }, + "mechanism": { + "enum": [ + "connector", + "direct" + ], + "type": "string", + "description": "NOT USED: The ID of the channel used to communicate with the device." + }, + "mechanism_url": { + "type": "string", + "description": "NOT USED: The address of the connector to use.", + "example": "" + }, + "name": { + "type": "string", + "maxLength": 128, + "description": "The name given by the web application for the device. Device itself provides only the endpoint_name.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "net_id": { + "type": "string", + "default": "", + "maxLength": 40, + "description": "Private network identifier. Used to group nodes connected to a specific border router.", + "example": "0000:0000:0000:0000:0000:0000:0000:0000" + }, + "object": { + "type": "string", + "description": "The API resource entity.", + "example": "device" + }, + "serial_number": { + "type": "string", + "description": "The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) of the device. The serial number is injected by the factory tool during manufacturing.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "state": { + "enum": [ + "unenrolled", + "cloud_enrolling", + "bootstrapped", + "registered", + "deregistered" ], "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "_key": "reference" + "description": "The current state of the device.\n* Unenrolled: The device has been created, but has not yet bootstrapped or connected to Device Management.\n* Cloud_enrolling: The device is bootstrapping for the first time. This state is set only while bootstrapping is in progress. For example, an external CA gives an error, and the device tries to bootstrap again after few seconds.\n* Bootstrapped: The device has bootstrapped, and has credentials to connect to Device Management.\n* Registered: The device has registered with Pelion Device Management. [Device commands](https://www.pelion.com/docs/device-management-api/connect/) can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) resources.\n* Deregistered: The device has requested deregistration, or its registration has expired." }, - { + "updated_at": { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The time this data object was updated." + }, + "vendor_id": { "type": "string", + "description": "The device vendor ID.", + "example": "00000000-0000-0000-0000-000000000000" + }, + "enrolment_list_timestamp": { "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "description": "The claim date/time." + }, + "_key": "properties" } - }, + ], + "type": "array", "api_fieldname": "data", "entity_fieldname": "data", "_key": "data" }, { "type": "boolean", + "description": "Are there more results available.", "example": false, - "description": "Flag indicating whether there are more results.", "api_fieldname": "has_more", "entity_fieldname": "has_more", "_key": "has_more" }, { "type": "integer", - "format": "int32", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", "example": 50, - "description": "The number of results to return, or equal to `total_count`.", + "minimum": 2, + "maximum": 1000, "api_fieldname": "limit", "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, "_key": "limit" }, { "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], + "description": "The type of this API object is a \"list\".", + "example": "list", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", "api_fieldname": "order", "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, "_key": "order" }, { + "format": "integer", "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", + "example": 1, "api_fieldname": "total_count", "entity_fieldname": "total_count", "_key": "total_count" @@ -24687,14 +41273,87 @@ ], "pagination": true, "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" + "group": "Devices", + "entity": "device" } }, "_key": "200" }, { - "description": "Authentication failure.", + "description": "Bad request.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -24767,7 +41426,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ @@ -24837,227 +41496,599 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/branding-colors/dark", - "summary": "Get dark theme branding colors.", - "return_type": "paginated_response(dark_theme_color)", + "path": "/v3/device-groups/{device-group-id}/devices/", + "summary": "Get a page of devices.", + "return_type": "paginated_response(device)", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "dark_theme_color" + "type": "device" + }, + "x_filter": { + "lifecycle_status": [ + "eq", + "neq", + "in", + "nin" + ], + "operator_suspended": [ + "eq", + "neq" + ], + "last_operator_suspended_category": [ + "eq", + "neq", + "in", + "nin" + ], + "last_operator_suspended_updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "system_suspended": [ + "eq", + "neq" + ], + "last_system_suspended_category": [ + "eq", + "neq", + "in", + "nin" + ], + "last_system_suspended_updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "account_id": [ + "eq", + "neq", + "in", + "nin" + ], + "auto_update": [ + "eq", + "neq" + ], + "bootstrap_expiration_date": [ + "in", + "nin", + "lte", + "gte" + ], + "bootstrapped_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "ca_id": [ + "eq", + "neq", + "in", + "nin" + ], + "connector_expiration_date": [ + "in", + "nin", + "lte", + "gte" + ], + "created_at": [ + "in", + "nin", + "lte", + "gte" + ], + "deployed_state": [ + "eq", + "neq", + "in", + "nin" + ], + "deployment": [ + "eq", + "neq", + "in", + "nin" + ], + "description": [ + "eq", + "neq", + "in", + "nin" + ], + "device_class": [ + "eq", + "neq", + "in", + "nin" + ], + "device_execution_mode": [ + "eq", + "neq", + "in", + "nin" + ], + "device_key": [ + "eq", + "neq", + "in", + "nin" + ], + "endpoint_name": [ + "eq", + "neq", + "in", + "nin" + ], + "endpoint_type": [ + "eq", + "neq", + "in", + "nin" + ], + "enrolment_list_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "firmware_checksum": [ + "eq", + "neq", + "in", + "nin" + ], + "host_gateway": [ + "eq", + "neq", + "in", + "nin" + ], + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "manifest": [ + "eq", + "neq", + "in", + "nin" + ], + "manifest_timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "mechanism": [ + "eq", + "neq", + "in", + "nin" + ], + "mechanism_url": [ + "eq", + "neq", + "in", + "nin" + ], + "name": [ + "eq", + "neq", + "in", + "nin" + ], + "net_id": [ + "eq", + "neq", + "in", + "nin" + ], + "serial_number": [ + "eq", + "neq", + "in", + "nin" + ], + "state": [ + "eq", + "neq", + "in", + "nin" + ], + "updated_at": [ + "in", + "nin", + "lte", + "gte" + ], + "vendor_id": [ + "eq", + "neq", + "in", + "nin" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "limit", - "after", - "order", - "total_count", + "data", "has_more", - "data" + "total_count", + "lifecycle_status__eq", + "lifecycle_status__neq", + "lifecycle_status__in", + "lifecycle_status__nin", + "operator_suspended__eq", + "operator_suspended__neq", + "last_operator_suspended_category__eq", + "last_operator_suspended_category__neq", + "last_operator_suspended_category__in", + "last_operator_suspended_category__nin", + "last_operator_suspended_updated_at__in", + "last_operator_suspended_updated_at__nin", + "last_operator_suspended_updated_at__lte", + "last_operator_suspended_updated_at__gte", + "system_suspended__eq", + "system_suspended__neq", + "last_system_suspended_category__eq", + "last_system_suspended_category__neq", + "last_system_suspended_category__in", + "last_system_suspended_category__nin", + "last_system_suspended_updated_at__in", + "last_system_suspended_updated_at__nin", + "last_system_suspended_updated_at__lte", + "last_system_suspended_updated_at__gte", + "account_id__eq", + "account_id__neq", + "account_id__in", + "account_id__nin", + "auto_update__eq", + "auto_update__neq", + "bootstrap_expiration_date__in", + "bootstrap_expiration_date__nin", + "bootstrap_expiration_date__lte", + "bootstrap_expiration_date__gte", + "bootstrapped_timestamp__in", + "bootstrapped_timestamp__nin", + "bootstrapped_timestamp__lte", + "bootstrapped_timestamp__gte", + "ca_id__eq", + "ca_id__neq", + "ca_id__in", + "ca_id__nin", + "connector_expiration_date__in", + "connector_expiration_date__nin", + "connector_expiration_date__lte", + "connector_expiration_date__gte", + "created_at__in", + "created_at__nin", + "created_at__lte", + "created_at__gte", + "deployed_state__eq", + "deployed_state__neq", + "deployed_state__in", + "deployed_state__nin", + "deployment__eq", + "deployment__neq", + "deployment__in", + "deployment__nin", + "description__eq", + "description__neq", + "description__in", + "description__nin", + "device_class__eq", + "device_class__neq", + "device_class__in", + "device_class__nin", + "device_execution_mode__eq", + "device_execution_mode__neq", + "device_execution_mode__in", + "device_execution_mode__nin", + "device_key__eq", + "device_key__neq", + "device_key__in", + "device_key__nin", + "endpoint_name__eq", + "endpoint_name__neq", + "endpoint_name__in", + "endpoint_name__nin", + "endpoint_type__eq", + "endpoint_type__neq", + "endpoint_type__in", + "endpoint_type__nin", + "enrolment_list_timestamp__in", + "enrolment_list_timestamp__nin", + "enrolment_list_timestamp__lte", + "enrolment_list_timestamp__gte", + "firmware_checksum__eq", + "firmware_checksum__neq", + "firmware_checksum__in", + "firmware_checksum__nin", + "host_gateway__eq", + "host_gateway__neq", + "host_gateway__in", + "host_gateway__nin", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "manifest__eq", + "manifest__neq", + "manifest__in", + "manifest__nin", + "manifest_timestamp__in", + "manifest_timestamp__nin", + "manifest_timestamp__lte", + "manifest_timestamp__gte", + "mechanism__eq", + "mechanism__neq", + "mechanism__in", + "mechanism__nin", + "mechanism_url__eq", + "mechanism_url__neq", + "mechanism_url__in", + "mechanism_url__nin", + "name__eq", + "name__neq", + "name__in", + "name__nin", + "net_id__eq", + "net_id__neq", + "net_id__in", + "net_id__nin", + "serial_number__eq", + "serial_number__neq", + "serial_number__in", + "serial_number__nin", + "state__eq", + "state__neq", + "state__in", + "state__nin", + "updated_at__in", + "updated_at__nin", + "updated_at__lte", + "updated_at__gte", + "vendor_id__eq", + "vendor_id__neq", + "vendor_id__in", + "vendor_id__nin" ], - "foreign_key_priority": "self", - "group_id": "Branding", - "operation_id": "getDarkColors", + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_members_retrieve", "pagination": true, "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" + "group": "Devices", + "entity": "device" }, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "devices" }, { - "description": "Retrieve the requested dark theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "List all groups.", "field_renames": [], "fields": [ { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" + "description": "The ID of the item after which to retrieve the next page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "type": "integer", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "in": "query", + "name": "limit", + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "_key": "order" } ], "method": "get", - "mode": "read", + "mode": "list", "responses": [ { - "description": "Successful operation.", + "description": "Ok.", "schema": { "type": "object", "properties": [ { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_color" - } - }, - "_key": "200" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "description": "An offset token for current page.", + "example": "01631667477600000000000100100374", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { - "type": "array", - "description": "Request fields which failed validation.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "format": "date-time", + "description": "The time the group was created.", + "example": "2017-05-22T12:37:55.576563Z", + "_key": "created_at" + }, + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "_key": "custom_attributes" }, { "type": "string", - "description": "Name of the field which caused the error.", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "_key": "description" + }, + { + "type": "integer", + "description": "The number of devices in this group.", + "example": 10, + "_key": "devices_count" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "_key": "etag" + }, + { + "type": "string", + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "_key": "id" + }, + { + "type": "string", + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `device-group`.", + "example": "device-group", + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "description": "The time this object was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Devices", + "entity": "device_group" + } }, - "_key": "fields" + "type": "array", + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "description": "More results are available.", + "example": false, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "example": 50, + "minimum": 2, + "maximum": 1000, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], + "description": "The type of this API object is 'list'.", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Record order based on creation time.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "integer", + "type": "integer", + "example": 1, + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device_group" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -25127,10 +42158,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Color not found.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -25203,167 +42234,213 @@ "_key": "404" } ], - "path": "/v3/branding-colors/dark/{reference}", - "summary": "Get dark theme branding color.", - "return_type": "dark_theme_color", + "path": "/v3/device-groups/", + "summary": "List all groups.", + "return_type": "paginated_response(device_group)", "return_info": { "self": true, "custom": false, - "type": "dark_theme_color" + "type": "device_group" + }, + "x_filter": { + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "devices_count": [ + "eq", + "neq", + "in", + "nin", + "lte", + "gte" + ], + "name": [ + "eq", + "neq", + "in", + "nin" + ], + "created_at": [ + "in", + "nin", + "lte", + "gte" + ], + "updated_at": [ + "in", + "nin", + "lte", + "gte" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "color", - "updated_at" + "data", + "has_more", + "total_count", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "devices_count__eq", + "devices_count__neq", + "devices_count__in", + "devices_count__nin", + "devices_count__lte", + "devices_count__gte", + "name__eq", + "name__neq", + "name__in", + "name__nin", + "created_at__in", + "created_at__nin", + "created_at__lte", + "created_at__gte", + "updated_at__in", + "updated_at__nin", + "updated_at__lte", + "updated_at__gte" ], - "group_id": "Branding", - "operation_id": "getDarkColor", - "pagination": false, + "foreign_key_priority": "self", + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_list", + "pagination": true, + "foreign_key": { + "group": "Devices", + "entity": "device_group" + }, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "list" }, { - "description": "Update a dark theme branding color.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"#f3f93e\" }'\n```", + "description": "Returns [DeviceGroup](https://www.pelion.com/docs/device-management-api/device-directory/) info what contains info of the group, for example, name and updated date. To list the devices in the group, use '/v3/device-groups/{device-group-id}/devices/'.", "field_renames": [], "fields": [ { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "device-group-id", "in": "path", "required": true, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" + "_key": "id" } ], - "method": "put", - "mode": "update", + "method": "get", + "mode": "read", "responses": [ { - "description": "Color has been set successfully.", + "description": "Ok.", "schema": { "type": "object", "properties": [ { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "_key": "color" + "format": "date-time", + "description": "The time the group was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "integer", + "description": "The number of devices in this group.", + "example": 10, + "api_fieldname": "devices_count", + "entity_fieldname": "devices_count", + "_key": "devices_count" + }, + { + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `device-group`.", + "example": "device-group", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, + "description": "The time this object was updated.", + "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "updated_at", "entity_fieldname": "updated_at", "_key": "updated_at" } ], "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_color" + "group": "Devices", + "entity": "device_group" } }, "_key": "200" }, { - "description": "Error in input data format.", + "description": "Bad request.", "schema": { "type": "object", "required": [ @@ -25436,7 +42513,7 @@ "_key": "400" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -25509,7 +42586,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -25579,10 +42656,80 @@ } ] }, - "_key": "403" + "_key": "404" + } + ], + "path": "/v3/device-groups/{device-group-id}/", + "summary": "Get a group.", + "return_type": "device_group", + "return_info": { + "self": true, + "custom": false, + "type": "device_group" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "name", + "description", + "custom_attributes", + "devices_count", + "created_at", + "updated_at" + ], + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_retrieve", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Remove one device from a group.", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "00000000000000000000000000000000", + "name": "device_id", + "in": "body", + "schema_param": true, + "entity_fieldname": "device_id", + "api_fieldname": "device_id", + "external_param": true, + "parameter_fieldname": "device_id", + "required": false, + "_key": "device_id" }, { - "description": "Color not found.", + "in": "path", + "description": "The ID of the group.", + "name": "device-group-id", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "device-group-id", + "external_param": false, + "parameter_fieldname": "device-group-id", + "_key": "id" + } + ], + "method": "post", + "mode": "remove_device", + "responses": [ + { + "description": "Success - device removed.", + "_key": "204" + }, + { + "description": "Bad request.", "schema": { "type": "object", "required": [ @@ -25652,170 +42799,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/branding-colors/dark/{reference}", - "summary": "Updates a dark theme branding color.", - "return_type": "dark_theme_color", - "return_info": { - "self": true, - "custom": false, - "type": "dark_theme_color" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "setDarkColor", - "additional_operations": [ - { - "operation_id": "bulkSetDarkColors", - "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." - } - ], - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "update" - } - ], - "fields": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "readOnly": false, - "required": false, - "_key": "color" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "readOnly": false, - "required": false, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "User interface configuration - colors" - ], - "group_id": "Branding", - "_key": "dark_theme_color" - }, - { - "swagger_models": [ - "BrandingImage", - "BrandingImageList" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Revert an account branding image to dark theme default.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "is_primary_key": true, - "_override": true, - "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "name": "reference", - "in": "path", - "description": "Name of the branding images (icon or picture).", - "required": true, - "enum_reference": "dark_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "post", - "mode": "delete", - "responses": [ - { - "description": "Image reverted successfully.", - "_key": "204" + "_key": "400" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -25888,7 +42875,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not found.", "schema": { "type": "object", "required": [ @@ -25901,67 +42888,262 @@ "properties": [ { "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/device-groups/{device-group-id}/devices/remove/", + "summary": "Remove a device from a group.", + "return_type": "void", + "return_info": { + "self": false, + "custom": true, + "type": "void" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" + }, + "operation_id": "Group_members_remove", + "spec": { + "return_type": "void" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "remove_device" + }, + { + "description": "Modify the attributes of a group, such as the description.", + "field_renames": [], + "fields": [ + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "name": "custom_attributes", + "in": "body", + "schema_param": true, + "parameter_fieldname": "custom_attributes", + "required": false, + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "entity_fieldname": "description", + "name": "description", + "in": "body", + "schema_param": true, + "parameter_fieldname": "description", + "required": false, + "_key": "description" + }, + { + "type": "string", + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "device-group-id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "entity_fieldname": "name", + "name": "name", + "in": "body", + "schema_param": true, + "parameter_fieldname": "name", + "required": false, + "_key": "name" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "Ok.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "format": "date-time", + "description": "The time the group was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "entity_fieldname": "custom_attributes", + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "integer", + "description": "The number of devices in this group.", + "example": 10, + "api_fieldname": "devices_count", + "entity_fieldname": "devices_count", + "_key": "devices_count" }, { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Entity name: always `device-group`.", + "example": "device-group", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "description": "The time this object was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Devices", + "entity": "device_group" + } }, - "_key": "403" + "_key": "200" }, { - "description": "Unknown image reference.", + "description": "Bad request.", "schema": { "type": "object", "required": [ @@ -26031,214 +43213,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/branding-images/dark/{reference}/clear", - "summary": "Revert an image to dark theme default.", - "return_type": "dark_theme_image", - "return_info": { - "self": true, - "custom": false, - "type": "dark_theme_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "clearDarkImage", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve metadata for all dark theme branding images.\n\n**Example:**\n`curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "is_primary_key": true, - "_override": true, - "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" - } - }, - "_key": "200" + "_key": "400" }, { - "description": "Authentication failure.", + "description": "Unauthorized.", "schema": { "type": "object", "required": [ @@ -26311,7 +43289,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Not Found.", "schema": { "type": "object", "required": [ @@ -26381,16 +43359,16 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/branding-images/dark", - "summary": "Get metadata of all dark theme images.", - "return_type": "paginated_response(dark_theme_image)", + "path": "/v3/device-groups/{device-group-id}/", + "summary": "Modify the attributes of a group.", + "return_type": "device_group", "return_info": { "self": true, "custom": false, - "type": "dark_theme_image" + "type": "device_group" }, "x_filter": {}, "x_deprecation": null, @@ -26399,179 +43377,255 @@ "etag", "type", "filter", - "limit", - "after", - "order", - "total_count", - "has_more", - "data" + "devices_count", + "created_at", + "updated_at" ], - "foreign_key_priority": "self", - "group_id": "Branding", - "operation_id": "getAllDarkImageData", - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" + "group_id": "Devices", + "parameter_map": { + "device-group-id": "id" }, + "operation_id": "Group_update", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "format": "date-time", + "description": "The time the group was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" }, { - "description": "Retrieve metadata for one account dark theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], + "type": "object", + "maxProperties": 10, + "additionalProperties": { + "type": "string", + "maxLength": 128, + "pattern": "^[A-Za-z].*" + }, + "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", + "example": { + "key": "value" + }, + "api_fieldname": "custom_attributes", + "readOnly": false, + "required": false, + "_key": "custom_attributes" + }, + { + "type": "string", + "maxLength": 1024, + "description": "The description of the group.", + "example": "Devices on the factory floor.", + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "type": "integer", + "description": "The number of devices in this group.", + "example": 10, + "api_fieldname": "devices_count", + "readOnly": true, + "required": false, + "_key": "devices_count" + }, + { + "type": "string", + "description": "The group ID.", + "example": "015c3029f6f7000000000001001000c3", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 128, + "description": "Name of the group.", + "example": "My devices", + "api_fieldname": "name", + "readOnly": false, + "required": false, + "_key": "name" + }, + { + "type": "string", + "format": "date-time", + "description": "The time this object was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Device directory - groups" + ], + "group_id": "Devices", + "_key": "device_group" + }, + { + "swagger_models": [ + "FirmwareImage", + "FirmwareImagePage" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Create a firmware image.\n
**Note:** Only use this API for images smaller than 100 MB. For larger images, [upload in chunks](https://www.pelion.com/docs/device-management/current/updating-firmware/uploading-a-large-firmware-image.html).\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-images \\\n-H 'Authorization: Bearer ' \\\n-H 'Content-Type: multipart/form-data' \\\n-F 'datafile=@myimage.bin;type=application/octet-stream'\n-F 'description=bla bla' \\\n-F 'name=My Linux Image'\n```\n", + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + } + ], "fields": [ { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], + "description": "The description of the object.", "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", + "format": "free text", + "maxLength": 2000, + "example": "a description", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "stream", + "required": false, + "_key": "description" + }, + { + "description": "The firmware image file to upload. File name must not exceed 166 characters.", + "in": "stream", + "name": "datafile", "required": true, - "enum_reference": "dark_theme_image_reference_enum", - "_key": "reference" + "type": "file", + "maxLength": 166, + "entity_fieldname": "firmware_image_file", + "api_fieldname": "datafile", + "external_param": true, + "parameter_fieldname": "datafile", + "_key": "firmware_image_file" + }, + { + "description": "The firmware image name.", + "type": "string", + "format": "free text", + "maxLength": 128, + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "stream", + "required": false, + "_key": "name" } ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "properties": [ - { + "method": "post", + "mode": "create", + "responses": [ + { + "description": "Firmware image created. The API gateway enforces the account-specific file size.", + "schema": [ + { + "group": "Device_Update", + "entity": "firmware_image", + "_key": "foreign_key" + }, + { + "created_at": { "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-image'.", + "type": "string", + "example": "firmware-image", "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "entity_fieldname": "object" }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], + "datafile": { + "description": "The firmware image file URL.", "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "datafile", + "entity_fieldname": "datafile_url" }, - { + "datafile_checksum": { + "description": "The checksum (sha256) generated for the datafile.", "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" + "example": "e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e", + "api_fieldname": "datafile_checksum", + "entity_fieldname": "datafile_checksum" }, - { + "datafile_size": { + "description": "The size of the datafile in bytes.", + "format": "int64", + "type": "integer", + "api_fieldname": "datafile_size", + "entity_fieldname": "datafile_size" + }, + "description": { + "description": "The description of the object.", "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_image" + "format": "free text", + "maxLength": 2000, + "example": "a description", + "api_fieldname": "description", + "entity_fieldname": "description" + }, + "id": { + "description": "The firmware image ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e652be671000000000001001001e5", + "api_fieldname": "id", + "entity_fieldname": "id" + }, + "name": { + "description": "The firmware image name.", + "type": "string", + "format": "free text", + "maxLength": 128, + "api_fieldname": "name", + "entity_fieldname": "name" + }, + "_key": "properties" } - }, - "_key": "200" + ], + "_key": "201" }, { - "description": "Authentication failure.", + "description": "Cannot validate the data used to create the firmware image.", "schema": { "type": "object", "required": [ @@ -26641,10 +43695,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -26714,10 +43768,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Unknown image reference.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -26787,212 +43841,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/branding-images/dark/{reference}", - "summary": "Get metadata of a dark theme image.", - "return_type": "dark_theme_image", - "return_info": { - "self": true, - "custom": false, - "type": "dark_theme_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "static_uri", - "updated_at" - ], - "group_id": "Branding", - "operation_id": "getDarkImageData", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - }, - { - "description": "Upload a new account branding image as form data in the dark theme in PNG or JPEG format.", - "field_renames": [], - "fields": [ - { - "in": "stream", - "name": "image", - "description": "The image in PNG or JPEG format as multipart form data.", - "required": true, - "type": "file", - "entity_fieldname": "image", - "api_fieldname": "image", - "external_param": true, - "parameter_fieldname": "image", - "_key": "image" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "dark_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "post", - "mode": "update", - "responses": [ - { - "description": "Image uploaded successfully.", - "headers": [ - { - "type": "string", - "description": "Location of the image metadata.", - "_key": "Content-Location" - }, - { - "type": "string", - "description": "Location of the image binary.", - "_key": "Location" - } - ], - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_image" - } - }, - "_key": "201" + "_key": "403" }, { - "description": "Error in input data format, for example, image is too large.", + "description": "Firmware image too large.", "schema": { "type": "object", "required": [ @@ -27062,10 +43914,76 @@ } ] }, - "_key": "400" + "_key": "413" + } + ], + "path": "/v3/firmware-images", + "summary": "Create an image", + "return_type": "firmware_image", + "return_info": { + "self": true, + "custom": false, + "type": "firmware_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "datafile_checksum", + "datafile_size", + "id", + "datafile_url" + ], + "group_id": "Device_Update", + "parameter_map": { + "image_id": "id", + "datafile": "firmware_image_file" + }, + "operation_id": "Firmware_Image_create", + "notes": "This is not a standard create method as it uploads a file which creates an entity which contains URIs to the uploaded file.", + "unaggregated": true, + "pagination": false, + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "create" + }, + { + "description": "Delete a firmware image.\n
\n**Usage example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-images/11234567f9012ab56790120000789012 \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + } + ], + "fields": [ + { + "description": "The firmware image ID.", + "in": "path", + "name": "image_id", + "required": true, + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "entity_fieldname": "id", + "api_fieldname": "image_id", + "external_param": false, + "parameter_fieldname": "image_id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Firmware image deleted.", + "_key": "204" }, { - "description": "Authentication failure.", + "description": "Bad Request.", "schema": { "type": "object", "required": [ @@ -27135,10 +44053,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -27208,10 +44126,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Unknown image reference.", + "description": "Firmware image not found.", "schema": { "type": "object", "required": [ @@ -27284,264 +44202,243 @@ "_key": "404" } ], - "path": "/v3/branding-images/dark/{reference}/upload-multipart", - "summary": "Upload a dark theme image.", - "return_type": "dark_theme_image", + "path": "/v3/firmware-images/{image_id}", + "summary": "Delete an image", + "return_type": "firmware_image", "return_info": { "self": true, "custom": false, - "type": "dark_theme_image" + "type": "firmware_image" }, "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "static_uri", - "updated_at" - ], - "group_id": "Branding", - "operation_id": "uploadDarkImageMultipart", - "additional_operations": [ - { - "operation_id": "uploadDarkImage", - "notes": "The multipart endpoint is used by the SDKs as it offers the same functionality as the standard upload endpoint." - } - ], - "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "update" - } - ], - "fields": [ - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "readOnly": false, - "required": false, - "enum_reference": "dark_theme_image_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "required": false, - "_key": "static_uri" + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Device_Update", + "parameter_map": { + "image_id": "id" + }, + "operation_id": "Firmware_Image_destroy", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "User interface configuration - images" - ], - "group_id": "Branding", - "_key": "dark_theme_image" - }, - { - "swagger_models": [ - "DeveloperCertificateRequestData", - "DeveloperCertificateResponseData", - "TrustedCertificateResp" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Create a developer certificate (a certificate that can be flashed to multiple devices to connect to the bootstrap server).\n\n**Note:** The number of developer certificates allowed per account is limited. Please see [Using your own certificate authority](../provisioning-process/using-CA.html).\n\n**Example:**\n```\ncurl -X POST http://api.us-east-1.mbedcloud.com/v3/developer-certificates \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\" \\\n-d { \"name\": \"\", \"description\": \"\" }\n```", + "description": "List all firmware images.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [ { - "api_fieldname": "developer_certificate", - "_key": "certificate" + "api_fieldname": "datafile", + "_key": "datafile_url" } ], "fields": [ { "type": "string", - "description": "Description for the developer certificate.", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "parameter_fieldname": "description", - "in": "body", + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "description": "The ID of the item after which to retrieve the next page.", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", "required": false, - "_key": "description" + "_key": "after" + }, + { + "description": "A comma-separated list of data fields to return. Currently supported: total_count.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "format": "int32", + "type": "integer", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", + "in": "query", + "name": "limit", + "minimum": 2, + "maximum": 1000, + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" }, { "type": "string", - "description": "Name of the developer certificate.", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "body", - "required": true, - "_key": "name" + "enum": [ + "ASC", + "DESC" + ], + "description": "ASC or DESC.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "enum_reference": "firmware_image_order_enum", + "_key": "order" } ], - "method": "post", - "mode": "create", + "method": "get", + "mode": "list", "responses": [ { - "description": "Developer certificate created successfully.", + "description": "Request successful.", "schema": { - "type": "object", "properties": [ { "type": "string", - "description": "Account to which the developer certificate belongs.", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "Description for the developer certificate.", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "type": "string", - "description": "PEM-format X.509 developer certificate.", - "api_fieldname": "developer_certificate", - "entity_fieldname": "certificate", - "_key": "developer_certificate" - }, - { - "type": "string", - "description": "PEM-format developer private key associated with the certificate.", - "api_fieldname": "developer_private_key", - "entity_fieldname": "developer_private_key", - "_key": "developer_private_key" + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { - "type": "string", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "type": "array", + "items": [ + { + "group": "Device_Update", + "entity": "firmware_image", + "_key": "foreign_key" + }, + { + "created_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-image'.", + "type": "string", + "example": "firmware-image" + }, + "datafile": { + "description": "The firmware image file URL.", + "type": "string", + "example": "http://bucket.com/myimage.elf" + }, + "datafile_checksum": { + "description": "The checksum (sha256) generated for the datafile.", + "type": "string", + "example": "e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e" + }, + "datafile_size": { + "description": "The size of the datafile in bytes.", + "format": "int64", + "type": "integer" + }, + "description": { + "description": "The description of the object.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "a description" + }, + "id": { + "description": "The firmware image ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e652be671000000000001001001e5" + }, + "name": { + "description": "The firmware image name.", + "type": "string", + "format": "free text", + "maxLength": 128 + }, + "_key": "properties" + } + ], + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "ID that uniquely identifies the developer certificate.", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "developerCertificateId", - "in": "path", - "required": true, - "_key": "id" + "type": "boolean", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { - "type": "string", - "description": "Name of the developer certificate.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "format": "int32", + "type": "integer", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { + "description": "Entity name: always 'list'.", "type": "string", - "description": "Entity name: always `trusted-cert`.", + "example": "list", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Content of the `security.c` file flashed to the device to provide security credentials.", - "api_fieldname": "security_file_content", - "entity_fieldname": "security_file_content", - "_key": "security_file_content" + "enum": [ + "ASC", + "DESC" + ], + "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "format": "int32", + "type": "integer", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], + "pagination": true, "foreign_key": { - "group": "Security", - "entity": "subtenant_trusted_certificate" + "group": "Device_Update", + "entity": "firmware_image" } }, - "examples": [ - { - "object": "trusted-cert", - "id": "015fee4431fd38c98640fbfb00000000", - "etag": "1", - "created_at": "2017-12-11T14:22:20.009Z", - "account_id": "015fee5d9b3538c98640fbfb00000000", - "name": "DeveloperCertificate", - "description": "This certificate will be used with multiple developer devices.", - "developer_certificate": "-----BEGIN CERTIFICATE-----\\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\\nzhNupQ==\\n-----END CERTIFICATE-----\\n", - "developer_private_key": "-----BEGIN PRIVATE KEY-----\\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\\nQTuqnIv2\\n-----END PRIVATE KEY-----\\n", - "security_file_content": "/*\\n * Copyright (c) 2017 ARM Limited. All rights reserved.\\n * SPDX-License-Identifier: Apache-2.0\\n * Licensed under the Apache License, Version 2.0 (the License); you may\\n * not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\\n\\n#include \\n\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \\\"0161dbbcdd660a580a010c3403c00000\\\";\\nconst char MBED_CLOUD_DEV_ACCOUNT_ID[] = \\\"015843e32ec902420a015e0700000000\\\";\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \\\"coaps://coap-integration-lab.dev.mbed.com:5684?aid=015843e32ec902420a015e0700000000\\\";\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,\\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\\n 0x91, 0x07, 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\\n 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30, 0x15,\\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\\n 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12, 0x30,\\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,\\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\\n 0x4c, 0x74, 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, 0x30, 0x31,\\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\\n 0x63, 0x39, 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\\n 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, 0x62, 0x62,\\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\\n 0x38, 0x30, 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\\n 0x32, 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x30, 0x32,\\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\\n 0x5a, 0x30, 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47,\\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\\n 0x04, 0x08, 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69,\\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\\n 0x55, 0x04, 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10,\\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\\n 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04,\\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\\n 0x33, 0x65, 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, 0x31, 0x35,\\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, 0x30, 0x31,\\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\\n 0x36, 0x36, 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, 0x30, 0x33,\\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\\n 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\\n 0x04, 0x44, 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, 0x3d, 0xa3,\\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\\n 0xb7, 0x91, 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, 0x7a, 0x3f,\\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\\n 0x13, 0xa8, 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, 0x9c, 0x8b,\\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\\n 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, 0x40, 0x00,\\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, 0x0d, 0x8e,\\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\\n 0x42, 0x5c, 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, 0xa7, 0x76,\\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\\n 0xb1, 0x83, 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, 0x34, 0x1d,\\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\\n 0xce, 0x13, 0x6e, 0xa5 };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x5c,\\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, 0x43,\\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\\n 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x41, 0x30,\\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, 0x31,\\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\\n 0x18, 0x0f, 0x32, 0x30, 0x35, 0x32, 0x30, 0x35,\\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, 0x30,\\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\\n 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42,\\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,\\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\\n 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69, 0x72,\\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,\\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10, 0x30,\\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,\\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\\n 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,\\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, 0x6e,\\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\\n 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74,\\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, 0x30,\\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,\\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\\n 0xe0, 0x57, 0x4e, 0x1b, 0xac, 0x29, 0x82, 0xea,\\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, 0xbc,\\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\\n 0xfa, 0x41, 0xf8, 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, 0x78,\\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\\n 0x6f, 0x57, 0x04, 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x03,\\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\\n 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,\\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\\n 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xef, 0x69,\\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, 0xb8,\\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\\n 0x39, 0x30, 0x10, 0x06, 0x09, 0x2b, 0x06, 0x01,\\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03,\\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\\n 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03,\\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xa2,\\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\\n 0xf5, 0x71, 0x86, 0x33, 0x29, 0x05, 0x4c, 0xf9,\\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, 0x5c,\\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\\n 0x20, 0x3e, 0xfe, 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, 0x26,\\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\\n 0x44, 0x36, 0xf9, 0x74, 0xa1, 0x82, 0x76, 0x7a,\\n 0x6e };\\n\\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x26,\\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, 0x4a,\\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x18, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\\n 0x4d, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d,\\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, 0x30,\\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\\n 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x32, 0x31,\\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, 0x6f,\\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\\n 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30,\\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0e,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12,\\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,\\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\\n 0x67, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,\\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, 0x4d,\\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\\n 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x41,\\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x67,\\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\\n 0x57, 0x4d, 0x32, 0x4d, 0x20, 0x43, 0x41, 0x30,\\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\\n 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42,\\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, 0xf0,\\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\\n 0xa9, 0x29, 0xa1, 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, 0x2c,\\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\\n 0x14, 0x24, 0xb1, 0xfb, 0x16, 0x34, 0x0e, 0x43,\\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, 0xaa,\\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\\n 0xa0, 0xc5, 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b,\\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03,\\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\\n 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,\\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03,\\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\\n 0xa1, 0xa5, 0x94, 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, 0x9a,\\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\\n 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,\\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, 0x11,\\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\\n 0x13, 0x30, 0x52, 0x77, 0xaa, 0xda, 0xda, 0xcb,\\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, 0xfa,\\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\\n 0xb1, 0x67, 0x6b, 0x69, 0x07, 0x0e, 0xcd, 0x77,\\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, 0xc0,\\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\\n 0x70, 0x98, 0xb9, 0x1e };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = \\n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\\n 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,\\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\\n 0x01, 0x01, 0x04, 0x20, 0x78, 0xa7, 0x3d, 0xed,\\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, 0x46,\\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\\n 0xb3, 0xc0, 0x00, 0x98, 0x22, 0xcf, 0x3c, 0x38,\\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, 0x08,\\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\\n 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x44, 0x9c,\\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, 0x4d,\\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\\n 0x16, 0xcb, 0x48, 0x72, 0x4f, 0xb7, 0x91, 0x36,\\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, 0xe5,\\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\\n 0xd7, 0xbd, 0xa4, 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, 0xec,\\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\\n\\nconst char MBED_CLOUD_DEV_MANUFACTURER[] = \\\"dev_manufacturer\\\";\\n\\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \\\"dev_model_num\\\";\\n\\nconst char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \\\"0\\\";\\n\\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] = \\\"dev_device_type\\\";\\n\\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = \\\"dev_hardware_version\\\";\\n\\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB = 0;\\n\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\\n\\n#endif //__MBED_CLOUD_DEV_CREDENTIALS_H__\\n", - "_key": "Success" - } - ], - "_key": "201" + "_key": "200" }, { - "description": "Bad request.", + "description": "Bad Request.", "schema": { "type": "object", "required": [ @@ -27611,24 +44508,10 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 400, - "type": "validation_error", - "message": "Bad Request. Missing certificate name.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "fields": { - "name": "name", - "message": "Missing certificate name." - }, - "_key": "Bad Request Error" - } - ], "_key": "400" }, { - "description": "Invalid access token.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -27698,20 +44581,10 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 401, - "type": "invalid_auth", - "message": "Invalid access token.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "_key": "Authentication Error" - } - ], "_key": "401" }, { - "description": "The maximum number of developer certificates for the given account has already been reached.", + "description": "Unable to find content.", "schema": { "type": "object", "required": [ @@ -27781,24 +44654,241 @@ } ] }, - "examples": [ + "_key": "404" + } + ], + "path": "/v3/firmware-images", + "summary": "List all images", + "return_type": "paginated_response(firmware_image)", + "return_info": { + "self": true, + "custom": false, + "type": "firmware_image" + }, + "x_filter": { + "created_at": [ + "in", + "nin", + "lte", + "gte" + ], + "datafile_url": [ + "eq", + "neq", + "in", + "nin" + ], + "datafile_checksum": [ + "eq", + "neq", + "in", + "nin" + ], + "datafile_size": [ + "eq", + "neq", + "in", + "nin" + ], + "description": [ + "eq", + "neq", + "in", + "nin" + ], + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "name": [ + "eq", + "neq", + "in", + "nin" + ], + "updated_at": [ + "in", + "nin", + "lte", + "gte" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "data", + "has_more", + "total_count", + "created_at__in", + "created_at__nin", + "created_at__lte", + "created_at__gte", + "datafile__eq", + "datafile__neq", + "datafile__in", + "datafile__nin", + "datafile_checksum__eq", + "datafile_checksum__neq", + "datafile_checksum__in", + "datafile_checksum__nin", + "datafile_size__eq", + "datafile_size__neq", + "datafile_size__in", + "datafile_size__nin", + "description__eq", + "description__neq", + "description__in", + "description__nin", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "name__eq", + "name__neq", + "name__in", + "name__nin", + "updated_at__in", + "updated_at__nin", + "updated_at__lte", + "updated_at__gte" + ], + "foreign_key_priority": "self", + "group_id": "Device_Update", + "parameter_map": { + "image_id": "id" + }, + "operation_id": "Firmware_Image_list", + "pagination": true, + "foreign_key": { + "group": "Device_Update", + "entity": "firmware_image" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Retrieve a firmware image.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/1123456f9012ab567890120000789012 \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + } + ], + "fields": [ + { + "description": "The firmware image ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e652be671000000000001001001e5", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "image_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Retrieved result successfully.", + "schema": [ { - "object": "error", - "code": 403, - "type": "account_limit_exceeded", - "message": "Forbidden. Limit for the number of certificates exceeded.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "fields": { - "name": "cert-count", - "message": "10" + "group": "Device_Update", + "entity": "firmware_image", + "_key": "foreign_key" + }, + { + "created_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - "_key": "Account Limit Exceeded Error" + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-image'.", + "type": "string", + "example": "firmware-image", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "datafile": { + "description": "The firmware image file URL.", + "type": "string", + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "datafile", + "entity_fieldname": "datafile_url" + }, + "datafile_checksum": { + "description": "The checksum (sha256) generated for the datafile.", + "type": "string", + "example": "e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e", + "api_fieldname": "datafile_checksum", + "entity_fieldname": "datafile_checksum" + }, + "datafile_size": { + "description": "The size of the datafile in bytes.", + "format": "int64", + "type": "integer", + "api_fieldname": "datafile_size", + "entity_fieldname": "datafile_size" + }, + "description": { + "description": "The description of the object.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "a description", + "api_fieldname": "description", + "entity_fieldname": "description" + }, + "id": { + "description": "The firmware image ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e652be671000000000001001001e5", + "api_fieldname": "id", + "entity_fieldname": "id" + }, + "name": { + "description": "The firmware image name.", + "type": "string", + "format": "free text", + "maxLength": 128, + "api_fieldname": "name", + "entity_fieldname": "name" + }, + "_key": "properties" } ], - "_key": "403" + "_key": "200" }, { - "description": "Certificate with the given name already exists.", + "description": "Bad Request.", "schema": { "type": "object", "required": [ @@ -27868,86 +44958,10 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 409, - "type": "duplicate", - "message": "Conflict. Certificate already exists.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "fields": { - "name": "certificate", - "message": "Certificate already exists." - }, - "_key": "Duplicate Error" - } - ], - "_key": "409" - } - ], - "path": "/v3/developer-certificates", - "summary": "Create a new developer certificate to connect to the bootstrap server.", - "return_type": "developer_certificate", - "return_info": { - "self": true, - "custom": false, - "type": "developer_certificate" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "id", - "created_at", - "account_id", - "developer_private_key", - "security_file_content", - "certificate" - ], - "group_id": "Security", - "parameter_map": { - "developerCertificateId": "id" - }, - "operation_id": "createDeveloperCertificate", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "create" - }, - { - "description": "Delete a trusted certificate.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [ - { - "api_fieldname": "developer_certificate", - "_key": "certificate" - } - ], - "fields": [ - { - "name": "cert_id", - "in": "path", - "description": "The ID of the trusted certificate to delete.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "cert_id", - "external_param": false, - "parameter_fieldname": "cert_id", - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Deleted successfully.", - "_key": "204" + "_key": "400" }, { - "description": "Authentication failure.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -28020,7 +45034,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Firmware image can't be found.", "schema": { "type": "object", "required": [ @@ -28090,10 +45104,391 @@ } ] }, - "_key": "403" + "_key": "404" + } + ], + "path": "/v3/firmware-images/{image_id}", + "summary": "Get an image.", + "return_type": "firmware_image", + "return_info": { + "self": true, + "custom": false, + "type": "firmware_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "datafile_checksum", + "datafile_size", + "description", + "name", + "datafile_url" + ], + "group_id": "Device_Update", + "parameter_map": { + "image_id": "id" + }, + "operation_id": "Firmware_Image_retrieve", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "description": "The checksum (sha256) generated for the datafile.", + "type": "string", + "example": "e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e", + "api_fieldname": "datafile_checksum", + "readOnly": true, + "required": false, + "_key": "datafile_checksum" + }, + { + "description": "The size of the datafile in bytes.", + "format": "int64", + "type": "integer", + "api_fieldname": "datafile_size", + "readOnly": true, + "required": false, + "_key": "datafile_size" + }, + { + "description": "The firmware image file URL.", + "type": "string", + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "datafile", + "readOnly": true, + "required": false, + "_key": "datafile_url" + }, + { + "description": "The description of the object.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "a description", + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "description": "The firmware image ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e652be671000000000001001001e5", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "description": "The firmware image name.", + "type": "string", + "format": "free text", + "maxLength": 128, + "api_fieldname": "name", + "readOnly": false, + "required": false, + "_key": "name" + }, + { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + } + ], + "tags": [ + "Device update - firmware images" + ], + "group_id": "Device_Update", + "_key": "firmware_image" + }, + { + "swagger_models": [ + "FirmwareManifest", + "FirmwareManifestPage" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Upload a firmware manifest. The API enforces a maximum manifest size of 2KB.\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \\\n-H 'Authorization: Bearer ' \\\n-H 'Content-Type: multipart/form-data' \\\n-F 'datafile=@myimage.bin;type=application/octet-stream' \\\n-F 'description=bla bla' \\\n-F 'key_table=@myKeyTable.proto;type=' \\\n-F 'name=My Manifest'\n```\n", + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + }, + { + "api_fieldname": "key_table", + "_key": "key_table_url" + } + ], + "fields": [ + { + "description": "The description of the firmware manifest.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "stream", + "required": false, + "_key": "description" + }, + { + "description": "The manifest file to create. The API gateway enforces the account-specific file size. File name must not exceed 100 characters.", + "in": "stream", + "name": "datafile", + "required": true, + "type": "file", + "entity_fieldname": "firmware_manifest_file", + "api_fieldname": "datafile", + "external_param": true, + "parameter_fieldname": "datafile", + "_key": "firmware_manifest_file" + }, + { + "description": "The key table of pre-shared keys for devices. The table is generated by the manifest tool. File name must not exceed 100 characters.", + "in": "stream", + "name": "key_table", + "required": false, + "type": "file", + "entity_fieldname": "key_table_file", + "api_fieldname": "key_table", + "external_param": true, + "parameter_fieldname": "key_table", + "_key": "key_table_file" + }, + { + "description": "The name of the manifest.", + "type": "string", + "format": "free text", + "maxLength": 128, + "example": "manifest_name", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "stream", + "required": true, + "_key": "name" + } + ], + "method": "post", + "mode": "create", + "responses": [ + { + "description": "Created.", + "schema": [ + { + "group": "Device_Update", + "entity": "firmware_manifest", + "_key": "foreign_key" + }, + { + "created_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-manifest'.", + "type": "string", + "example": "firmware-manifest", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "manifest_schema_version": { + "description": "Version of the manifest schema (1 or 3).", + "type": "string", + "enum": [ + "1", + "3" + ], + "api_fieldname": "manifest_schema_version", + "entity_fieldname": "manifest_schema_version" + }, + "datafile": { + "description": "The URL of the ASN.1 DER-encoded firmware manifest binary.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/mymanifest.manifest", + "api_fieldname": "datafile", + "entity_fieldname": "datafile_url" + }, + "datafile_size": { + "description": "The size of the firmware manifest in bytes.", + "type": "integer", + "format": "int64", + "api_fieldname": "datafile_size", + "entity_fieldname": "datafile_size" + }, + "delivered_payload_url": { + "description": "The URL of the payload to deliver to the device.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "delivered_payload_url", + "entity_fieldname": "delivered_payload_url" + }, + "delivered_payload_size": { + "description": "The size in bytes of the payload to deliver to the device.", + "type": "integer", + "format": "int64", + "api_fieldname": "delivered_payload_size", + "entity_fieldname": "delivered_payload_size" + }, + "delivered_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the payload to deliver to the device.", + "type": "string", + "format": "hex", + "example": "c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc", + "api_fieldname": "delivered_payload_digest", + "entity_fieldname": "delivered_payload_digest" + }, + "delivered_payload_type": { + "description": "Type of the payload to deliver to the device (full or delta image).", + "type": "string", + "enum": [ + "full", + "delta" + ], + "api_fieldname": "delivered_payload_type", + "entity_fieldname": "delivered_payload_type" + }, + "precursor_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the currently installed payload.", + "type": "string", + "example": "54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f", + "api_fieldname": "precursor_payload_digest", + "entity_fieldname": "precursor_payload_digest" + }, + "description": { + "description": "The description of the firmware manifest.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "", + "api_fieldname": "description", + "entity_fieldname": "description" + }, + "device_class": { + "description": "The device class ID.", + "type": "string", + "format": "uuid", + "example": "42c4d8de-704d-546e-b9d3-1ce1eb316167", + "api_fieldname": "device_class", + "entity_fieldname": "device_class" + }, + "device_vendor": { + "description": "The device vendor ID.", + "type": "string", + "format": "uuid", + "example": "5d645eae-c231-5a89-9764-2e655cd94fa8", + "api_fieldname": "device_vendor", + "entity_fieldname": "device_vendor" + }, + "update_priority": { + "description": "Update priority, passed to the application callback when an update is performed. Allows the application to make application-specific decisions.", + "type": "integer", + "format": "int64", + "api_fieldname": "update_priority", + "entity_fieldname": "update_priority" + }, + "key_table": { + "description": "The key table of pre-shared keys for devices.", + "type": "string", + "format": "uri", + "example": "http://example.com/key-table", + "api_fieldname": "key_table", + "entity_fieldname": "key_table_url" + }, + "id": { + "description": "The firmware manifest ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "12345678901234567890123456789012", + "api_fieldname": "id", + "entity_fieldname": "id" + }, + "name": { + "description": "The name of the manifest.", + "type": "string", + "format": "free text", + "maxLength": 128, + "example": "manifest_name", + "api_fieldname": "name", + "entity_fieldname": "name" + }, + "timestamp": { + "description": "The firmware manifest version as a timestamp.", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "timestamp", + "entity_fieldname": "timestamp" + }, + "parsed_raw_manifest": { + "description": "Raw manifest in JSON format, parsed from ASN.1 DER encoding.\nFields may change. Backwards compatibility is not guaranteed.\nRecommended for debugging only.\n", + "type": "object", + "api_fieldname": "parsed_raw_manifest", + "entity_fieldname": "parsed_raw_manifest" + }, + "_key": "properties" + } + ], + "_key": "201" }, { - "description": "Certificate not found.", + "description": "Validation error. The data used to create the firmware manifest did not validate and/or the manifest uploaded exceeded 2 KB in size.\n", "schema": { "type": "object", "required": [ @@ -28163,263 +45558,238 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/trusted-certificates/{cert_id}", - "summary": "Delete a trusted certificate by ID.", - "return_type": "developer_certificate", - "return_info": { - "self": true, - "custom": false, - "type": "developer_certificate" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Security", - "parameter_map": { - "developerCertificateId": "id", - "cert_id": "id" - }, - "operation_id": "deleteCertificate", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve a trusted certificate by ID.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [ - { - "api_fieldname": "developer_certificate", - "_key": "certificate" - } - ], - "fields": [ - { - "type": "string", - "example": "01619571d01d0242ac12000600000000", - "description": "Entity ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "cert_id", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "get", - "mode": "get_trusted_certificate_info", - "responses": [ + "_key": "400" + }, { - "description": "Successful operation.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ - "account_id", - "certificate", - "certificate_fingerprint", - "etag", - "id", - "issuer", - "name", + "code", + "message", "object", - "service", - "subject", - "validity" + "request_id", + "type" ], "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "example": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----", - "description": "X509.v3 trusted certificate in PEM format.", - "api_fieldname": "certificate", - "entity_fieldname": "certificate", - "_key": "certificate" - }, - { - "type": "string", - "example": "a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1", - "description": "A SHA-256 fingerprint of the certificate.", - "api_fieldname": "certificate_fingerprint", - "entity_fieldname": "certificate_fingerprint", - "_key": "certificate_fingerprint" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "maxLength": 500, - "x-nullable": true, - "example": "Certificate created by me.", - "description": "Human readable description of this certificate.", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, { "type": "integer", "format": "int32", - "example": 1, - "description": "Device execution mode where 1 means a developer certificate.", - "api_fieldname": "device_execution_mode", - "entity_fieldname": "device_execution_mode", - "_key": "device_execution_mode" - }, - { - "type": "boolean", - "example": false, - "description": "If true, signature is not required. Default value false.", - "api_fieldname": "enrollment_mode", - "entity_fieldname": "enrollment_mode", - "_key": "enrollment_mode" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571d01d0242ac12000600000000", - "description": "Entity ID.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "example": "CN=issuer", - "description": "Issuer of the certificate.", - "api_fieldname": "issuer", - "entity_fieldname": "issuer", - "_key": "issuer" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "maxLength": 100, - "example": "My certificate", - "description": "Certificate name.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "Entity name: always 'trusted-cert'", + "description": "Entity name, always `error`.", "enum": [ - "trusted-cert" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { - "x-nullable": true, "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the owner.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner_id", - "entity_fieldname": "owner_id", - "_key": "owner_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "description": "Service name where the certificate is used.", - "enum": [ - "lwm2m", - "bootstrap" - ], - "api_fieldname": "service", - "entity_fieldname": "service", - "_key": "service" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "example": "ACTIVE", - "description": "Status of the certificate.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "example": "CN=subject", - "description": "Subject of the certificate.", - "api_fieldname": "subject", - "entity_fieldname": "subject", - "_key": "subject" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { - "type": "boolean", - "example": true, - "description": "This read-only flag indicates whether the certificate is valid or not.", - "readOnly": true, - "api_fieldname": "valid", - "entity_fieldname": "valid", - "_key": "valid" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "format": "date-time", - "example": "2038-02-14T15:24:14Z", - "description": "Expiration time in UTC formatted as RFC3339.", - "api_fieldname": "validity", - "entity_fieldname": "validity", - "_key": "validity" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "description": "Represents a trusted certificate in responses.", - "foreign_key": { - "group": "Security", - "entity": "developer_certificate" - } + ] }, - "_key": "200" + "_key": "403" + } + ], + "path": "/v3/firmware-manifests/", + "summary": "Upload a manifest", + "return_type": "firmware_manifest", + "return_info": { + "self": true, + "custom": false, + "type": "firmware_manifest" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "manifest_schema_version", + "datafile_size", + "delivered_payload_url", + "delivered_payload_size", + "delivered_payload_digest", + "delivered_payload_type", + "precursor_payload_digest", + "device_class", + "device_vendor", + "update_priority", + "id", + "timestamp", + "parsed_raw_manifest", + "datafile_url", + "key_table_url" + ], + "group_id": "Device_Update", + "parameter_map": { + "manifest_id": "id", + "datafile": "firmware_manifest_file", + "key_table": "key_table_file" + }, + "operation_id": "Firmware_Manifest_create", + "notes": "This is not a standard create method as it uploads a file (or files) which creates an entity which contains URIs to the uploaded file(s).", + "unaggregated": true, + "pagination": false, + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "create" + }, + { + "description": "Delete a firmware manifest.\n
\n**Usage example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/11234567f9012ab56780120000789012 \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" }, { - "description": "Authentication failure.", + "api_fieldname": "key_table", + "_key": "key_table_url" + } + ], + "fields": [ + { + "description": "The firmware manifest ID.", + "in": "path", + "name": "manifest_id", + "required": true, + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "entity_fieldname": "id", + "api_fieldname": "manifest_id", + "external_param": false, + "parameter_fieldname": "manifest_id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Firmware manifest deleted.", + "_key": "204" + }, + { + "description": "Bad Request.", "schema": { "type": "object", "required": [ @@ -28489,10 +45859,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -28562,10 +45932,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "Certificate not found.", + "description": "Firmware manifest not found.", "schema": { "type": "object", "required": [ @@ -28638,13 +46008,13 @@ "_key": "404" } ], - "path": "/v3/trusted-certificates/{cert_id}", - "summary": "Get trusted certificate by ID.", - "return_type": "trusted_certificate", + "path": "/v3/firmware-manifests/{manifest_id}", + "summary": "Delete a manifest", + "return_type": "firmware_manifest", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "trusted_certificate" + "type": "firmware_manifest" }, "x_filter": {}, "x_deprecation": null, @@ -28652,165 +46022,301 @@ "object", "etag", "type", - "filter", - "created_at", - "updated_at", - "name", - "description", - "account_id", - "owner_id", - "certificate", - "service", - "issuer", - "subject", - "validity", - "status", - "device_execution_mode", - "enrollment_mode", - "certificate_fingerprint", - "valid" + "filter" ], - "group_id": "Security", + "group_id": "Device_Update", "parameter_map": { - "developerCertificateId": "id", - "cert_id": "id" - }, - "operation_id": "getCertificate", - "unaggregated": true, - "foreign_key": { - "entity": "trusted_certificate", - "group": "Security" + "manifest_id": "id" }, + "operation_id": "Firmware_Manifest_destroy", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "get_trusted_certificate_info" + "_key": "delete" }, { - "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", + "description": "List all firmware manifests.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [ { - "api_fieldname": "developer_certificate", - "_key": "certificate" + "api_fieldname": "datafile", + "_key": "datafile_url" + }, + { + "api_fieldname": "key_table", + "_key": "key_table_url" } ], "fields": [ { "type": "string", - "description": "ID that uniquely identifies the developer certificate.", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "developerCertificateId", - "in": "path", - "required": true, - "_key": "id" + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "description": "The ID of the item after which to retrieve the next page.", + "in": "query", + "name": "after", + "external_param": true, + "parameter_fieldname": "after", + "required": false, + "_key": "after" + }, + { + "description": "A comma-separated list of data fields to return. Currently supported: total_count.", + "in": "query", + "name": "include", + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "required": false, + "_key": "include" + }, + { + "format": "int32", + "type": "integer", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", + "in": "query", + "name": "limit", + "minimum": 2, + "maximum": 1000, + "external_param": true, + "parameter_fieldname": "limit", + "required": false, + "_key": "limit" + }, + { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "ASC or DESC.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "in": "query", + "name": "order", + "external_param": true, + "parameter_fieldname": "order", + "required": false, + "enum_reference": "firmware_manifest_order_enum", + "_key": "order" } ], "method": "get", - "mode": "read", + "mode": "list", "responses": [ { - "description": "Developer certificate returned successfully.", + "description": "Request successful.", "schema": { - "type": "object", "properties": [ { "type": "string", - "description": "Account to which the developer certificate belongs.", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "Description for the developer certificate.", - "x-nullable": true, - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "type": "string", - "description": "PEM-format X.509 developer certificate.", - "api_fieldname": "developer_certificate", - "entity_fieldname": "developer_certificate", - "_key": "developer_certificate" - }, - { - "type": "string", - "description": "PEM-format developer private key associated with the certificate.", - "api_fieldname": "developer_private_key", - "entity_fieldname": "developer_private_key", - "_key": "developer_private_key" + "example": null, + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { - "type": "string", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "type": "array", + "items": [ + { + "group": "Device_Update", + "entity": "firmware_manifest", + "_key": "foreign_key" + }, + { + "created_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-manifest'.", + "type": "string", + "example": "firmware-manifest" + }, + "manifest_schema_version": { + "description": "Version of the manifest schema (1 or 3).", + "type": "string", + "enum": [ + "1", + "3" + ] + }, + "datafile": { + "description": "The URL of the ASN.1 DER-encoded firmware manifest binary.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/mymanifest.manifest" + }, + "datafile_size": { + "description": "The size of the firmware manifest in bytes.", + "type": "integer", + "format": "int64" + }, + "delivered_payload_url": { + "description": "The URL of the payload to deliver to the device.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/myimage.elf" + }, + "delivered_payload_size": { + "description": "The size in bytes of the payload to deliver to the device.", + "type": "integer", + "format": "int64" + }, + "delivered_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the payload to deliver to the device.", + "type": "string", + "format": "hex", + "example": "c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc" + }, + "delivered_payload_type": { + "description": "Type of the payload to deliver to the device (full or delta image).", + "type": "string", + "enum": [ + "full", + "delta" + ] + }, + "precursor_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the currently installed payload.", + "type": "string", + "example": "54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f" + }, + "description": { + "description": "The description of the firmware manifest.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "" + }, + "device_class": { + "description": "The device class ID.", + "type": "string", + "format": "uuid", + "example": "42c4d8de-704d-546e-b9d3-1ce1eb316167" + }, + "device_vendor": { + "description": "The device vendor ID.", + "type": "string", + "format": "uuid", + "example": "5d645eae-c231-5a89-9764-2e655cd94fa8" + }, + "update_priority": { + "description": "Update priority, passed to the application callback when an update is performed. Allows the application to make application-specific decisions.", + "type": "integer", + "format": "int64" + }, + "key_table": { + "description": "The key table of pre-shared keys for devices.", + "type": "string", + "format": "uri", + "example": "http://example.com/key-table" + }, + "id": { + "description": "The firmware manifest ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "12345678901234567890123456789012" + }, + "name": { + "description": "The name of the manifest.", + "type": "string", + "format": "free text", + "maxLength": 128, + "example": "manifest_name" + }, + "timestamp": { + "description": "The firmware manifest version as a timestamp.", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string" + }, + "parsed_raw_manifest": { + "description": "Raw manifest in JSON format, parsed from ASN.1 DER encoding.\nFields may change. Backwards compatibility is not guaranteed.\nRecommended for debugging only.\n", + "type": "object" + }, + "_key": "properties" + } + ], + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "ID that uniquely identifies the developer certificate.", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "type": "boolean", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { - "type": "string", - "description": "Name of the developer certificate.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "format": "int32", + "type": "integer", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { + "description": "Entity name: always 'list'.", "type": "string", - "description": "Entity name: always `trusted-cert`.", + "example": "list", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "Content of the `security.c` file flashed to the device to provide security credentials.", - "api_fieldname": "security_file_content", - "entity_fieldname": "security_file_content", - "_key": "security_file_content" + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "format": "int32", + "type": "integer", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], + "pagination": true, "foreign_key": { - "group": "Security", - "entity": "developer_certificate" + "group": "Device_Update", + "entity": "firmware_manifest" } }, - "examples": [ - { - "object": "trusted-cert", - "id": "015fee4431fd38c98640fbfb00000000", - "etag": "1", - "created_at": "2017-12-11T14:22:20.009Z", - "account_id": "015fee5d9b3538c98640fbfb00000000", - "name": "DeveloperCertificate", - "description": "This certificate applies to multiple developer devices.", - "developer_certificate": "-----BEGIN CERTIFICATE-----\\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\\nzhNupQ==\\n-----END CERTIFICATE-----\\n", - "developer_private_key": "-----BEGIN PRIVATE KEY-----\\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\\nQTuqnIv2\\n-----END PRIVATE KEY-----\\n", - "security_file_content": "/*\\n * Copyright (c) 2017 ARM Limited. All rights reserved.\\n * SPDX-License-Identifier: Apache-2.0\\n * Licensed under the Apache License, Version 2.0 (the License); you may\\n * not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an AS IS BASIS, WITHOUT\\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\\n\\n#include \\n\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \\\"0161dbbcdd660a580a010c3403c00000\\\";\\nconst char MBED_CLOUD_DEV_ACCOUNT_ID[] = \\\"015843e32ec902420a015e0700000000\\\";\\nconst char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \\\"coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000\\\";\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,\\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\\n 0x91, 0x07, 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\\n 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30, 0x15,\\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\\n 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12, 0x30,\\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,\\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\\n 0x4c, 0x74, 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, 0x30, 0x31,\\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\\n 0x63, 0x39, 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\\n 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, 0x62, 0x62,\\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\\n 0x38, 0x30, 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\\n 0x32, 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x30, 0x32,\\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\\n 0x5a, 0x30, 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47,\\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\\n 0x04, 0x08, 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69,\\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\\n 0x55, 0x04, 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10,\\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\\n 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04,\\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\\n 0x33, 0x65, 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, 0x31, 0x35,\\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\\n 0x30, 0x30, 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, 0x30, 0x31,\\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\\n 0x36, 0x36, 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, 0x30, 0x33,\\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\\n 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\\n 0x04, 0x44, 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, 0x3d, 0xa3,\\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\\n 0xb7, 0x91, 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, 0x7a, 0x3f,\\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\\n 0x13, 0xa8, 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, 0x9c, 0x8b,\\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\\n 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, 0x40, 0x00,\\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, 0x0d, 0x8e,\\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\\n 0x42, 0x5c, 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, 0xa7, 0x76,\\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\\n 0xb1, 0x83, 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, 0x34, 0x1d,\\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\\n 0xce, 0x13, 0x6e, 0xa5 };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x5c,\\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, 0x43,\\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\\n 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x41, 0x30,\\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, 0x31,\\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\\n 0x18, 0x0f, 0x32, 0x30, 0x35, 0x32, 0x30, 0x35,\\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, 0x30,\\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\\n 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42,\\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,\\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\\n 0x69, 0x64, 0x67, 0x65, 0x73, 0x68, 0x69, 0x72,\\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,\\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x31, 0x10, 0x30,\\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,\\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\\n 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,\\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, 0x6e,\\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\\n 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74,\\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, 0x30,\\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce,\\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,\\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\\n 0xe0, 0x57, 0x4e, 0x1b, 0xac, 0x29, 0x82, 0xea,\\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, 0xbc,\\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\\n 0xfa, 0x41, 0xf8, 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, 0x78,\\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\\n 0x6f, 0x57, 0x04, 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, 0x03,\\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\\n 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13,\\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,\\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\\n 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xef, 0x69,\\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, 0xb8,\\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\\n 0x39, 0x30, 0x10, 0x06, 0x09, 0x2b, 0x06, 0x01,\\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03,\\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\\n 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03,\\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xa2,\\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\\n 0xf5, 0x71, 0x86, 0x33, 0x29, 0x05, 0x4c, 0xf9,\\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, 0x5c,\\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\\n 0x20, 0x3e, 0xfe, 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, 0x26,\\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\\n 0x44, 0x36, 0xf9, 0x74, 0xa1, 0x82, 0x76, 0x7a,\\n 0x6e };\\n\\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] = \\n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x26,\\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, 0x4a,\\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\\n 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, 0x30,\\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\\n 0x47, 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03,\\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d,\\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\\n 0x69, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06,\\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61,\\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\\n 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a,\\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74,\\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\\n 0x04, 0x03, 0x13, 0x18, 0x41, 0x52, 0x4d, 0x20,\\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,\\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\\n 0x4d, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d,\\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, 0x30,\\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\\n 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x32, 0x31,\\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, 0x6f,\\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\\n 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, 0x30,\\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0e,\\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\\n 0x65, 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, 0x12,\\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,\\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\\n 0x67, 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,\\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, 0x4d,\\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\\n 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x41,\\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x67,\\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\\n 0x57, 0x4d, 0x32, 0x4d, 0x20, 0x43, 0x41, 0x30,\\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48,\\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\\n 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42,\\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, 0xf0,\\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\\n 0xa9, 0x29, 0xa1, 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, 0x2c,\\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\\n 0x14, 0x24, 0xb1, 0xfb, 0x16, 0x34, 0x0e, 0x43,\\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, 0xaa,\\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\\n 0xa0, 0xc5, 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b,\\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03,\\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\\n 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,\\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03,\\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\\n 0xa1, 0xa5, 0x94, 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, 0x9a,\\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\\n 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01,\\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06,\\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\\n 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, 0x11,\\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\\n 0x13, 0x30, 0x52, 0x77, 0xaa, 0xda, 0xda, 0xcb,\\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, 0xfa,\\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\\n 0xb1, 0x67, 0x6b, 0x69, 0x07, 0x0e, 0xcd, 0x77,\\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, 0xc0,\\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\\n 0x70, 0x98, 0xb9, 0x1e };\\n\\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = \\n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\\n 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,\\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,\\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\\n 0x01, 0x01, 0x04, 0x20, 0x78, 0xa7, 0x3d, 0xed,\\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, 0x46,\\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\\n 0xb3, 0xc0, 0x00, 0x98, 0x22, 0xcf, 0x3c, 0x38,\\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, 0x08,\\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\\n 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x44, 0x9c,\\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, 0x4d,\\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\\n 0x16, 0xcb, 0x48, 0x72, 0x4f, 0xb7, 0x91, 0x36,\\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, 0xe5,\\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\\n 0xd7, 0xbd, 0xa4, 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, 0xec,\\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\\n\\nconst char MBED_CLOUD_DEV_MANUFACTURER[] = \\\"dev_manufacturer\\\";\\n\\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \\\"dev_model_num\\\";\\n\\nconst char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \\\"0\\\";\\n\\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] = \\\"dev_device_type\\\";\\n\\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = \\\"dev_hardware_version\\\";\\n\\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB = 0;\\n\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\\n\\n#endif //__MBED_CLOUD_DEV_CREDENTIALS_H__\\n", - "_key": "Success" - } - ], "_key": "200" }, { - "description": "Bad request.", + "description": "Bad Request.", "schema": { "type": "object", "required": [ @@ -28883,7 +46389,7 @@ "_key": "400" }, { - "description": "Invalid access token.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -28953,20 +46459,10 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 401, - "type": "invalid_auth", - "message": "Invalid access token.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "_key": "Authentication Error" - } - ], "_key": "401" }, { - "description": "Developer certificate not found with given ID.", + "description": "Unable to find content.", "schema": { "type": "object", "required": [ @@ -29036,183 +46532,342 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 404, - "type": "not_found", - "message": "Not Found. Not found: 016006724ff53ade90ed948d03c00001", - "request_id": "015fee4431fd38c98640fbfb00000000", - "_key": "Authentication Error" - } - ], "_key": "404" } ], - "path": "/v3/developer-certificates/{developerCertificateId}", - "summary": "Fetch an existing developer certificate to connect to the bootstrap server.", - "return_type": "developer_certificate", + "path": "/v3/firmware-manifests/", + "summary": "List all firmware manifests.", + "return_type": "paginated_response(firmware_manifest)", "return_info": { "self": true, "custom": false, - "type": "developer_certificate" + "type": "firmware_manifest" + }, + "x_filter": { + "created_at": [ + "in", + "nin", + "lte", + "gte" + ], + "datafile_url": [ + "eq", + "neq", + "in", + "nin" + ], + "datafile_size": [ + "eq", + "neq", + "in", + "nin" + ], + "description": [ + "eq", + "neq", + "in", + "nin" + ], + "device_class": [ + "eq", + "neq", + "in", + "nin" + ], + "id": [ + "eq", + "neq", + "in", + "nin" + ], + "name": [ + "eq", + "neq", + "in", + "nin" + ], + "timestamp": [ + "in", + "nin", + "lte", + "gte" + ], + "updated_at": [ + "in", + "nin", + "lte", + "gte" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "created_at", - "account_id", - "name", - "description", - "developer_private_key", - "security_file_content", - "certificate" + "data", + "has_more", + "total_count", + "created_at__in", + "created_at__nin", + "created_at__lte", + "created_at__gte", + "datafile__eq", + "datafile__neq", + "datafile__in", + "datafile__nin", + "datafile_size__eq", + "datafile_size__neq", + "datafile_size__in", + "datafile_size__nin", + "description__eq", + "description__neq", + "description__in", + "description__nin", + "device_class__eq", + "device_class__neq", + "device_class__in", + "device_class__nin", + "id__eq", + "id__neq", + "id__in", + "id__nin", + "name__eq", + "name__neq", + "name__in", + "name__nin", + "timestamp__in", + "timestamp__nin", + "timestamp__lte", + "timestamp__gte", + "updated_at__in", + "updated_at__nin", + "updated_at__lte", + "updated_at__gte" ], - "group_id": "Security", + "foreign_key_priority": "self", + "group_id": "Device_Update", "parameter_map": { - "developerCertificateId": "id" + "manifest_id": "id" + }, + "operation_id": "Firmware_Manifest_list", + "pagination": true, + "foreign_key": { + "group": "Device_Update", + "entity": "firmware_manifest" }, - "operation_id": "getDeveloperCertificate", - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "description": "Account to which the developer certificate belongs.", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "string", - "description": "PEM-format X.509 developer certificate.", - "api_fieldname": "developer_certificate", - "readOnly": true, - "required": false, - "_key": "certificate" - }, - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "Description for the developer certificate.", - "x-nullable": true, - "api_fieldname": "description", - "readOnly": false, - "required": false, - "_key": "description" - }, - { - "type": "string", - "description": "PEM-format developer private key associated with the certificate.", - "api_fieldname": "developer_private_key", - "readOnly": true, - "required": false, - "_key": "developer_private_key" - }, - { - "type": "string", - "description": "ID that uniquely identifies the developer certificate.", - "api_fieldname": "id", - "parameter_fieldname": "developerCertificateId", - "in": "path", - "required": true, - "readOnly": false, - "_key": "id" - }, - { - "type": "string", - "description": "Name of the developer certificate.", - "api_fieldname": "name", - "readOnly": false, - "required": true, - "_key": "name" + "_key": "list" }, { - "type": "string", - "description": "Content of the `security.c` file flashed to the device to provide security credentials.", - "api_fieldname": "security_file_content", - "readOnly": true, - "required": false, - "_key": "security_file_content" - } - ], - "field_renames": [ - { - "api_fieldname": "developer_certificate", - "_key": "certificate" - } - ], - "tags": [ - "Device security - developer class certificates", - "Device security - certificates" - ], - "group_id": "Security", - "_key": "developer_certificate" - }, - { - "swagger_models": [ - "CertificateEnrollment", - "DeviceData", - "DeviceDataPostRequest", - "DeviceDataPutRequest", - "DeviceGroupManipulation", - "DevicePage" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Add one device to a group.", - "field_renames": [], - "fields": [ + "description": "Retrieve a firmware manifest.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/1123467f9012ab567890120000789012 \\\n-H 'Authorization: Bearer '\n```\n", + "field_renames": [ { - "in": "path", - "description": "The ID of the group.", - "name": "device-group-id", - "required": true, - "type": "string", - "entity_fieldname": "device-group-id", - "api_fieldname": "device-group-id", - "external_param": true, - "parameter_fieldname": "device-group-id", - "_key": "device-group-id" + "api_fieldname": "datafile", + "_key": "datafile_url" }, { + "api_fieldname": "key_table", + "_key": "key_table_url" + } + ], + "fields": [ + { + "description": "The firmware manifest ID.", "type": "string", - "example": "00000000000000000000000000000000", - "name": "device_id", - "in": "body", - "schema_param": true, + "pattern": "[A-Fa-f0-9]{32}", + "example": "12345678901234567890123456789012", + "api_fieldname": "id", "entity_fieldname": "id", - "api_fieldname": "device_id", - "external_param": false, - "parameter_fieldname": "device_id", + "parameter_fieldname": "manifest_id", + "in": "path", "required": true, "_key": "id" } ], - "method": "post", - "mode": "add_to_group", + "method": "get", + "mode": "read", "responses": [ { - "description": "Success - device added.", - "_key": "204" + "description": "Retrieved result successfully.", + "schema": [ + { + "group": "Device_Update", + "entity": "firmware_manifest", + "_key": "foreign_key" + }, + { + "created_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" + }, + "etag": { + "type": "string", + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "object": { + "description": "Entity name: always 'firmware-manifest'.", + "type": "string", + "example": "firmware-manifest", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "manifest_schema_version": { + "description": "Version of the manifest schema (1 or 3).", + "type": "string", + "enum": [ + "1", + "3" + ], + "api_fieldname": "manifest_schema_version", + "entity_fieldname": "manifest_schema_version" + }, + "datafile": { + "description": "The URL of the ASN.1 DER-encoded firmware manifest binary.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/mymanifest.manifest", + "api_fieldname": "datafile", + "entity_fieldname": "datafile_url" + }, + "datafile_size": { + "description": "The size of the firmware manifest in bytes.", + "type": "integer", + "format": "int64", + "api_fieldname": "datafile_size", + "entity_fieldname": "datafile_size" + }, + "delivered_payload_url": { + "description": "The URL of the payload to deliver to the device.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "delivered_payload_url", + "entity_fieldname": "delivered_payload_url" + }, + "delivered_payload_size": { + "description": "The size in bytes of the payload to deliver to the device.", + "type": "integer", + "format": "int64", + "api_fieldname": "delivered_payload_size", + "entity_fieldname": "delivered_payload_size" + }, + "delivered_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the payload to deliver to the device.", + "type": "string", + "format": "hex", + "example": "c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc", + "api_fieldname": "delivered_payload_digest", + "entity_fieldname": "delivered_payload_digest" + }, + "delivered_payload_type": { + "description": "Type of the payload to deliver to the device (full or delta image).", + "type": "string", + "enum": [ + "full", + "delta" + ], + "api_fieldname": "delivered_payload_type", + "entity_fieldname": "delivered_payload_type" + }, + "precursor_payload_digest": { + "description": "Digest (SHA256, hex-encoded) of the currently installed payload.", + "type": "string", + "example": "54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f", + "api_fieldname": "precursor_payload_digest", + "entity_fieldname": "precursor_payload_digest" + }, + "description": { + "description": "The description of the firmware manifest.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "", + "api_fieldname": "description", + "entity_fieldname": "description" + }, + "device_class": { + "description": "The device class ID.", + "type": "string", + "format": "uuid", + "example": "42c4d8de-704d-546e-b9d3-1ce1eb316167", + "api_fieldname": "device_class", + "entity_fieldname": "device_class" + }, + "device_vendor": { + "description": "The device vendor ID.", + "type": "string", + "format": "uuid", + "example": "5d645eae-c231-5a89-9764-2e655cd94fa8", + "api_fieldname": "device_vendor", + "entity_fieldname": "device_vendor" + }, + "update_priority": { + "description": "Update priority, passed to the application callback when an update is performed. Allows the application to make application-specific decisions.", + "type": "integer", + "format": "int64", + "api_fieldname": "update_priority", + "entity_fieldname": "update_priority" + }, + "key_table": { + "description": "The key table of pre-shared keys for devices.", + "type": "string", + "format": "uri", + "example": "http://example.com/key-table", + "api_fieldname": "key_table", + "entity_fieldname": "key_table_url" + }, + "id": { + "description": "The firmware manifest ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "12345678901234567890123456789012", + "api_fieldname": "id", + "entity_fieldname": "id" + }, + "name": { + "description": "The name of the manifest.", + "type": "string", + "format": "free text", + "maxLength": 128, + "example": "manifest_name", + "api_fieldname": "name", + "entity_fieldname": "name" + }, + "timestamp": { + "description": "The firmware manifest version as a timestamp.", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "timestamp", + "entity_fieldname": "timestamp" + }, + "parsed_raw_manifest": { + "description": "Raw manifest in JSON format, parsed from ASN.1 DER encoding.\nFields may change. Backwards compatibility is not guaranteed.\nRecommended for debugging only.\n", + "type": "object", + "api_fieldname": "parsed_raw_manifest", + "entity_fieldname": "parsed_raw_manifest" + }, + "_key": "properties" + } + ], + "_key": "200" }, { "description": "Bad request.", @@ -29288,7 +46943,7 @@ "_key": "400" }, { - "description": "Unauthorized.", + "description": "Not authenticated.", "schema": { "type": "object", "required": [ @@ -29361,7 +47016,7 @@ "_key": "401" }, { - "description": "Not found.", + "description": "Firmware manifest can't be found.", "schema": { "type": "object", "required": [ @@ -29434,13 +47089,13 @@ "_key": "404" } ], - "path": "/v3/device-groups/{device-group-id}/devices/add/", - "summary": "Add a device to a group.", - "return_type": "void", + "path": "/v3/firmware-manifests/{manifest_id}", + "summary": "Get a manifest", + "return_type": "firmware_manifest", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "firmware_manifest" }, "x_filter": {}, "x_deprecation": null, @@ -29448,106 +47103,270 @@ "object", "etag", "type", - "filter" + "filter", + "created_at", + "updated_at", + "manifest_schema_version", + "datafile_size", + "delivered_payload_url", + "delivered_payload_size", + "delivered_payload_digest", + "delivered_payload_type", + "precursor_payload_digest", + "description", + "device_class", + "device_vendor", + "update_priority", + "name", + "timestamp", + "parsed_raw_manifest", + "datafile_url", + "key_table_url" + ], + "group_id": "Device_Update", + "parameter_map": { + "manifest_id": "id" + }, + "operation_id": "Firmware_Manifest_retrieve", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + } + ], + "fields": [ + { + "type": "string", + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "description": "The size of the firmware manifest in bytes.", + "type": "integer", + "format": "int64", + "api_fieldname": "datafile_size", + "readOnly": true, + "required": false, + "_key": "datafile_size" + }, + { + "description": "The URL of the ASN.1 DER-encoded firmware manifest binary.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/mymanifest.manifest", + "api_fieldname": "datafile", + "readOnly": true, + "required": false, + "_key": "datafile_url" + }, + { + "description": "Digest (SHA256, hex-encoded) of the payload to deliver to the device.", + "type": "string", + "format": "hex", + "example": "c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc", + "api_fieldname": "delivered_payload_digest", + "readOnly": true, + "required": false, + "_key": "delivered_payload_digest" + }, + { + "description": "The size in bytes of the payload to deliver to the device.", + "type": "integer", + "format": "int64", + "api_fieldname": "delivered_payload_size", + "readOnly": true, + "required": false, + "_key": "delivered_payload_size" + }, + { + "description": "Type of the payload to deliver to the device (full or delta image).", + "type": "string", + "enum": [ + "full", + "delta" + ], + "api_fieldname": "delivered_payload_type", + "readOnly": true, + "required": false, + "enum_reference": "firmware_manifest_delivered_payload_type_enum", + "_key": "delivered_payload_type" + }, + { + "description": "The URL of the payload to deliver to the device.", + "type": "string", + "format": "uri", + "example": "http://bucket.com/myimage.elf", + "api_fieldname": "delivered_payload_url", + "readOnly": true, + "required": false, + "_key": "delivered_payload_url" + }, + { + "description": "The description of the firmware manifest.", + "type": "string", + "format": "free text", + "maxLength": 2000, + "example": "", + "api_fieldname": "description", + "readOnly": false, + "required": false, + "_key": "description" + }, + { + "description": "The device class ID.", + "type": "string", + "format": "uuid", + "example": "42c4d8de-704d-546e-b9d3-1ce1eb316167", + "api_fieldname": "device_class", + "readOnly": true, + "required": false, + "_key": "device_class" + }, + { + "description": "The device vendor ID.", + "type": "string", + "format": "uuid", + "example": "5d645eae-c231-5a89-9764-2e655cd94fa8", + "api_fieldname": "device_vendor", + "readOnly": true, + "required": false, + "_key": "device_vendor" + }, + { + "description": "The firmware manifest ID.", + "type": "string", + "pattern": "[A-Fa-f0-9]{32}", + "example": "12345678901234567890123456789012", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "description": "The key table of pre-shared keys for devices.", + "type": "string", + "format": "uri", + "example": "http://example.com/key-table", + "api_fieldname": "key_table", + "readOnly": true, + "required": false, + "_key": "key_table_url" + }, + { + "description": "Version of the manifest schema (1 or 3).", + "type": "string", + "enum": [ + "1", + "3" ], - "group_id": "Devices", - "operation_id": "Group_members_add", - "parameter_map": { - "device_id": "id" - }, - "spec": { - "return_type": "void" - }, - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "add_to_group" + "api_fieldname": "manifest_schema_version", + "readOnly": true, + "required": false, + "enum_reference": "firmware_manifest_schema_version_enum", + "_key": "manifest_schema_version" }, { - "description": "Create a new device.", - "field_renames": [], - "fields": [ - { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "entity_fieldname": "auto_update", - "parameter_fieldname": "auto_update", - "in": "body", - "required": false, - "_key": "auto_update" - }, + "description": "The name of the manifest.", + "type": "string", + "format": "free text", + "maxLength": 128, + "example": "manifest_name", + "api_fieldname": "name", + "readOnly": false, + "required": true, + "_key": "name" + }, + { + "description": "Raw manifest in JSON format, parsed from ASN.1 DER encoding.\nFields may change. Backwards compatibility is not guaranteed.\nRecommended for debugging only.\n", + "type": "object", + "api_fieldname": "parsed_raw_manifest", + "readOnly": true, + "required": false, + "_key": "parsed_raw_manifest" + }, + { + "description": "Digest (SHA256, hex-encoded) of the currently installed payload.", + "type": "string", + "example": "54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f", + "api_fieldname": "precursor_payload_digest", + "readOnly": true, + "required": false, + "_key": "precursor_payload_digest" + }, + { + "description": "The firmware manifest version as a timestamp.", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "type": "string", + "api_fieldname": "timestamp", + "readOnly": true, + "required": false, + "_key": "timestamp" + }, + { + "description": "Update priority, passed to the application callback when an update is performed. Allows the application to make application-specific decisions.", + "type": "integer", + "format": "int64", + "api_fieldname": "update_priority", + "readOnly": true, + "required": false, + "_key": "update_priority" + }, + { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [ + { + "api_fieldname": "datafile", + "_key": "datafile_url" + }, + { + "api_fieldname": "key_table", + "_key": "key_table_url" + } + ], + "tags": [ + "Device update - firmware manifests" + ], + "group_id": "Device_Update", + "_key": "firmware_manifest" + }, + { + "swagger_models": [ + "CertificateGenerationReq", + "IdentityProviderCreationReq", + "IdentityProviderInfo", + "IdentityProviderList", + "IdentityProviderUpdateReq" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Create a new identity provider.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server.", - "api_fieldname": "bootstrap_expiration_date", - "entity_fieldname": "bootstrap_expiration_date", - "parameter_fieldname": "bootstrap_expiration_date", - "in": "body", - "required": false, - "_key": "bootstrap_expiration_date" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ { "type": "string", "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "entity_fieldname": "ca_id", - "parameter_fieldname": "ca_id", - "in": "body", - "required": false, - "_key": "ca_id" - }, - { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server.", - "api_fieldname": "connector_expiration_date", - "entity_fieldname": "connector_expiration_date", - "parameter_fieldname": "connector_expiration_date", - "in": "body", - "required": false, - "_key": "connector_expiration_date" - }, - { - "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "parameter_fieldname": "custom_attributes", - "in": "body", - "required": false, - "_key": "custom_attributes" - }, - { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "", - "api_fieldname": "deployment", - "entity_fieldname": "deployment", - "parameter_fieldname": "deployment", - "in": "body", - "required": false, - "_key": "deployment" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", + "description": "Description for the identity provider.", "api_fieldname": "description", "entity_fieldname": "description", "parameter_fieldname": "description", @@ -29556,572 +47375,947 @@ "_key": "description" }, { - "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "", - "api_fieldname": "device_class", - "entity_fieldname": "device_class", - "parameter_fieldname": "device_class", - "in": "body", - "required": false, - "_key": "device_class" - }, - { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0, - "api_fieldname": "device_execution_mode", - "entity_fieldname": "device_execution_mode", - "parameter_fieldname": "device_execution_mode", - "in": "body", - "required": false, - "_key": "device_execution_mode" - }, - { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", - "entity_fieldname": "device_key", - "parameter_fieldname": "device_key", - "in": "body", - "required": false, - "_key": "device_key" - }, - { - "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "parameter_fieldname": "endpoint_name", - "in": "body", - "required": false, - "_key": "endpoint_name" - }, - { - "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", - "entity_fieldname": "endpoint_type", - "parameter_fieldname": "endpoint_type", - "in": "body", - "required": false, - "_key": "endpoint_type" - }, - { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "entity_fieldname": "host_gateway", - "parameter_fieldname": "host_gateway", - "in": "body", - "required": false, - "_key": "host_gateway" - }, - { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", - "api_fieldname": "issuer_fingerprint", - "entity_fieldname": "issuer_fingerprint", - "parameter_fieldname": "issuer_fingerprint", - "in": "body", + "in": "query", + "name": "discovery", + "description": "Indicates that the OpenID Connect endpoints and keys should be set using the OpenID Connect Discovery mechanism. The following parameters are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint * revocation_endpoint * jwks_uri * keys", + "type": "boolean", + "allowEmptyValue": true, + "entity_fieldname": "discovery", + "api_fieldname": "discovery", + "external_param": true, + "parameter_fieldname": "discovery", "required": false, - "_key": "issuer_fingerprint" + "_key": "discovery" }, { "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "", - "api_fieldname": "manifest", - "entity_fieldname": "manifest", - "parameter_fieldname": "manifest", - "in": "body", - "required": false, - "_key": "manifest" - }, - { + "description": "Identity provider type.", "enum": [ - "connector", - "direct" + "NATIVE", + "MBED", + "SAML2", + "OIDC" ], - "type": "string", - "description": "The ID of the channel used to communicate with the device.", - "api_fieldname": "mechanism", - "entity_fieldname": "mechanism", - "parameter_fieldname": "mechanism", - "in": "body", - "required": false, - "enum_reference": "device_mechanism_enum", - "_key": "mechanism" - }, - { - "type": "string", - "description": "The address of the connector to use.", - "example": "", - "api_fieldname": "mechanism_url", - "entity_fieldname": "mechanism_url", - "parameter_fieldname": "mechanism_url", + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "parameter_fieldname": "type", "in": "body", - "required": false, - "_key": "mechanism_url" + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "identity_provider_type" }, { "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", + "maxLength": 100, + "description": "Name of the identity provider.", "api_fieldname": "name", "entity_fieldname": "name", "parameter_fieldname": "name", "in": "body", - "required": false, + "required": true, "_key": "name" }, { - "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "serial_number", - "entity_fieldname": "serial_number", - "parameter_fieldname": "serial_number", - "in": "body", + "type": "object", "required": false, - "_key": "serial_number" + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" }, { - "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } ], - "type": "string", - "description": "The current state of the device.", - "api_fieldname": "state", - "entity_fieldname": "state", - "parameter_fieldname": "state", + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, - "enum_reference": "device_state_enum", - "_key": "state" + "_key": "saml2_attributes" }, { "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "vendor_id", - "entity_fieldname": "vendor_id", - "parameter_fieldname": "vendor_id", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", "in": "body", "required": false, - "_key": "vendor_id" + "enum_reference": "identity_provider_status_enum", + "_key": "status" } ], "method": "post", "mode": "create", "responses": [ { - "description": "Device created.", - "schema": [ + "description": "New entity created.", + "headers": [ { - "group": "Devices", - "entity": "device", - "_key": "foreign_key" + "type": "string", + "description": "/v3/identity-providers/{identity_provider_id}", + "_key": "Content-Location" }, { - "device_execution_mode": { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0, - "api_fieldname": "device_execution_mode", - "entity_fieldname": "device_execution_mode" - }, - "groups": { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { - "type": "string", - "example": "00000000000000000000000000000000" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups" - }, - "issuer_fingerprint": { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", - "api_fieldname": "issuer_fingerprint", - "entity_fieldname": "issuer_fingerprint" - }, - "operator_suspended": { - "type": "boolean", - "description": "Is the device suspended by the operator?", - "api_fieldname": "operator_suspended", - "entity_fieldname": "operator_suspended" - }, - "last_operator_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_operator_suspended_category", - "entity_fieldname": "last_operator_suspended_category" - }, - "last_operator_suspended_description": { + "type": "string", + "description": "/v3/identity-providers/{identity_provider_id}", + "_key": "Location" + } + ], + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance.", - "api_fieldname": "last_operator_suspended_description", - "entity_fieldname": "last_operator_suspended_description" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, - "last_operator_suspended_updated_at": { + { "type": "string", "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_operator_suspended_updated_at", - "entity_fieldname": "last_operator_suspended_updated_at" - }, - "system_suspended": { - "type": "boolean", - "description": "Is the device suspended by the system?", - "api_fieldname": "system_suspended", - "entity_fieldname": "system_suspended" - }, - "last_system_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_system_suspended_category", - "entity_fieldname": "last_system_suspended_category" - }, - "last_system_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system.", - "api_fieldname": "last_system_suspended_description", - "entity_fieldname": "last_system_suspended_description" + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, - "last_system_suspended_updated_at": { + { "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_system_suspended_updated_at", - "entity_fieldname": "last_system_suspended_updated_at" + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, - "lifecycle_status": { + { "type": "string", - "enum": [ - "enabled", - "blocked" - ], - "description": "The lifecycle status of the device.", - "example": "enabled", - "api_fieldname": "lifecycle_status", - "entity_fieldname": "lifecycle_status" + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, - "account_id": { + { "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id" + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, - "auto_update": { + { "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "entity_fieldname": "auto_update" - }, - "bootstrap_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server.", - "api_fieldname": "bootstrap_expiration_date", - "entity_fieldname": "bootstrap_expiration_date" - }, - "bootstrapped_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the device's most recent bootstrap process.", - "api_fieldname": "bootstrapped_timestamp", - "entity_fieldname": "bootstrapped_timestamp" - }, - "ca_id": { - "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "entity_fieldname": "ca_id" + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, - "connector_expiration_date": { - "format": "date", + { "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server.", - "api_fieldname": "connector_expiration_date", - "entity_fieldname": "connector_expiration_date" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, - "created_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of when the device was created in the device directory.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, - "custom_attributes": { + { "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" }, - "deployed_state": { - "enum": [ - "development", - "production" + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment.", - "api_fieldname": "deployed_state", - "entity_fieldname": "deployed_state" - }, - "deployment": { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "", - "api_fieldname": "deployment", - "entity_fieldname": "deployment" + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" }, - "description": { + { "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", - "api_fieldname": "description", - "entity_fieldname": "description" + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" }, - "device_class": { + { "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "", - "api_fieldname": "device_class", - "entity_fieldname": "device_class" + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" }, - "id": { + { "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } + }, + "_key": "201" + }, + { + "description": "Error in input data, for example, name is too long.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "device_key": { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", - "entity_fieldname": "device_key" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "endpoint_name": { + { "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "endpoint_type": { + { "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", - "entity_fieldname": "endpoint_type" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "etag": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The entity instance signature.", - "api_fieldname": "etag", - "entity_fieldname": "etag" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "firmware_checksum": { + { "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "firmware_checksum", - "entity_fieldname": "firmware_checksum" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "host_gateway": { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "entity_fieldname": "host_gateway" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "manifest": { + { "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "", - "api_fieldname": "manifest", - "entity_fieldname": "manifest" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "manifest_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of the current manifest version.", - "api_fieldname": "manifest_timestamp", - "entity_fieldname": "manifest_timestamp" - }, - "mechanism": { + "description": "Entity name, always `error`.", "enum": [ - "connector", - "direct" + "error" ], + "_key": "object" + }, + { "type": "string", - "description": "The ID of the channel used to communicate with the device.", - "api_fieldname": "mechanism", - "entity_fieldname": "mechanism" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "mechanism_url": { + { "type": "string", - "description": "The address of the connector to use.", - "example": "", - "api_fieldname": "mechanism_url", - "entity_fieldname": "mechanism_url" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "name": { - "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "name", - "entity_fieldname": "name" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "object": { + { "type": "string", - "description": "The API resource entity.", - "example": "device", - "api_fieldname": "object", - "entity_fieldname": "object" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "serial_number": { + { "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "serial_number", - "entity_fieldname": "serial_number" - }, - "state": { + "description": "Entity name, always `error`.", "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" + "error" ], - "type": "string", - "description": "The current state of the device.", - "api_fieldname": "state", - "entity_fieldname": "state" - }, - "updated_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The time the object was updated.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" + "_key": "object" }, - "vendor_id": { + { "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "vendor_id", - "entity_fieldname": "vendor_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "enrolment_list_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The claim date/time.", - "api_fieldname": "enrolment_list_timestamp", - "entity_fieldname": "enrolment_list_timestamp" - }, - "_key": "properties" - } - ], - "_key": "201" - }, - { - "description": "Validation error: The data used to create the device did not validate.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" - }, - { - "description": "Account limit reached. Could not create device.", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "403" - }, - { - "description": "Unique-constrained fields are used by other resources.", - "_key": "409" } ], - "path": "/v3/devices/", - "summary": "Create a device.", - "return_type": "device", + "path": "/v3/identity-providers", + "summary": "Create a new identity provider.", + "return_type": "identity_provider", "return_info": { "self": true, "custom": false, - "type": "device" + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -30130,47 +48324,41 @@ "etag", "type", "filter", - "groups", - "operator_suspended", - "last_operator_suspended_category", - "last_operator_suspended_description", - "last_operator_suspended_updated_at", - "system_suspended", - "last_system_suspended_category", - "last_system_suspended_description", - "last_system_suspended_updated_at", - "lifecycle_status", - "account_id", - "bootstrapped_timestamp", - "created_at", - "deployed_state", "id", - "firmware_checksum", - "manifest_timestamp", + "created_at", "updated_at", - "enrolment_list_timestamp" + "account_id", + "is_default" ], - "group_id": "Devices", - "operation_id": "Device_create", + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "createIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "create" }, { - "description": "Delete device. Only available for devices with a developer certificate. Attempting to delete a device with a production certicate returns a 400 response.", - "field_renames": [], + "description": "Delete an identity provider by ID.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ + { + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], "fields": [ { - "description": "The ID of the device.", + "name": "identity_provider_id", "in": "path", - "name": "id", + "description": "The ID of the identity provider to delete.", "required": true, "type": "string", "entity_fieldname": "id", - "api_fieldname": "id", + "api_fieldname": "identity_provider_id", "external_param": false, - "parameter_fieldname": "id", + "parameter_fieldname": "identity_provider_id", "_key": "id" } ], @@ -30178,29 +48366,236 @@ "mode": "delete", "responses": [ { - "description": "Device deleted.", + "description": "Deleted successfully.", "_key": "204" }, { - "description": "Bad request.", - "_key": "400" + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" }, { - "description": "Not authenticated.", - "_key": "401" + "description": "Forbidden, or identity provider is in use.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" }, { - "description": "Unable to delete device because it can't be found.", + "description": "An identity provider not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" } ], - "path": "/v3/devices/{id}/", - "summary": "Delete a device.", - "return_type": "device", + "path": "/v3/identity-providers/{identity_provider_id}", + "summary": "Delete an identity provider by ID.", + "return_type": "identity_provider", "return_info": { "self": true, "custom": false, - "type": "device" + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -30210,1199 +48605,2128 @@ "type", "filter" ], - "group_id": "Devices", - "operation_id": "Device_destroy", + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "deleteIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "delete" }, { - "description": "List all devices.\n\n**Example:**\nFollowing example filters devices according to state field and returns only devices in 'registered' state:\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The ID of the item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, + "description": "Delete a service provider certificate.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ { - "type": "integer", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ { "type": "string", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" } ], - "method": "get", - "mode": "list", + "method": "post", + "mode": "delete_service_provider_certificate", "responses": [ { - "description": "Request successful.", + "description": "Successful operation.", + "headers": [ + { + "type": "string", + "description": "/v3/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], "schema": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], "properties": [ { "type": "string", - "description": "An offset token for current page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { - "items": [ + "type": "object", + "required": [ + "issuer" + ], + "properties": [ { - "group": "Devices", - "entity": "device", - "_key": "foreign_key" + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" }, { - "device_execution_mode": { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0 - }, - "groups": { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { "type": "string", - "example": "00000000000000000000000000000000" - } - }, - "issuer_fingerprint": { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322" - }, - "operator_suspended": { - "type": "boolean", - "description": "Is the device suspended by the operator?" - }, - "last_operator_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance" - }, - "last_operator_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance." - }, - "last_operator_suspended_updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z" - }, - "system_suspended": { - "type": "boolean", - "description": "Is the device suspended by the system?" - }, - "last_system_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance" - }, - "last_system_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system." - }, - "last_system_suspended_updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z" - }, - "lifecycle_status": { - "type": "string", - "enum": [ - "enabled", - "blocked" - ], - "description": "The lifecycle status of the device.", - "example": "enabled" - }, - "account_id": { - "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000" - }, - "auto_update": { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update." - }, - "bootstrap_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server." - }, - "bootstrapped_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the device's most recent bootstrap process." - }, - "ca_id": { - "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000" - }, - "connector_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server." - }, - "created_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of when the device was created in the device directory." - }, - "custom_attributes": { - "type": "object", - "maxProperties": 5, - "additionalProperties": { + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" }, - "deployed_state": { - "enum": [ - "development", - "production" - ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment." - }, - "deployment": { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "" - }, - "description": { - "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description" - }, - "device_class": { - "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "" - }, - "id": { - "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000" - }, - "device_key": { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" - }, - "endpoint_name": { - "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true - }, - "endpoint_type": { - "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "" - }, - "etag": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The entity instance signature." - }, - "firmware_checksum": { - "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000" - }, - "host_gateway": { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "" - }, - "manifest": { - "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "" - }, - "manifest_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the current manifest version." - }, - "mechanism": { - "enum": [ - "connector", - "direct" + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } ], - "type": "string", - "description": "The ID of the channel used to communicate with the device." - }, - "mechanism_url": { - "type": "string", - "description": "The address of the connector to use.", - "example": "" - }, - "name": { - "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "object": { - "type": "string", - "description": "The API resource entity.", - "example": "device" + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } }, - "serial_number": { - "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000" + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" }, - "state": { - "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" - ], + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" + }, + { + "type": "string", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { "type": "string", - "description": "The current state of the device." + "description": "Message describing the error condition.", + "_key": "message" }, - "updated_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The time the object was updated." - }, - "vendor_id": { + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000" + "description": "Message describing the error condition.", + "_key": "message" }, - "enrolment_list_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The claim date/time." - }, - "_key": "properties" - } + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" ], - "type": "array", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "_key": "object" }, { - "type": "boolean", - "description": "Are there more results available.", - "example": false, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An identity provider not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "The type of this API object is a \"list\".", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "format": "integer", - "type": "integer", - "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device" - } + ] }, - "_key": "200" - }, - { - "description": "Bad request.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" - }, - { - "description": "Unable to find page.", "_key": "404" } ], - "path": "/v3/devices/", - "summary": "List all devices.", - "return_type": "paginated_response(device)", + "path": "/v3/identity-providers/{identity_provider_id}/delete-sp-certificate", + "summary": "Delete the service provider certificate.", + "return_type": "identity_provider", "return_info": { "self": true, "custom": false, - "type": "device" - }, - "x_filter": { - "lifecycle_status": [ - "eq", - "neq", - "in", - "nin" - ], - "operator_suspended": [ - "eq", - "neq" - ], - "last_operator_suspended_category": [ - "eq", - "neq", - "in", - "nin" - ], - "last_operator_suspended_updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "system_suspended": [ - "eq", - "neq" - ], - "last_system_suspended_category": [ - "eq", - "neq", - "in", - "nin" - ], - "last_system_suspended_updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "account_id": [ - "eq", - "neq", - "in", - "nin" - ], - "auto_update": [ - "eq", - "neq" - ], - "bootstrap_expiration_date": [ - "in", - "nin", - "lte", - "gte" - ], - "bootstrapped_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "ca_id": [ - "eq", - "neq", - "in", - "nin" - ], - "connector_expiration_date": [ - "in", - "nin", - "lte", - "gte" - ], - "created_at": [ - "in", - "nin", - "lte", - "gte" - ], - "deployed_state": [ - "eq", - "neq", - "in", - "nin" - ], - "deployment": [ - "eq", - "neq", - "in", - "nin" - ], - "description": [ - "eq", - "neq", - "in", - "nin" - ], - "device_class": [ - "eq", - "neq", - "in", - "nin" - ], - "device_execution_mode": [ - "eq", - "neq", - "in", - "nin" - ], - "device_key": [ - "eq", - "neq", - "in", - "nin" - ], - "endpoint_name": [ - "eq", - "neq", - "in", - "nin" - ], - "endpoint_type": [ - "eq", - "neq", - "in", - "nin" - ], - "enrolment_list_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "firmware_checksum": [ - "eq", - "neq", - "in", - "nin" - ], - "host_gateway": [ - "eq", - "neq", - "in", - "nin" - ], - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "manifest": [ - "eq", - "neq", - "in", - "nin" - ], - "manifest_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "mechanism": [ - "eq", - "neq", - "in", - "nin" - ], - "mechanism_url": [ - "eq", - "neq", - "in", - "nin" - ], - "name": [ - "eq", - "neq", - "in", - "nin" - ], - "serial_number": [ - "eq", - "neq", - "in", - "nin" - ], - "state": [ - "eq", - "neq", - "in", - "nin" - ], - "updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "vendor_id": [ - "eq", - "neq", - "in", - "nin" - ] + "type": "identity_provider" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "data", - "has_more", - "total_count", - "lifecycle_status__eq", - "lifecycle_status__neq", - "lifecycle_status__in", - "lifecycle_status__nin", - "operator_suspended__eq", - "operator_suspended__neq", - "last_operator_suspended_category__eq", - "last_operator_suspended_category__neq", - "last_operator_suspended_category__in", - "last_operator_suspended_category__nin", - "last_operator_suspended_updated_at__in", - "last_operator_suspended_updated_at__nin", - "last_operator_suspended_updated_at__lte", - "last_operator_suspended_updated_at__gte", - "system_suspended__eq", - "system_suspended__neq", - "last_system_suspended_category__eq", - "last_system_suspended_category__neq", - "last_system_suspended_category__in", - "last_system_suspended_category__nin", - "last_system_suspended_updated_at__in", - "last_system_suspended_updated_at__nin", - "last_system_suspended_updated_at__lte", - "last_system_suspended_updated_at__gte", - "account_id__eq", - "account_id__neq", - "account_id__in", - "account_id__nin", - "auto_update__eq", - "auto_update__neq", - "bootstrap_expiration_date__in", - "bootstrap_expiration_date__nin", - "bootstrap_expiration_date__lte", - "bootstrap_expiration_date__gte", - "bootstrapped_timestamp__in", - "bootstrapped_timestamp__nin", - "bootstrapped_timestamp__lte", - "bootstrapped_timestamp__gte", - "ca_id__eq", - "ca_id__neq", - "ca_id__in", - "ca_id__nin", - "connector_expiration_date__in", - "connector_expiration_date__nin", - "connector_expiration_date__lte", - "connector_expiration_date__gte", - "created_at__in", - "created_at__nin", - "created_at__lte", - "created_at__gte", - "deployed_state__eq", - "deployed_state__neq", - "deployed_state__in", - "deployed_state__nin", - "deployment__eq", - "deployment__neq", - "deployment__in", - "deployment__nin", - "description__eq", - "description__neq", - "description__in", - "description__nin", - "device_class__eq", - "device_class__neq", - "device_class__in", - "device_class__nin", - "device_execution_mode__eq", - "device_execution_mode__neq", - "device_execution_mode__in", - "device_execution_mode__nin", - "device_key__eq", - "device_key__neq", - "device_key__in", - "device_key__nin", - "endpoint_name__eq", - "endpoint_name__neq", - "endpoint_name__in", - "endpoint_name__nin", - "endpoint_type__eq", - "endpoint_type__neq", - "endpoint_type__in", - "endpoint_type__nin", - "enrolment_list_timestamp__in", - "enrolment_list_timestamp__nin", - "enrolment_list_timestamp__lte", - "enrolment_list_timestamp__gte", - "firmware_checksum__eq", - "firmware_checksum__neq", - "firmware_checksum__in", - "firmware_checksum__nin", - "host_gateway__eq", - "host_gateway__neq", - "host_gateway__in", - "host_gateway__nin", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "manifest__eq", - "manifest__neq", - "manifest__in", - "manifest__nin", - "manifest_timestamp__in", - "manifest_timestamp__nin", - "manifest_timestamp__lte", - "manifest_timestamp__gte", - "mechanism__eq", - "mechanism__neq", - "mechanism__in", - "mechanism__nin", - "mechanism_url__eq", - "mechanism_url__neq", - "mechanism_url__in", - "mechanism_url__nin", - "name__eq", - "name__neq", - "name__in", - "name__nin", - "serial_number__eq", - "serial_number__neq", - "serial_number__in", - "serial_number__nin", - "state__eq", - "state__neq", - "state__in", - "state__nin", - "updated_at__in", - "updated_at__nin", - "updated_at__lte", - "updated_at__gte", - "vendor_id__eq", - "vendor_id__neq", - "vendor_id__in", - "vendor_id__nin" + "created_at", + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "account_id", + "is_default", + "identity_provider_type" ], - "foreign_key_priority": "self", - "group_id": "Devices", - "operation_id": "Device_list", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device" + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" }, + "operation_id": "deleteSpCertificate", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "delete_service_provider_certificate" }, { - "description": "Retrieve information about a specific device.\n\n**Example:**\nFollowing example must be updated with the device's ID to the URL. The id is from of \"01667c6e992c00000000000100100370\"\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], + "description": "Generate a new service provider certificate.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ + { + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], "fields": [ { "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", + "description": "The algorithm and its key size used for generating the certificate. Defaults to RSA2048.", + "enum": [ + "RSA2048", + "RSA3072", + "EC224", + "EC256", + "EC384", + "EC521", + "ECDSA224", + "ECDSA256", + "ECDSA384", + "ECDSA521" + ], + "name": "algorithm", + "in": "body", + "schema_param": true, + "entity_fieldname": "algorithm", + "api_fieldname": "algorithm", + "external_param": true, + "parameter_fieldname": "algorithm", + "required": false, + "enum_reference": "identity_provider_algorithm_enum", + "_key": "algorithm" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "_key": "id" + }, + { + "type": "integer", + "format": "int32", + "description": "Validity for the certificate in days.", + "name": "validity", + "in": "body", + "schema_param": true, + "entity_fieldname": "validity", + "api_fieldname": "validity", + "external_param": true, + "parameter_fieldname": "validity", + "required": false, + "_key": "validity" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "generate_service_provider_certificate", "responses": [ { - "description": "Retrieved result successfully.", - "schema": [ - { - "group": "Devices", - "entity": "device", - "_key": "foreign_key" - }, + "description": "Successful operation.", + "headers": [ { - "device_execution_mode": { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0, - "api_fieldname": "device_execution_mode", - "entity_fieldname": "device_execution_mode" + "type": "string", + "description": "/v3/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, - "groups": { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { - "type": "string", - "example": "00000000000000000000000000000000" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups" + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, - "issuer_fingerprint": { + { "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", - "api_fieldname": "issuer_fingerprint", - "entity_fieldname": "issuer_fingerprint" + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, - "operator_suspended": { - "type": "boolean", - "description": "Is the device suspended by the operator?", - "api_fieldname": "operator_suspended", - "entity_fieldname": "operator_suspended" + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, - "last_operator_suspended_category": { + { "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_operator_suspended_category", - "entity_fieldname": "last_operator_suspended_category" + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, - "last_operator_suspended_description": { + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" + }, + { "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance.", - "api_fieldname": "last_operator_suspended_description", - "entity_fieldname": "last_operator_suspended_description" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, - "last_operator_suspended_updated_at": { + { "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_operator_suspended_updated_at", - "entity_fieldname": "last_operator_suspended_updated_at" + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, - "system_suspended": { - "type": "boolean", - "description": "Is the device suspended by the system?", - "api_fieldname": "system_suspended", - "entity_fieldname": "system_suspended" + { + "type": "object", + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" }, - "last_system_suspended_category": { + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" + }, + { "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_system_suspended_category", - "entity_fieldname": "last_system_suspended_category" + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" }, - "last_system_suspended_description": { + { "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system.", - "api_fieldname": "last_system_suspended_description", - "entity_fieldname": "last_system_suspended_description" + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" }, - "last_system_suspended_updated_at": { + { "type": "string", "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_system_suspended_updated_at", - "entity_fieldname": "last_system_suspended_updated_at" + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } + }, + "_key": "200" + }, + { + "description": "Error in input data, for example, invalid certificate validity value.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "lifecycle_status": { + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "enabled", - "blocked" + "error" ], - "description": "The lifecycle status of the device.", - "example": "enabled", - "api_fieldname": "lifecycle_status", - "entity_fieldname": "lifecycle_status" + "_key": "object" }, - "account_id": { + { "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "auto_update": { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "entity_fieldname": "auto_update" + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "bootstrap_expiration_date": { - "format": "date", + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server.", - "api_fieldname": "bootstrap_expiration_date", - "entity_fieldname": "bootstrap_expiration_date" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "bootstrapped_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of the device's most recent bootstrap process.", - "api_fieldname": "bootstrapped_timestamp", - "entity_fieldname": "bootstrapped_timestamp" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "ca_id": { + { "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "entity_fieldname": "ca_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "connector_expiration_date": { - "format": "date", + { "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server.", - "api_fieldname": "connector_expiration_date", - "entity_fieldname": "connector_expiration_date" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "created_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of when the device was created in the device directory.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" - }, - "custom_attributes": { - "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "deployed_state": { + { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "development", - "production" + "error" ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment.", - "api_fieldname": "deployed_state", - "entity_fieldname": "deployed_state" + "_key": "object" }, - "deployment": { + { "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "", - "api_fieldname": "deployment", - "entity_fieldname": "deployment" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "description": { + { "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", - "api_fieldname": "description", - "entity_fieldname": "description" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An identity provider not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "device_class": { - "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "", - "api_fieldname": "device_class", - "entity_fieldname": "device_class" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "id": { + { "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "device_key": { + { "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", - "entity_fieldname": "device_key" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "endpoint_name": { + { "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "endpoint_type": { + { "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", - "entity_fieldname": "endpoint_type" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/identity-providers/{identity_provider_id}/generate-sp-certificate", + "summary": "Generate a new service provider certificate.", + "return_type": "identity_provider", + "return_info": { + "self": true, + "custom": false, + "type": "identity_provider" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "account_id", + "is_default", + "identity_provider_type" + ], + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "generateSpCertificate", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "generate_service_provider_certificate" + }, + { + "description": "Retrieve an array of identity providers.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ + { + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "identity_provider_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, - "etag": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "_key": "object" + }, + { + "type": "object", + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "_key": "saml2_attributes" + }, + { + "type": "string", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "_key": "type" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return , or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { "type": "string", - "description": "The entity instance signature.", - "api_fieldname": "etag", - "entity_fieldname": "etag" + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, - "firmware_checksum": { + { "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "firmware_checksum", - "entity_fieldname": "firmware_checksum" + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, - "host_gateway": { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "entity_fieldname": "host_gateway" + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "manifest": { - "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "", - "api_fieldname": "manifest", - "entity_fieldname": "manifest" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "manifest_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of the current manifest version.", - "api_fieldname": "manifest_timestamp", - "entity_fieldname": "manifest_timestamp" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "mechanism": { + { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "connector", - "direct" + "error" ], - "type": "string", - "description": "The ID of the channel used to communicate with the device.", - "api_fieldname": "mechanism", - "entity_fieldname": "mechanism" + "_key": "object" }, - "mechanism_url": { + { "type": "string", - "description": "The address of the connector to use.", - "example": "", - "api_fieldname": "mechanism_url", - "entity_fieldname": "mechanism_url" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "name": { + { "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "name", - "entity_fieldname": "name" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "object": { - "type": "string", - "description": "The API resource entity.", - "example": "device", - "api_fieldname": "object", - "entity_fieldname": "object" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "serial_number": { + { "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "serial_number", - "entity_fieldname": "serial_number" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "state": { + { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" + "error" ], - "type": "string", - "description": "The current state of the device.", - "api_fieldname": "state", - "entity_fieldname": "state" - }, - "updated_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The time the object was updated.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" + "_key": "object" }, - "vendor_id": { + { "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "vendor_id", - "entity_fieldname": "vendor_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "enrolment_list_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The claim date/time.", - "api_fieldname": "enrolment_list_timestamp", - "entity_fieldname": "enrolment_list_timestamp" - }, - "_key": "properties" - } - ], - "_key": "200" - }, - { - "description": "Bad request.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" - }, - { - "description": "Unable to find device.", - "_key": "404" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" } ], - "path": "/v3/devices/{id}/", - "summary": "Get a device.", - "return_type": "device", + "path": "/v3/identity-providers", + "summary": "Get all identity providers.", + "return_type": "paginated_response(identity_provider)", "return_info": { "self": true, "custom": false, - "type": "device" + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -31411,92 +50735,433 @@ "etag", "type", "filter", - "device_execution_mode", - "groups", - "issuer_fingerprint", - "operator_suspended", - "last_operator_suspended_category", - "last_operator_suspended_description", - "last_operator_suspended_updated_at", - "system_suspended", - "last_system_suspended_category", - "last_system_suspended_description", - "last_system_suspended_updated_at", - "lifecycle_status", - "account_id", - "auto_update", - "bootstrap_expiration_date", - "bootstrapped_timestamp", - "ca_id", - "connector_expiration_date", - "created_at", - "custom_attributes", - "deployed_state", - "deployment", - "description", - "device_class", - "device_key", - "endpoint_name", - "endpoint_type", - "firmware_checksum", - "host_gateway", - "manifest", - "manifest_timestamp", - "mechanism", - "mechanism_url", - "name", - "serial_number", - "state", - "updated_at", - "vendor_id", - "enrolment_list_timestamp" + "total_count", + "has_more", + "data" ], - "group_id": "Devices", - "operation_id": "Device_retrieve", - "pagination": false, + "foreign_key_priority": "self", + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "getAllIdentityProviders", + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider" + }, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "list" }, { - "description": "Remove one device from a group.", - "field_renames": [], - "fields": [ + "description": "Retrieve an identity provider.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ { - "in": "path", - "description": "The ID of the group.", - "name": "device-group-id", - "required": true, - "type": "string", - "entity_fieldname": "device-group-id", - "api_fieldname": "device-group-id", - "external_param": true, - "parameter_fieldname": "device-group-id", - "_key": "device-group-id" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ { "type": "string", - "example": "00000000000000000000000000000000", - "name": "device_id", - "in": "body", - "schema_param": true, + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", "entity_fieldname": "id", - "api_fieldname": "device_id", - "external_param": false, - "parameter_fieldname": "device_id", + "parameter_fieldname": "identity_provider_id", + "in": "path", "required": true, "_key": "id" } ], - "method": "post", - "mode": "remove_from_group", + "method": "get", + "mode": "read", "responses": [ { - "description": "Success - device removed.", - "_key": "204" + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" + }, + { + "type": "string", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" + }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } + }, + "_key": "200" }, { - "description": "Bad request.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -31566,10 +51231,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Unauthorized.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -31639,10 +51304,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not found.", + "description": "An identity provider not found.", "schema": { "type": "object", "required": [ @@ -31715,13 +51380,13 @@ "_key": "404" } ], - "path": "/v3/device-groups/{device-group-id}/devices/remove/", - "summary": "Remove a device from a group.", - "return_type": "void", + "path": "/v3/identity-providers/{identity_provider_id}", + "summary": "Get identity provider.", + "return_type": "identity_provider", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -31729,299 +51394,447 @@ "object", "etag", "type", - "filter" + "filter", + "created_at", + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "account_id", + "is_default", + "identity_provider_type" ], - "group_id": "Devices", - "operation_id": "Group_members_remove", + "group_id": "Accounts", "parameter_map": { - "device_id": "id" - }, - "spec": { - "return_type": "void" + "identity_provider_id": "id" }, + "operation_id": "getIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "remove_from_group" + "_key": "read" }, { - "description": "Request a certificate renewal.\n\n**Example:**\n\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew \\\n-H 'Authorization: Bearer ' \\\n-H 'content-length: 0'\n```", - "field_renames": [], - "fields": [ + "description": "Refreshes an OIDC IdP's signing keys.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ { - "type": "string", - "maxLength": 50, - "description": "The certificate name.", - "example": "customer.dlms", - "api_fieldname": "certificate-name", - "entity_fieldname": "certificate_name", - "in": "path", - "name": "certificate-name", - "required": true, - "pattern": "[\\w\\-]{1,10}\\.[\\w\\-.]{1,10}", - "external_param": true, - "parameter_fieldname": "certificate-name", - "_key": "certificate_name" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ { "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "device-id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "_key": "id" } ], "method": "post", - "mode": "renew_certificate", + "mode": "refresh_tokens", "responses": [ { - "description": "Created.", + "description": "Successful operation.", + "headers": [ + { + "type": "string", + "description": "/v3/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], "schema": { "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], "properties": [ { "type": "string", - "maxLength": 50, - "description": "The certificate name.", - "example": "customer.dlms", - "api_fieldname": "certificate_name", - "entity_fieldname": "certificate_name", - "_key": "certificate_name" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "string", "format": "date-time", + "example": "2018-02-13T09:35:20Z", "description": "Creation UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { "type": "string", - "description": "The device ID.", - "example": "01625daa23230a580a0100bd00000000", - "api_fieldname": "device_id", - "entity_fieldname": "device_id", - "_key": "device_id" - }, - { - "type": "string", - "enum": [ - "success", - "failure" - ], - "description": "The result of certificate enrollment request.", - "example": "success", - "api_fieldname": "enroll_result", - "entity_fieldname": "enroll_result", - "_key": "enroll_result" - }, - { - "type": "string", - "description": "Additional information in case of failure.", - "example": "The device is currently processing too many certificate renewals.", - "api_fieldname": "enroll_result_detail", - "entity_fieldname": "enroll_result_detail", - "_key": "enroll_result_detail" - }, - { - "type": "string", - "description": "The status of certificate enrollment request.", - "enum": [ - "new", - "completed" - ], - "api_fieldname": "enroll_status", - "entity_fieldname": "enroll_status", - "_key": "enroll_status" + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, { "type": "string", - "description": "Entity instance signature.", "example": "1", + "description": "API resource entity version.", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { "type": "string", - "description": "The certificate enrollment ID.", - "example": "01612df56f3b0a580a010fc700000000", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, { - "type": "string", - "enum": [ - "certificate-enrollment" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "description": "Update UTC time RFC3339.", - "example": "2017-01-01T00:00:00Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "required": [ - "created_at", - "etag", - "id", - "device_id", - "certificate_name" - ], - "foreign_key": { - "group": "Security", - "entity": "certificate_enrollment" - } - }, - "_key": "201" - }, - { - "description": "Validation error: There is no certificate issuer configured for this certificate.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" - }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] - }, - "_key": "fields" + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, { "type": "string", - "description": "Error message.", - "_key": "message" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type.", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "You are not authorized to perform the action.", - "schema": { - "type": "object", - "required": [ - "code", - "fields", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "Error code. Correlates with response status code.", - "_key": "code" - }, - { - "type": "array", - "description": "A list of request fields that failed validation.", - "items": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Field name.", - "_key": "field" + "type": "object", + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" }, - { - "type": "string", - "description": "Error message related to the field.", - "_key": "message" - } - ] + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "_key": "fields" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" }, { - "type": "string", - "description": "Error message.", - "_key": "message" + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" }, { "type": "string", - "description": "Entity name: `error`.", - "_key": "object" + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" }, { "type": "string", - "description": "Request ID from JWT.", - "_key": "request_id" + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" }, { "type": "string", - "description": "Error type.", - "_key": "type" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Forbidden.", + "description": "Not an OIDC IdP or JWKS URI is unspecified.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -32031,24 +51844,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -32056,35 +51874,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "403" + "_key": "400" }, { - "description": "The device ID or certificate name is not found.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -32094,24 +51917,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -32119,35 +51947,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "404" + "_key": "401" }, { - "description": "Conflict. A renewal request for this certificate is in progress.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -32157,24 +51990,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -32182,35 +52020,40 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "409" + "_key": "403" }, { - "description": "Either:\n- Operation not supported for this device.\n- The device is not connected.", + "description": "An identity provider not found.", "schema": { "type": "object", "required": [ "code", - "fields", "message", "object", "request_id", @@ -32220,24 +52063,29 @@ { "type": "integer", "format": "int32", - "description": "Error code. Correlates with response status code.", + "description": "HTTP response code", + "example": 400, "_key": "code" }, { "type": "array", - "description": "A list of request fields that failed validation.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Field name.", - "_key": "field" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "description": "Error message related to the field.", - "_key": "message" + "description": "Name of the field which caused the error.", + "_key": "name" } ] }, @@ -32245,36 +52093,42 @@ }, { "type": "string", - "description": "Error message.", + "description": "A human readable informative explanation", + "example": "Validation error", "_key": "message" }, { "type": "string", - "description": "Entity name: `error`.", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Request ID from JWT.", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", "_key": "request_id" }, { "type": "string", - "description": "Error type.", + "description": "Error type used to categorise the error.", + "example": "validation_error", "_key": "type" } ] }, - "_key": "423" + "_key": "404" } ], - "path": "/v3/devices/{device-id}/certificates/{certificate-name}/renew", - "summary": "Request certificate renewal.", - "return_type": "certificate_enrollment", + "path": "/v3/identity-providers/{identity_provider_id}/refresh-jwks", + "summary": "Refreshes the OIDC signing keys.", + "return_type": "identity_provider", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "certificate_enrollment" + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -32284,78 +52138,39 @@ "type", "filter", "created_at", - "device_id", - "enroll_status", - "enroll_result", - "enroll_result_detail", - "updated_at" + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "account_id", + "is_default", + "identity_provider_type" ], - "group_id": "Devices", - "operation_id": "RequestCertificateRenewal", - "unaggregated": true, + "group_id": "Accounts", "parameter_map": { - "device-id": "id", - "certificate-name": "certificate_name" - }, - "foreign_key": { - "entity": "certificate_enrollment", - "group": "Security" + "identity_provider_id": "id" }, + "operation_id": "refreshJwks", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "renew_certificate" + "_key": "refresh_tokens" }, { - "description": "Update a specific device.\n\n**Example:**\nFollowing example will update the specific devices description field to contain \"Testing description field\".\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"description\": \"Testing description field\"}'\n```", - "field_renames": [], - "fields": [ + "description": "Update an existing identity provider.\nNote: This endpoint is restricted to administrators.", + "field_renames": [ { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "entity_fieldname": "auto_update", - "parameter_fieldname": "auto_update", - "in": "body", - "required": false, - "_key": "auto_update" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "fields": [ { "type": "string", "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "entity_fieldname": "ca_id", - "parameter_fieldname": "ca_id", - "in": "body", - "required": false, - "_key": "ca_id" - }, - { - "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "parameter_fieldname": "custom_attributes", - "in": "body", - "required": false, - "_key": "custom_attributes" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", + "description": "Description for the identity provider.", "api_fieldname": "description", "entity_fieldname": "description", "parameter_fieldname": "description", @@ -32364,460 +52179,1020 @@ "_key": "description" }, { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", - "entity_fieldname": "device_key", - "parameter_fieldname": "device_key", - "in": "body", + "in": "query", + "name": "discovery", + "description": "Indicates that the OpenID Connect endpoints and keys should be set using the OpenID Connect Discovery mechanism. The following parameters are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint * revocation_endpoint * jwks_uri * keys", + "type": "boolean", + "allowEmptyValue": true, + "entity_fieldname": "discovery", + "api_fieldname": "discovery", + "external_param": true, + "parameter_fieldname": "discovery", "required": false, - "_key": "device_key" + "_key": "discovery" }, { "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "parameter_fieldname": "endpoint_name", - "in": "body", - "required": false, - "_key": "endpoint_name" + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" }, { "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", - "entity_fieldname": "endpoint_type", - "parameter_fieldname": "endpoint_type", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "parameter_fieldname": "type", "in": "body", - "required": false, - "_key": "endpoint_type" + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "identity_provider_type" }, { "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "entity_fieldname": "host_gateway", - "parameter_fieldname": "host_gateway", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", "in": "body", + "required": true, + "_key": "name" + }, + { + "type": "object", "required": false, - "_key": "host_gateway" + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" }, { - "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", - "in": "path", - "required": true, - "_key": "id" + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", + "in": "body", + "required": false, + "_key": "saml2_attributes" }, { "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", "in": "body", "required": false, - "_key": "name" + "enum_reference": "identity_provider_status_enum", + "_key": "status" } ], "method": "put", "mode": "update", "responses": [ { - "description": "Device updated.", - "schema": [ - { - "group": "Devices", - "entity": "device", - "_key": "foreign_key" - }, - { - "device_execution_mode": { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0, - "api_fieldname": "device_execution_mode", - "entity_fieldname": "device_execution_mode" - }, - "groups": { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { - "type": "string", - "example": "00000000000000000000000000000000" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups" - }, - "issuer_fingerprint": { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", - "api_fieldname": "issuer_fingerprint", - "entity_fieldname": "issuer_fingerprint" - }, - "operator_suspended": { - "type": "boolean", - "description": "Is the device suspended by the operator?", - "api_fieldname": "operator_suspended", - "entity_fieldname": "operator_suspended" - }, - "last_operator_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_operator_suspended_category", - "entity_fieldname": "last_operator_suspended_category" - }, - "last_operator_suspended_description": { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance.", - "api_fieldname": "last_operator_suspended_description", - "entity_fieldname": "last_operator_suspended_description" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, - "last_operator_suspended_updated_at": { + { "type": "string", "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_operator_suspended_updated_at", - "entity_fieldname": "last_operator_suspended_updated_at" - }, - "system_suspended": { - "type": "boolean", - "description": "Is the device suspended by the system?", - "api_fieldname": "system_suspended", - "entity_fieldname": "system_suspended" - }, - "last_system_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_system_suspended_category", - "entity_fieldname": "last_system_suspended_category" - }, - "last_system_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system.", - "api_fieldname": "last_system_suspended_description", - "entity_fieldname": "last_system_suspended_description" + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, - "last_system_suspended_updated_at": { + { "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_system_suspended_updated_at", - "entity_fieldname": "last_system_suspended_updated_at" + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "_key": "description" }, - "lifecycle_status": { + { "type": "string", - "enum": [ - "enabled", - "blocked" - ], - "description": "The lifecycle status of the device.", - "example": "enabled", - "api_fieldname": "lifecycle_status", - "entity_fieldname": "lifecycle_status" + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, - "account_id": { + { "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id" + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, - "auto_update": { + { "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "entity_fieldname": "auto_update" - }, - "bootstrap_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server.", - "api_fieldname": "bootstrap_expiration_date", - "entity_fieldname": "bootstrap_expiration_date" - }, - "bootstrapped_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the device's most recent bootstrap process.", - "api_fieldname": "bootstrapped_timestamp", - "entity_fieldname": "bootstrapped_timestamp" - }, - "ca_id": { - "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "entity_fieldname": "ca_id" + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, - "connector_expiration_date": { - "format": "date", + { "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server.", - "api_fieldname": "connector_expiration_date", - "entity_fieldname": "connector_expiration_date" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" }, - "created_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of when the device was created in the device directory.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, - "custom_attributes": { + { "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "_key": "oidc_attributes" }, - "deployed_state": { - "enum": [ - "development", - "production" + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment.", - "api_fieldname": "deployed_state", - "entity_fieldname": "deployed_state" - }, - "deployment": { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "", - "api_fieldname": "deployment", - "entity_fieldname": "deployment" + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "_key": "saml2_attributes" }, - "description": { + { "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", - "api_fieldname": "description", - "entity_fieldname": "description" + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "_key": "status" }, - "device_class": { + { "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "", - "api_fieldname": "device_class", - "entity_fieldname": "device_class" + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "identity_provider_type", + "_key": "type" }, - "id": { + { "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } + }, + "_key": "200" + }, + { + "description": "Error in input data, for example, missing name.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "device_key": { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", - "entity_fieldname": "device_key" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "endpoint_name": { + { "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "endpoint_type": { + { "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", - "entity_fieldname": "endpoint_type" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "etag": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The entity instance signature.", - "api_fieldname": "etag", - "entity_fieldname": "etag" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "firmware_checksum": { + { "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "firmware_checksum", - "entity_fieldname": "firmware_checksum" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "host_gateway": { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "entity_fieldname": "host_gateway" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "manifest": { + { "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "", - "api_fieldname": "manifest", - "entity_fieldname": "manifest" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "manifest_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The timestamp of the current manifest version.", - "api_fieldname": "manifest_timestamp", - "entity_fieldname": "manifest_timestamp" - }, - "mechanism": { + "description": "Entity name, always `error`.", "enum": [ - "connector", - "direct" + "error" ], - "type": "string", - "description": "The ID of the channel used to communicate with the device.", - "api_fieldname": "mechanism", - "entity_fieldname": "mechanism" + "_key": "object" }, - "mechanism_url": { + { "type": "string", - "description": "The address of the connector to use.", - "example": "", - "api_fieldname": "mechanism_url", - "entity_fieldname": "mechanism_url" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "name": { + { "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "name", - "entity_fieldname": "name" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, - "object": { - "type": "string", - "description": "The API resource entity.", - "example": "device", - "api_fieldname": "object", - "entity_fieldname": "object" + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "serial_number": { + { "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "serial_number", - "entity_fieldname": "serial_number" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "state": { + { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" + "error" ], + "_key": "object" + }, + { "type": "string", - "description": "The current state of the device.", - "api_fieldname": "state", - "entity_fieldname": "state" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An identity provider not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "updated_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The time the object was updated.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "vendor_id": { + { "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "vendor_id", - "entity_fieldname": "vendor_id" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "enrolment_list_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The claim date/time.", - "api_fieldname": "enrolment_list_timestamp", - "entity_fieldname": "enrolment_list_timestamp" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, - "_key": "properties" - } - ], - "_key": "200" - }, - { - "description": "Validation error: The data used to update the device did not validate.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" - }, - { - "description": "Unable to update device because it can't be found.", + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" } ], - "path": "/v3/devices/{id}/", - "summary": "Update a device.", - "return_type": "device", + "path": "/v3/identity-providers/{identity_provider_id}", + "summary": "Update an existing identity provider.", + "return_type": "identity_provider", "return_info": { "self": true, "custom": false, - "type": "device" + "type": "identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -32826,39 +53201,16 @@ "etag", "type", "filter", - "device_execution_mode", - "groups", - "issuer_fingerprint", - "operator_suspended", - "last_operator_suspended_category", - "last_operator_suspended_description", - "last_operator_suspended_updated_at", - "system_suspended", - "last_system_suspended_category", - "last_system_suspended_description", - "last_system_suspended_updated_at", - "lifecycle_status", - "account_id", - "bootstrap_expiration_date", - "bootstrapped_timestamp", - "connector_expiration_date", "created_at", - "deployed_state", - "deployment", - "device_class", - "firmware_checksum", - "manifest", - "manifest_timestamp", - "mechanism", - "mechanism_url", - "serial_number", - "state", "updated_at", - "vendor_id", - "enrolment_list_timestamp" + "account_id", + "is_default" ], - "group_id": "Devices", - "operation_id": "Device_update", + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "updateIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", @@ -32868,115 +53220,28 @@ "fields": [ { "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "readOnly": true, "required": false, "_key": "account_id" }, { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update.", - "api_fieldname": "auto_update", - "readOnly": false, - "required": false, - "_key": "auto_update" - }, - { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server.", - "api_fieldname": "bootstrap_expiration_date", - "readOnly": false, - "required": false, - "_key": "bootstrap_expiration_date" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the device's most recent bootstrap process.", - "api_fieldname": "bootstrapped_timestamp", - "readOnly": true, - "required": false, - "_key": "bootstrapped_timestamp" - }, - { - "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000", - "api_fieldname": "ca_id", - "readOnly": false, - "required": false, - "_key": "ca_id" - }, - { - "format": "date", "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server.", - "api_fieldname": "connector_expiration_date", - "readOnly": false, - "required": false, - "_key": "connector_expiration_date" - }, - { "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of when the device was created in the device directory.", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "readOnly": true, "required": false, "_key": "created_at" }, - { - "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "readOnly": false, - "required": false, - "_key": "custom_attributes" - }, - { - "enum": [ - "development", - "production" - ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment.", - "api_fieldname": "deployed_state", - "readOnly": true, - "required": false, - "enum_reference": "device_deployed_state_enum", - "_key": "deployed_state" - }, - { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "", - "api_fieldname": "deployment", - "readOnly": false, - "required": false, - "_key": "deployment" - }, { "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description", + "maxLength": 500, + "description": "Description for the identity provider.", "api_fieldname": "description", "readOnly": false, "required": false, @@ -32984,444 +53249,567 @@ }, { "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "", - "api_fieldname": "device_class", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", "readOnly": false, - "required": false, - "_key": "device_class" + "required": true, + "_key": "id" }, { + "type": "string", + "description": "Identity provider type.", "enum": [ - 0, - 1, - 5 + "NATIVE", + "MBED", + "SAML2", + "OIDC" ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0, - "api_fieldname": "device_execution_mode", - "readOnly": false, - "required": false, - "_key": "device_execution_mode" - }, - { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", - "api_fieldname": "device_key", + "api_fieldname": "type", "readOnly": false, - "required": false, - "_key": "device_key" + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "identity_provider_type" }, { - "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", "readOnly": true, - "api_fieldname": "endpoint_name", + "api_fieldname": "is_default", "required": false, - "_key": "endpoint_name" + "_key": "is_default" }, { "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "", - "api_fieldname": "endpoint_type", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", "readOnly": false, - "required": false, - "_key": "endpoint_type" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The claim date/time.", - "api_fieldname": "enrolment_list_timestamp", - "readOnly": true, - "required": false, - "_key": "enrolment_list_timestamp" + "required": true, + "_key": "name" }, { - "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "firmware_checksum", - "readOnly": true, + "type": "object", "required": false, - "_key": "firmware_checksum" - }, - { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { - "type": "string", - "example": "00000000000000000000000000000000" + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "groups", - "readOnly": true, - "required": false, - "_key": "groups" - }, - { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "", - "api_fieldname": "host_gateway", - "readOnly": false, - "required": false, - "_key": "host_gateway" - }, - { - "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322", - "api_fieldname": "issuer_fingerprint", + "api_fieldname": "oidc_attributes", "readOnly": false, - "required": false, - "_key": "issuer_fingerprint" - }, - { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_operator_suspended_category", - "readOnly": true, - "required": false, - "_key": "last_operator_suspended_category" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance.", - "api_fieldname": "last_operator_suspended_description", - "readOnly": true, - "required": false, - "_key": "last_operator_suspended_description" - }, - { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_operator_suspended_updated_at", - "readOnly": true, - "required": false, - "_key": "last_operator_suspended_updated_at" - }, - { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance", - "api_fieldname": "last_system_suspended_category", - "readOnly": true, - "required": false, - "_key": "last_system_suspended_category" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system.", - "api_fieldname": "last_system_suspended_description", - "readOnly": true, - "required": false, - "_key": "last_system_suspended_description" - }, - { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "last_system_suspended_updated_at", - "readOnly": true, - "required": false, - "_key": "last_system_suspended_updated_at" + "_key": "oidc_attributes" }, { - "type": "string", - "enum": [ - "enabled", - "blocked" + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } ], - "description": "The lifecycle status of the device.", - "example": "enabled", - "api_fieldname": "lifecycle_status", - "readOnly": true, - "required": false, - "enum_reference": "device_lifecycle_status_enum", - "_key": "lifecycle_status" - }, - { - "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "", - "api_fieldname": "manifest", + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", "readOnly": false, "required": false, - "_key": "manifest" + "_key": "saml2_attributes" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "The timestamp of the current manifest version.", - "api_fieldname": "manifest_timestamp", - "readOnly": true, - "required": false, - "_key": "manifest_timestamp" - }, - { + "description": "Status of the identity provider.", "enum": [ - "connector", - "direct" + "ACTIVE", + "SUSPENDED" ], - "type": "string", - "description": "The ID of the channel used to communicate with the device.", - "api_fieldname": "mechanism", - "readOnly": false, - "required": false, - "enum_reference": "device_mechanism_enum", - "_key": "mechanism" - }, - { - "type": "string", - "description": "The address of the connector to use.", - "example": "", - "api_fieldname": "mechanism_url", + "api_fieldname": "status", "readOnly": false, "required": false, - "_key": "mechanism_url" + "enum_reference": "identity_provider_status_enum", + "_key": "status" }, { "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "name", - "readOnly": false, - "required": false, - "_key": "name" - }, - { - "type": "boolean", - "description": "Is the device suspended by the operator?", - "api_fieldname": "operator_suspended", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", "readOnly": true, "required": false, - "_key": "operator_suspended" - }, + "_key": "updated_at" + } + ], + "field_renames": [ { - "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "serial_number", - "readOnly": false, - "required": false, - "_key": "serial_number" - }, + "api_fieldname": "type", + "_key": "identity_provider_type" + } + ], + "tags": [ + "Account - identity providers" + ], + "group_id": "Accounts", + "_key": "identity_provider" + }, + { + "swagger_models": [ + "IdpPublicKey" + ], + "primary_key_field": null, + "methods": [], + "fields": [ { - "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" - ], "type": "string", - "description": "The current state of the device.", - "api_fieldname": "state", - "readOnly": false, - "required": false, - "enum_reference": "device_state_enum", - "_key": "state" - }, - { - "type": "boolean", - "description": "Is the device suspended by the system?", - "api_fieldname": "system_suspended", + "description": "The public key.", + "api_fieldname": "key", "readOnly": true, "required": false, - "_key": "system_suspended" + "_key": "key" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "description": "The time the object was updated.", - "api_fieldname": "updated_at", + "description": "The public key ID.", + "api_fieldname": "kid", "readOnly": true, "required": false, - "_key": "updated_at" - }, - { - "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "vendor_id", - "readOnly": false, - "required": false, - "_key": "vendor_id" + "_key": "kid" } ], "field_renames": [], - "tags": [ - "Device directory - devices", - "Device security - device certificate renewals", - "Device directory - groups" - ], - "group_id": "Devices", - "_key": "device" + "tags": [], + "group_id": "Accounts", + "_key": "identity_provider_public_key" }, { "swagger_models": [ - "EnrollmentId", - "EnrollmentIdentities", - "EnrollmentIdentity" + "BrandingColor", + "BrandingColorList" ], - "primary_key_field": "id", + "primary_key_field": "reference", "methods": [ { - "description": "When the device connects to the bootstrap server and provides the enrollment ID, it is assigned to your account.\n
\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments \\\n-d '{\"enrollment_identity\": \"A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5\"}'\n```", + "description": "Resets the branding color to its light theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { + "is_primary_key": true, + "_override": true, "type": "string", - "description": "Enrollment identity.", - "pattern": "^A-[A-Za-z0-9:]{95}$", - "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", - "api_fieldname": "enrollment_identity", - "entity_fieldname": "enrollment_identity", - "parameter_fieldname": "enrollment_identity", - "in": "body", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "name": "reference", + "in": "path", + "description": "The name of the branding color.", "required": true, - "_key": "enrollment_identity" + "enum_reference": "light_theme_color_reference_enum", + "_key": "reference" } ], - "method": "post", - "mode": "create", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "Created. The enrollment claim has been created and is waiting for the device to connect.", + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ + "code", + "message", "object", - "id", - "etag", - "account_id", - "created_at", - "expires_at", - "claimed_at", - "enrollment_identity", - "enrolled_device_id" + "request_id", + "type" ], "properties": [ { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "The time the device was claimed.", - "format": "date-time", - "api_fieldname": "claimed_at", - "entity_fieldname": "claimed_at", - "_key": "claimed_at" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "The time of the enrollment identity creation.", - "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "The ID of the device in the Device Directory once it is registered.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "enrolled_device_id", - "entity_fieldname": "enrolled_device_id", - "_key": "enrolled_device_id" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { "type": "string", - "description": "Enrollment identity.", - "pattern": "^A-[A-Za-z0-9:]{95}$", - "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", - "api_fieldname": "enrollment_identity", - "entity_fieldname": "enrollment_identity", - "_key": "enrollment_identity" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "pattern": "[A-Za-z0-9]{1,256}", - "example": "7642xfaxz", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", - "format": "date-time", - "api_fieldname": "expires_at", - "entity_fieldname": "expires_at", - "_key": "expires_at" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "Enrollment identity.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "enrollment" + "error" ], - "example": "enrollment", - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment" - } + ] }, - "_key": "201" + "_key": "403" }, { - "description": "Bad request. The enrollment identity is not valid.", + "description": "Color not found.", "schema": { "type": "object", "required": [ @@ -33464,37 +53852,222 @@ "_key": "fields" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/branding-colors/light/{reference}", + "summary": "Reset branding color to default.", + "return_type": "void", + "return_info": { + "self": false, + "custom": true, + "type": "void" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Branding", + "operation_id": "resetLightColor", + "spec": { + "return_type": "void" + }, + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Retrieve the light theme branding colors.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "is_primary_key": true, + "_override": true, + "type": "string", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", + "readOnly": true, + "enum": [ + "branding_color" + ], + "_key": "object" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_color" + } + }, + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always `list`.", "enum": [ - "error" + "list" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "light_theme_color" + } }, - "_key": "400" + "_key": "200" }, { - "description": "The provided access token is not valid.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -33567,7 +54140,7 @@ "_key": "401" }, { - "description": "Conflict. The requested identity to add already exists on this or another account.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -33637,16 +54210,16 @@ } ] }, - "_key": "409" + "_key": "403" } ], - "path": "/v3/device-enrollments", - "summary": "Create a single enrollment.", - "return_type": "device_enrollment", + "path": "/v3/branding-colors/light", + "summary": "Get light theme branding colors.", + "return_type": "paginated_response(light_theme_color)", "return_info": { "self": true, "custom": false, - "type": "device_enrollment" + "type": "light_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -33655,119 +54228,152 @@ "etag", "type", "filter", - "id", - "created_at", - "claimed_at", - "account_id", - "expires_at", - "enrolled_device_id" + "limit", + "after", + "order", + "total_count", + "has_more", + "data" ], - "group_id": "Devices", - "operation_id": "createDeviceEnrollment", - "pagination": false, + "foreign_key_priority": "self", + "group_id": "Branding", + "operation_id": "getLightColors", + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "light_theme_color" + }, "request_content_type": "application/json", "request_body": "json", - "_key": "create" + "_key": "list" }, { - "description": "To free a device from your account, delete the enrollment claim. To bypass the device ownership, you need to delete the enrollment and factory reset the device. For more information, see [Transferring ownership using First-to-Claim](../connecting/device-ownership-first-to-claim-by-enrollment-list.html).\n
\n**Example:**\n```\ncurl -X DELETE \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id}\n```", + "description": "Retrieve the requested light theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "in": "path", - "name": "id", + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", "required": true, - "description": "Enrollment identity.", - "entity_fieldname": "id", - "api_fieldname": "id", - "external_param": false, - "parameter_fieldname": "id", - "_key": "id" + "enum_reference": "light_theme_color_reference_enum", + "_key": "reference" } ], - "method": "delete", - "mode": "delete", + "method": "get", + "mode": "read", "responses": [ { - "description": "No content. The enrollment claim has been deleted.", - "_key": "204" - }, - { - "description": "Bad request. Invalid enrollment identity.", + "description": "Successful operation.", "schema": { "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always 'branding_color'", + "readOnly": true, "enum": [ - "error" + "branding_color" ], + "api_fieldname": "object", + "entity_fieldname": "object", + "name": "object", + "in": "body", + "schema_param": true, + "external_param": true, + "parameter_fieldname": "object", + "required": false, "_key": "object" }, { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_color" + } }, - "_key": "400" + "_key": "200" }, { - "description": "Not found.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -33832,272 +54438,15 @@ { "type": "string", "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/device-enrollments/{id}", - "summary": "Delete an enrollment by ID.", - "return_type": "device_enrollment", - "return_info": { - "self": true, - "custom": false, - "type": "device_enrollment" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Devices", - "operation_id": "deleteDeviceEnrollment", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Provides a list of pending and claimed enrollments.\n\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments\n```\nWith query parameters:\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\n'https://api.us-east-1.mbedcloud.com/v3/device-enrollments?limit=10'\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "Entity ID to fetch after.", - "example": "00005a4e027f0a580a01081c00000000", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "include", - "type": "string", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "description": "Number of results to return (2-1000).", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "default": "ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "description": "ASC or DESC", - "required": false, - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "device_enrollment_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "OK.", - "schema": { - "type": "object", - "required": [ - "object", - "limit", - "after", - "order", - "has_more", - "total_count", - "data" - ], - "properties": [ - { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "items": { - "type": "object", - "required": [ - "object", - "id", - "etag", - "account_id", - "created_at", - "expires_at", - "claimed_at", - "enrollment_identity", - "enrolled_device_id" - ], - "properties": [ - { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the device was claimed.", - "format": "date-time", - "_key": "claimed_at" - }, - { - "type": "string", - "description": "The time of the enrollment identity creation.", - "format": "date-time", - "_key": "created_at" - }, - { - "type": "string", - "description": "The ID of the device in the Device Directory once it is registered.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "_key": "enrolled_device_id" - }, - { - "type": "string", - "description": "Enrollment identity.", - "pattern": "^A-[A-Za-z0-9:]{95}$", - "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", - "_key": "enrollment_identity" - }, - { - "type": "string", - "pattern": "[A-Za-z0-9]{1,256}", - "example": "7642xfaxz", - "_key": "etag" - }, - { - "type": "string", - "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", - "format": "date-time", - "_key": "expires_at" - }, - { - "type": "string", - "description": "Enrollment identity.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "_key": "id" - }, - { - "type": "string", - "enum": [ - "enrollment" - ], - "example": "enrollment", - "_key": "object" - } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": true, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "description": "Range 2-1000, or default.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "enum": [ - "list" - ], - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "default": "ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" - }, - { - "type": "integer", - "example": 100, - "format": "int32", - "minimum": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment" - } + "example": "validation_error", + "_key": "type" + } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Bad request. The access token could not be read.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -34167,10 +54516,10 @@ } ] }, - "_key": "400" + "_key": "403" }, { - "description": "The provided access token is not valid.", + "description": "Color not found.", "schema": { "type": "object", "required": [ @@ -34240,16 +54589,16 @@ } ] }, - "_key": "401" + "_key": "404" } ], - "path": "/v3/device-enrollments", - "summary": "Get a list of enrollments per account.", - "return_type": "paginated_response(device_enrollment)", + "path": "/v3/branding-colors/light/{reference}", + "summary": "Get light theme branding color.", + "return_type": "light_theme_color", "return_info": { "self": true, "custom": false, - "type": "device_enrollment" + "type": "light_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -34258,145 +54607,168 @@ "etag", "type", "filter", - "has_more", - "total_count", - "data" + "color", + "updated_at" ], - "foreign_key_priority": "self", - "group_id": "Devices", - "operation_id": "getDeviceEnrollments", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment" - }, + "group_id": "Branding", + "operation_id": "getLightColor", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "read" }, { - "description": "Check detailed enrollment info, for example, date of claim or expiration date.\n\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id}\n```", + "description": "Update light theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"purple\" }'\n```", "field_renames": [], "fields": [ { "type": "string", - "description": "Enrollment identity.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" + }, + { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", "in": "path", "required": true, - "_key": "id" + "enum_reference": "light_theme_color_reference_enum", + "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" } ], - "method": "get", - "mode": "read", + "method": "put", + "mode": "update", "responses": [ { - "description": "OK. Pending enrollment data.", + "description": "Color has been set successfully.", "schema": { "type": "object", - "required": [ - "object", - "id", - "etag", - "account_id", - "created_at", - "expires_at", - "claimed_at", - "enrollment_identity", - "enrolled_device_id" - ], "properties": [ { "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the device was claimed.", - "format": "date-time", - "api_fieldname": "claimed_at", - "entity_fieldname": "claimed_at", - "_key": "claimed_at" - }, - { - "type": "string", - "description": "The time of the enrollment identity creation.", - "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "The ID of the device in the Device Directory once it is registered.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "enrolled_device_id", - "entity_fieldname": "enrolled_device_id", - "_key": "enrolled_device_id" + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" }, { "type": "string", - "description": "Enrollment identity.", - "pattern": "^A-[A-Za-z0-9:]{95}$", - "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", - "api_fieldname": "enrollment_identity", - "entity_fieldname": "enrollment_identity", - "_key": "enrollment_identity" + "description": "Entity name: always 'branding_color'", + "readOnly": true, + "enum": [ + "branding_color" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "name": "object", + "in": "body", + "schema_param": true, + "external_param": true, + "parameter_fieldname": "object", + "required": false, + "_key": "object" }, { + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], "type": "string", - "pattern": "[A-Za-z0-9]{1,256}", - "example": "7642xfaxz", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_color_reference_enum", + "_key": "reference" }, { "type": "string", - "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", "format": "date-time", - "api_fieldname": "expires_at", - "entity_fieldname": "expires_at", - "_key": "expires_at" - }, - { - "type": "string", - "description": "Enrollment identity.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "enum": [ - "enrollment" - ], - "example": "enrollment", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" } ], "foreign_key": { - "group": "Devices", - "entity": "device_enrollment" + "group": "Branding", + "entity": "subtenant_light_theme_color" } }, "_key": "200" }, { - "description": "Bad request. Invalid enrollment identity.", + "description": "Error in input data format.", "schema": { "type": "object", "required": [ @@ -34469,7 +54841,7 @@ "_key": "400" }, { - "description": "Not found.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -34539,274 +54911,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/device-enrollments/{id}", - "summary": "Get details of an single enrollment by ID.", - "return_type": "device_enrollment", - "return_info": { - "self": true, - "custom": false, - "type": "device_enrollment" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "claimed_at", - "enrollment_identity", - "account_id", - "expires_at", - "enrolled_device_id" - ], - "group_id": "Devices", - "operation_id": "getDeviceEnrollment", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the device was claimed.", - "format": "date-time", - "api_fieldname": "claimed_at", - "readOnly": true, - "required": false, - "_key": "claimed_at" - }, - { - "type": "string", - "description": "The time of the enrollment identity creation.", - "format": "date-time", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "The ID of the device in the Device Directory once it is registered.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "enrolled_device_id", - "readOnly": true, - "required": false, - "_key": "enrolled_device_id" - }, - { - "type": "string", - "description": "Enrollment identity.", - "pattern": "^A-[A-Za-z0-9:]{95}$", - "example": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5", - "api_fieldname": "enrollment_identity", - "readOnly": false, - "required": true, - "_key": "enrollment_identity" - }, - { - "type": "string", - "description": "The enrollment claim expiration time. If the device does not connect to Device Management before expiration, the claim is removed without separate notice.", - "format": "date-time", - "api_fieldname": "expires_at", - "readOnly": true, - "required": false, - "_key": "expires_at" - }, - { - "type": "string", - "description": "Enrollment identity.", - "pattern": "^[A-Za-z0-9]{32}", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - } - ], - "field_renames": [], - "tags": [ - "Public API" - ], - "group_id": "Devices", - "_key": "device_enrollment" - }, - { - "swagger_models": [ - "BulkResponse" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "With bulk upload, you can upload a `CSV` file containing a number of enrollment IDs.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads\n\n```\n **To ensure your CSV file is valid:**\n 1. The first line of the file (header) is ignored.\n 1. Each line can contain comma-separated values, where the first value is the Enrollment ID. Everything after the first comma is ignored.\n 1. Valid enrollments begin with A followed by a - and 95 characters (examples below).\n 1. One enrollment ID per line. Empty lines are ignored.\n 1. Trailing comma at the end of the line is optional.\n 1. Lines are terminated with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n 1. Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from the identity before validation.\n 1. Empty identities are ignored.\n 1. Valid enrollment identities may be enclosed within quotation marks. Whitespace inside quotation marks is not trimmed and will cause validation to fail. Empty quotation marks are also invalid.\n 1. Use UTF-8 encoding.\n\n\n**A valid enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\",\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12, This text is ignored.\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12 , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\" , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\", First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Too-short identity.\n\"\", Empty quotation marks are an invalid identity\n\" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12 \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored\"\n\n,,\n, This is also considered a blank line.\n```", - "field_renames": [], - "fields": [ - { - "in": "stream", - "name": "enrollment_identities", - "type": "file", - "required": true, - "description": "The `CSV` file containing the enrollment IDs. The maximum file size is 10 MB.", - "entity_fieldname": "enrollment_identities", - "api_fieldname": "enrollment_identities", - "external_param": true, - "parameter_fieldname": "enrollment_identities", - "_key": "enrollment_identities" - } - ], - "method": "post", - "mode": "create", - "responses": [ - { - "description": "Bulk upload data received and asynchronous processing started.", - "schema": { - "type": "object", - "required": [ - "object", - "id", - "etag", - "created_at", - "account_id", - "status", - "total_count", - "processed_count", - "errors_count", - "completet_at", - "full_report_file", - "errors_report_file" - ], - "properties": [ - { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", - "entity_fieldname": "completed_at", - "_key": "completed_at" - }, - { - "type": "string", - "description": "The time of receiving the bulk creation task.", - "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", - "entity_fieldname": "errors_count", - "_key": "errors_count" - }, - { - "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", - "entity_fieldname": "errors_report_file", - "_key": "errors_report_file" - }, - { - "type": "string", - "description": "etag", - "example": "1", - "pattern": "[A-Za-z0-9]{0,256}", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", - "entity_fieldname": "full_report_file", - "_key": "full_report_file" - }, - { - "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "enum": [ - "enrollment-identity-bulk-uploads" - ], - "example": "enrollment-identity-bulk-uploads", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", - "entity_fieldname": "processed_count", - "_key": "processed_count" - }, - { - "enum": [ - "new", - "processing", - "completed" - ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", - "type": "string", - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" - }, - { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_bulk_delete" - } - }, - "_key": "201" + "_key": "401" }, { - "description": "Bad request.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -34876,10 +54984,10 @@ } ] }, - "_key": "400" + "_key": "403" }, { - "description": "Invalid access token.", + "description": "Color not found.", "schema": { "type": "object", "required": [ @@ -34949,56 +55057,16 @@ } ] }, - "_key": "401" + "_key": "404" } ], - "path": "/v3/device-enrollments-bulk-uploads", - "summary": "Bulk upload.", - "return_type": "device_enrollment_bulk_create", + "path": "/v3/branding-colors/light/{reference}", + "summary": "Updates light theme branding color.", + "return_type": "light_theme_color", "return_info": { "self": true, "custom": false, - "type": "device_enrollment_bulk_create" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "id", - "account_id", - "created_at", - "status", - "total_count", - "processed_count", - "errors_count", - "completed_at", - "full_report_file", - "errors_report_file" - ], - "group_id": "Devices", - "operation_id": "createBulkDeviceEnrollment", - "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "create" - }, - { - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "field_renames": [], - "fields": [], - "method": null, - "mode": "download_errors_report_file", - "responses": [], - "path": null, - "summary": "Download the error report file for the created the bulk enrollment.", - "return_type": "file", - "return_info": { - "self": false, - "custom": true, - "type": "file" + "type": "light_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -35008,277 +55076,580 @@ "type", "filter" ], - "group_id": "Devices", - "custom_method": "download_errors_report_file", - "spec": { - "summary": "Download the error report file for the created the bulk enrollment.", - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "return_type": "file" - }, + "group_id": "Branding", + "operation_id": "setLightColor", + "additional_operations": [ + { + "operation_id": "bulkSetLightColors", + "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." + } + ], + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "download_errors_report_file" + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "readOnly": false, + "_key": "color" }, { - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "field_renames": [], - "fields": [], - "method": null, - "mode": "download_full_report_file", - "responses": [], - "path": null, - "summary": "Download the full report file for the created of the bulk enrollment.", - "return_type": "file", - "return_info": { - "self": false, - "custom": true, - "type": "file" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], - "group_id": "Devices", - "custom_method": "download_full_report_file", - "spec": { - "summary": "Download the full report file for the created of the bulk enrollment.", - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "return_type": "file" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "download_full_report_file" + "type": "string", + "description": "Color name.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "name": "reference", + "in": "path", + "required": false, + "enum_reference": "light_theme_color_reference_enum", + "readOnly": false, + "_key": "reference" }, { - "description": "Provides information on bulk upload for the given ID, for example, bulk status and number of processed enrollment identities. Provides links to bulk upload reports as well.\n\n**Report file format:**\nThe report files have a header line, and the values are separated by commas. Delimit lines with a line break (CRLF). Make sure the report file is compliant with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180).\n\nAn example of a full report file:\n```\n\"entity__id\",\"entity__created_at\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n```\nAn example of an error report file:\n```\n\"entity__id\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n```\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/{id}\n```", + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "User interface configuration - colors" + ], + "group_id": "Branding", + "_key": "light_theme_color" + }, + { + "swagger_models": [ + "BrandingImage", + "BrandingImageList" + ], + "primary_key_field": "reference", + "methods": [ + { + "description": "Revert an account branding image to light theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { + "is_primary_key": true, + "_override": true, "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "name": "reference", "in": "path", + "description": "Name of the branding images (icon or picture).", "required": true, - "_key": "id" + "enum_reference": "light_theme_image_reference_enum", + "_key": "reference" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "delete", "responses": [ { - "description": "Bulk upload entity found.", + "description": "Image reverted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ + "code", + "message", "object", - "id", - "etag", - "created_at", - "account_id", - "status", - "total_count", - "processed_count", - "errors_count", - "completet_at", - "full_report_file", - "errors_report_file" + "request_id", + "type" ], "properties": [ { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", - "entity_fieldname": "completed_at", - "_key": "completed_at" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "The time of receiving the bulk creation task.", - "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", - "entity_fieldname": "errors_count", - "_key": "errors_count" + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", - "entity_fieldname": "errors_report_file", - "_key": "errors_report_file" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "description": "etag", - "example": "1", - "pattern": "[A-Za-z0-9]{0,256}", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", - "entity_fieldname": "full_report_file", - "_key": "full_report_file" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "enrollment-identity-bulk-uploads" + "error" ], - "example": "enrollment-identity-bulk-uploads", - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "Unknown image reference.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", - "entity_fieldname": "processed_count", - "_key": "processed_count" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "new", - "processing", - "completed" + "error" ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", + "_key": "object" + }, + { "type": "string", - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_bulk_delete" - } + ] }, - "_key": "200" - }, + "_key": "404" + } + ], + "path": "/v3/branding-images/light/{reference}/clear", + "summary": "Revert an image to light theme default.", + "return_type": "light_theme_image", + "return_info": { + "self": true, + "custom": false, + "type": "light_theme_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Branding", + "operation_id": "clearLightImage", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Retrieve the metadata of all light theme branding images.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ { - "description": "Bad request. Invalid bulk identity.", + "is_primary_key": true, + "_override": true, + "type": "string", + "api_fieldname": "reference", + "entity_fieldname": "reference", + "_key": "reference" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", "schema": { "type": "object", "required": [ - "code", - "message", + "data", + "has_more", + "limit", "object", - "request_id", - "type" + "total_count" ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of entities.", "items": { "type": "object", - "required": [ - "name", - "message" - ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "_key": "reference" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Branding", + "entity": "dark_theme_image" + } }, - "_key": "fields" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return, or equal to `total_count`.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always `list`.", "enum": [ - "error" + "list" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "light_theme_image" + } }, - "_key": "400" + "_key": "200" }, { - "description": "Invalid access token.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -35351,7 +55722,7 @@ "_key": "401" }, { - "description": "Not found.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -35421,16 +55792,16 @@ } ] }, - "_key": "404" + "_key": "403" } ], - "path": "/v3/device-enrollments-bulk-uploads/{id}", - "summary": "Get bulk upload entity.", - "return_type": "device_enrollment_bulk_create", + "path": "/v3/branding-images/light", + "summary": "Get metadata of all light theme images.", + "return_type": "paginated_response(light_theme_image)", "return_info": { "self": true, "custom": false, - "type": "device_enrollment_bulk_create" + "type": "light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -35439,293 +55810,256 @@ "etag", "type", "filter", - "account_id", - "created_at", - "status", + "limit", + "after", + "order", "total_count", - "processed_count", - "errors_count", - "completed_at", - "full_report_file", - "errors_report_file" + "has_more", + "data" ], - "group_id": "Devices", - "operation_id": "getBulkDeviceEnrollment", - "pagination": false, + "foreign_key_priority": "self", + "group_id": "Branding", + "operation_id": "getAllLightImageData", + "pagination": true, + "foreign_key": { + "group": "Branding", + "entity": "light_theme_image" + }, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", - "readOnly": true, - "required": false, - "_key": "completed_at" - }, - { - "type": "string", - "description": "The time of receiving the bulk creation task.", - "format": "date-time", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", - "readOnly": true, - "required": false, - "_key": "errors_count" - }, - { - "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", - "readOnly": true, - "required": false, - "_key": "errors_report_file" - }, - { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", - "readOnly": true, - "required": false, - "_key": "full_report_file" - }, - { - "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", - "readOnly": true, - "required": false, - "_key": "processed_count" - }, - { - "enum": [ - "new", - "processing", - "completed" - ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", - "type": "string", - "api_fieldname": "status", - "readOnly": true, - "required": false, - "enum_reference": "device_enrollment_bulk_create_status_enum", - "_key": "status" + "_key": "list" }, { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", - "readOnly": true, - "required": false, - "_key": "total_count" - } - ], - "field_renames": [], - "tags": [ - "Public API" - ], - "group_id": "Devices", - "_key": "device_enrollment_bulk_create" - }, - { - "swagger_models": [ - "BulkResponse" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "With bulk delete, you can upload a `CSV` file containing a number of enrollment IDs to delete.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization: Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes\n\n```\n**To ensure your CSV file is valid:**\n1. The first line of the file (header) is ignored.\n1. Each line can contain comma-separated values, where the first value is the Enrollment ID. Everything after the first comma is ignored.\n1. Valid enrollments begin with A followed by a - and 95 characters (examples below).\n1. One enrollment ID per line. Empty lines are ignored.\n1. Trailing comma at the end of the line is optional.\n1. Lines are terminated with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n1. Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from the identity before validation.\n1. Empty identities are ignored.\n1. Valid enrollment identities may be enclosed within quotation marks. Whitespace inside quotation marks is not trimmed and will cause validation to fail. Empty quotation marks are also invalid.\n1. Use UTF-8 encoding.\n\n**A valid enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\",\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12, This text is ignored,\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12 , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\" , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\", First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12, Too-short identity.\n\"\", Empty quotation marks are an invalid identity.\n\" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12 \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored.\"\n\n,,\n, This is also considered to a blank line.\n```", + "description": "Retrieve metadata for one account light theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "in": "stream", - "name": "enrollment_identities", - "type": "file", + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", "required": true, - "description": "The `CSV` file containing the enrollment IDs. The maximum file size is 10MB.", - "entity_fieldname": "enrollment_identities", - "api_fieldname": "enrollment_identities", - "external_param": true, - "parameter_fieldname": "enrollment_identities", - "_key": "enrollment_identities" + "enum_reference": "light_theme_image_reference_enum", + "_key": "reference" } ], - "method": "post", - "mode": "delete", + "method": "get", + "mode": "read", "responses": [ { - "description": "Bulk delete data received and asynchronous processing started.", + "description": "Successful operation.", "schema": { "type": "object", - "required": [ - "object", - "id", - "etag", - "created_at", - "account_id", - "status", - "total_count", - "processed_count", - "errors_count", - "completet_at", - "full_report_file", - "errors_report_file" - ], "properties": [ { "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" }, { "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", - "entity_fieldname": "completed_at", - "_key": "completed_at" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" }, { "type": "string", - "description": "The time of receiving the bulk creation task.", "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_image" + } + }, + "_key": "200" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", - "entity_fieldname": "errors_count", - "_key": "errors_count" - }, - { - "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", - "entity_fieldname": "errors_report_file", - "_key": "errors_report_file" - }, - { - "type": "string", - "description": "etag", - "example": "1", - "pattern": "[A-Za-z0-9]{0,256}", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", - "entity_fieldname": "full_report_file", - "_key": "full_report_file" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", - "in": "path", - "required": true, - "_key": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "enrollment-identity-bulk-uploads" + "error" ], - "example": "enrollment-identity-bulk-uploads", - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", - "entity_fieldname": "processed_count", - "_key": "processed_count" - }, - { - "enum": [ - "new", - "processing", - "completed" - ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", "type": "string", - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_bulk_create" - } + ] }, - "_key": "201" + "_key": "401" }, { - "description": "Bad request.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -35795,10 +56129,10 @@ } ] }, - "_key": "400" + "_key": "403" }, { - "description": "Invalid access token.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -35868,16 +56202,16 @@ } ] }, - "_key": "401" + "_key": "404" } ], - "path": "/v3/device-enrollments-bulk-deletes", - "summary": "Bulk delete.", - "return_type": "device_enrollment_bulk_delete", + "path": "/v3/branding-images/light/{reference}", + "summary": "Get metadata of a light theme image.", + "return_type": "light_theme_image", "return_info": { "self": true, "custom": false, - "type": "device_enrollment_bulk_delete" + "type": "light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -35886,248 +56220,271 @@ "etag", "type", "filter", - "id", - "account_id", - "created_at", - "status", - "total_count", - "processed_count", - "errors_count", - "completed_at", - "full_report_file", - "errors_report_file" + "static_uri", + "updated_at" ], - "group_id": "Devices", - "operation_id": "deleteBulkDeviceEnrollment", + "group_id": "Branding", + "operation_id": "getLightImageData", "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "delete" - }, - { - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "field_renames": [], - "fields": [], - "method": null, - "mode": "download_errors_report_file", - "responses": [], - "path": null, - "summary": "Download the error report file for the bulk enrollment deletion.", - "return_type": "file", - "return_info": { - "self": false, - "custom": true, - "type": "file" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Devices", - "custom_method": "download_errors_report_file", - "spec": { - "summary": "Download the error report file for the bulk enrollment deletion.", - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "return_type": "file" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "download_errors_report_file" - }, - { - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "field_renames": [], - "fields": [], - "method": null, - "mode": "download_full_report_file", - "responses": [], - "path": null, - "summary": "Download the full report file for the bulk enrollment deletion.", - "return_type": "file", - "return_info": { - "self": false, - "custom": true, - "type": "file" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Devices", - "custom_method": "download_full_report_file", - "spec": { - "summary": "Download the full report file for the bulk enrollment deletion.", - "description": "This method will download the CSV file containing detailed information on status of the bulk enrollment.", - "return_type": "file" - }, "request_content_type": "application/json", "request_body": "json", - "_key": "download_full_report_file" + "_key": "read" }, { - "description": "Provides information on bulk delete for the given ID, for example, bulk status and the number of processed enrollment identities. Provides links to bulk delete reports as well.\n\n**Report file format:**\nThe report files have a header line and the value are separated by commas. The lines are delimited by a line break (CRLF). Make sure the report file is compliant with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180).\n\nAn example of a full report file:\n```\n\"entity__id\",\"entity__deleted_at\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"2018-09-07T12:10:58.428Z\",\"\",\"\",\"\",\"\"\n```\nAn example of an error report file:\n```\n\"entity__id\",\"error__code\",\"error__type\",\"error__message\",\"error__fields\"\n\"A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n\"A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72\",\"409\",\"duplicate\",\"Enrollment identity is already claimed in the mbed Cloud.\",\"\"\n```\n**Example:**\n```\ncurl -X GET \\\n-H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes/{id}\n```", + "description": "Upload a new account branding image as form data in the light theme in PNG or JPEG format.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { + "in": "stream", + "name": "image", + "description": "The image in PNG or JPEG format as multipart form data.", + "required": true, + "type": "file", + "entity_fieldname": "image", + "api_fieldname": "image", + "external_param": true, + "parameter_fieldname": "image", + "_key": "image" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", "in": "path", "required": true, - "_key": "id" + "enum_reference": "light_theme_image_reference_enum", + "_key": "reference" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "update", "responses": [ { - "description": "Bulk delete entity found.", + "description": "Image uploaded successfully.", + "headers": [ + { + "type": "string", + "description": "Location of the image metadata.", + "_key": "Content-Location" + }, + { + "type": "string", + "description": "Location of the image binary.", + "_key": "Location" + } + ], "schema": { "type": "object", - "required": [ - "object", - "id", - "etag", - "created_at", - "account_id", - "status", - "total_count", - "processed_count", - "errors_count", - "completet_at", - "full_report_file", - "errors_report_file" - ], "properties": [ { "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", - "entity_fieldname": "completed_at", - "_key": "completed_at" + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "description": "The time of receiving the bulk creation task.", - "format": "date-time", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", - "entity_fieldname": "errors_count", - "_key": "errors_count" + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "dark_theme_image_reference_enum", + "_key": "reference" }, { "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", - "entity_fieldname": "errors_report_file", - "_key": "errors_report_file" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" }, { "type": "string", - "description": "etag", - "example": "1", - "pattern": "[A-Za-z0-9]{0,256}", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_image" + } + }, + "_key": "201" + }, + { + "description": "Error in input data format, for example, image is too large.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", - "entity_fieldname": "full_report_file", - "_key": "full_report_file" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "id", - "in": "path", - "required": true, - "_key": "id" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "enum": [ - "enrollment-identity-bulk-uploads" - ], - "example": "enrollment-identity-bulk-uploads", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", - "entity_fieldname": "processed_count", - "_key": "processed_count" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { + "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "new", - "processing", - "completed" + "error" ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", + "_key": "object" + }, + { "type": "string", - "api_fieldname": "status", - "entity_fieldname": "status", - "_key": "status" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_bulk_create" - } + ] }, - "_key": "200" + "_key": "400" }, { - "description": "Bad request. Invalid bulk identity.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -36197,10 +56554,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Invalid access token.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -36270,10 +56627,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not found.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -36346,13 +56703,13 @@ "_key": "404" } ], - "path": "/v3/device-enrollments-bulk-deletes/{id}", - "summary": "Get bulk delete entity.", - "return_type": "device_enrollment_bulk_delete", + "path": "/v3/branding-images/light/{reference}/upload-multipart", + "summary": "Upload a light theme image.", + "return_type": "light_theme_image", "return_info": { "self": true, "custom": false, - "type": "device_enrollment_bulk_delete" + "type": "light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -36361,313 +56718,1010 @@ "etag", "type", "filter", - "account_id", - "created_at", - "status", - "total_count", - "processed_count", - "errors_count", - "completed_at", - "full_report_file", - "errors_report_file" + "static_uri", + "updated_at" + ], + "group_id": "Branding", + "operation_id": "uploadLightImageMultipart", + "additional_operations": [ + { + "operation_id": "uploadLightImage", + "notes": "The multipart request is more generic and better supported by SDKs." + } ], - "group_id": "Devices", - "operation_id": "getBulkDeviceEnrollmentDelete", "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "update" } ], "fields": [ { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], "type": "string", - "description": "ID", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "name": "reference", + "in": "path", + "required": false, + "enum_reference": "light_theme_image_reference_enum", + "readOnly": false, + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "required": false, + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "User interface configuration - images" + ], + "group_id": "Branding", + "_key": "light_theme_image" + }, + { + "swagger_models": [ + "LoginHistory" + ], + "primary_key_field": null, + "methods": [], + "fields": [ + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "UTC time RFC3339 for this login attempt.", + "api_fieldname": "date", + "readOnly": true, + "required": false, + "_key": "date" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "readOnly": true, + "required": false, + "_key": "ip_address" + }, + { + "type": "boolean", + "example": true, + "description": "Flag indicating whether login attempt was successful or not.", + "api_fieldname": "success", + "readOnly": true, + "required": false, + "_key": "success" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "readOnly": true, + "required": false, + "_key": "user_agent" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "login_history" + }, + { + "swagger_models": [ + "LoginProfile" + ], + "primary_key_field": "id", + "methods": [], + "fields": [ + { + "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "required": false, + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "ID of the identity provider.", + "readOnly": false, + "_override": true, + "api_fieldname": "id", + "required": false, + "_key": "id" + }, + { + "type": "string", + "description": "Identity provider type.", + "example": "NATIVE", + "readOnly": true, + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "required": false, + "enum_reference": "login_profile_type_enum", + "_key": "login_profile_type" + }, + { + "type": "string", + "example": "Pelion", + "readOnly": false, + "description": "Name of the identity provider.", + "_override": true, + "api_fieldname": "name", + "required": false, + "_key": "name" + } + ], + "field_renames": [ + { + "api_fieldname": "type", + "_key": "login_profile_type" + } + ], + "tags": [], + "group_id": "Accounts", + "_key": "login_profile" + }, + { + "swagger_models": [ + "OIDCInfo" + ], + "primary_key_field": null, + "methods": [], + "fields": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "api_fieldname": "authorization_endpoint", + "readOnly": true, + "required": false, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "api_fieldname": "auto_enrollment", + "readOnly": true, + "required": false, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "api_fieldname": "claim_mapping", + "readOnly": true, + "required": false, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "api_fieldname": "client_id", + "readOnly": true, + "required": false, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "api_fieldname": "client_secret", + "readOnly": true, + "required": false, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "api_fieldname": "end_session_endpoint", + "readOnly": true, + "required": false, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "api_fieldname": "issuer", + "readOnly": true, + "required": false, + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "api_fieldname": "jwks_uri", + "readOnly": true, + "required": false, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "api_fieldname": "keys", + "readOnly": true, + "required": false, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "api_fieldname": "redirect_uri", + "readOnly": true, + "required": false, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "api_fieldname": "revocation_endpoint", + "readOnly": true, + "required": false, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "api_fieldname": "scopes", + "readOnly": true, + "required": false, + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "api_fieldname": "token_endpoint", + "readOnly": true, + "required": false, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "api_fieldname": "token_request_mode", + "readOnly": true, + "required": false, + "enum_reference": "oidc_request_token_mode_enum", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "api_fieldname": "token_response_path", + "readOnly": true, + "required": false, + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "api_fieldname": "userinfo_endpoint", + "readOnly": true, + "required": false, + "_key": "userinfo_endpoint" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "oidc_request" + }, + { + "swagger_models": [ + "OIDCClaimMapping" + ], + "primary_key_field": null, + "methods": [], + "fields": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "api_fieldname": "email", + "readOnly": true, + "required": false, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "api_fieldname": "email_verified", + "readOnly": true, + "required": false, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "api_fieldname": "family_name", + "readOnly": true, + "required": false, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "api_fieldname": "given_name", + "readOnly": true, + "required": false, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "api_fieldname": "name", + "readOnly": true, + "required": false, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "api_fieldname": "phone_number", + "readOnly": true, + "required": false, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "api_fieldname": "sub", + "readOnly": true, + "required": false, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "api_fieldname": "updated_at_pattern", + "readOnly": true, + "required": false, + "_key": "updated_at_pattern" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "oidc_request_claim_mapping" + }, + { + "swagger_models": [ + "ParentAccountInfo" + ], + "primary_key_field": "id", + "methods": [], + "fields": [ + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "info@arm.com", + "description": "The email address of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_email", "readOnly": true, "required": false, - "_key": "account_id" + "_key": "admin_email" }, { "type": "string", - "description": "The time the bulk creation task was completed.\nNull when creating bulk upload or delete.", - "format": "date-time", - "api_fieldname": "completed_at", + "maxLength": 100, + "example": "J. Doe", + "description": "The name of the admin user who is the contact person of the parent account.", + "api_fieldname": "admin_name", "readOnly": true, "required": false, - "_key": "completed_at" + "_key": "admin_name" }, { "type": "string", - "description": "The time of receiving the bulk creation task.", - "format": "date-time", - "api_fieldname": "created_at", + "example": "01619571dad80242ac12000600000000", + "description": "The ID of the parent account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", "readOnly": true, "required": false, - "_key": "created_at" - }, + "_key": "id" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "parent_account" + }, + { + "swagger_models": [ + "PasswordPolicy" + ], + "primary_key_field": null, + "methods": [], + "fields": [ { "type": "integer", - "example": 0, - "description": "The number of enrollment identities with failed processing.", - "api_fieldname": "errors_count", + "minimum": 8, + "maximum": 512, + "example": "8", + "description": "Minimum length for the password.", + "api_fieldname": "minimum_length", "readOnly": true, "required": false, - "_key": "errors_count" - }, + "_key": "minimum_length" + } + ], + "field_renames": [], + "tags": [], + "group_id": "Accounts", + "_key": "password_policy" + }, + { + "swagger_models": [ + "FeaturePolicy" + ], + "primary_key_field": null, + "methods": [], + "fields": [ { "type": "string", - "description": "Link to error report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv", - "api_fieldname": "errors_report_file", + "example": "GET", + "description": "Comma-separated list of actions, empty string represents all actions.", + "api_fieldname": "action", "readOnly": true, "required": false, - "_key": "errors_report_file" + "_key": "action" }, { - "type": "string", - "description": "Link to full report file.\nNull when creating bulk upload or delete.", - "example": "https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv", - "api_fieldname": "full_report_file", + "type": "boolean", + "example": true, + "description": "True or false controlling whether an action is allowed or not.", + "api_fieldname": "allow", "readOnly": true, "required": false, - "_key": "full_report_file" + "_key": "allow" }, { "type": "string", - "description": "Bulk ID", - "pattern": "^[A-Za-z0-9]{32}", - "api_fieldname": "id", - "parameter_fieldname": "id", - "in": "path", - "required": true, - "readOnly": false, - "_key": "id" + "example": "update-campaigns", + "description": "Feature name corresponding to this policy.", + "api_fieldname": "feature", + "readOnly": true, + "required": false, + "_key": "feature" }, { - "type": "integer", - "example": 0, - "description": "The number of enrollment identities processed until now.", - "api_fieldname": "processed_count", + "type": "boolean", + "example": false, + "description": "Flag indicating whether this feature is inherited or overwritten specifically.", "readOnly": true, + "api_fieldname": "inherited", "required": false, - "_key": "processed_count" + "_key": "inherited" }, { - "enum": [ - "new", - "processing", - "completed" - ], - "default": "new", - "example": "new", - "description": "The state of the process is 'new' at the time of creation. If creation is still in progress, the state shows as 'processing'. When the request is fully processed, the state changes to 'completed'.", "type": "string", - "api_fieldname": "status", + "example": "016ada3ec2d46665bf66e32e00000000", + "description": "An ID indicating where this policy is inherited from.", + "pattern": "[a-f0-9]{32}", "readOnly": true, + "api_fieldname": "inherited_from", "required": false, - "enum_reference": "device_enrollment_bulk_delete_status_enum", - "_key": "status" + "_key": "inherited_from" }, { - "type": "integer", - "example": 10, - "description": "Total number of enrollment identities found in the input CSV.", - "api_fieldname": "total_count", + "type": "string", + "example": "account", + "description": "Indicates the type of entity this policy is inherited from.", + "readOnly": true, + "enum": [ + "account", + "template", + "tier_template" + ], + "api_fieldname": "inherited_type", + "required": false, + "enum_reference": "policy_inherited_type_enum", + "_key": "inherited_type" + }, + { + "type": "string", + "example": "/v3/update-campaign", + "description": "Resource that is protected by this policy.", + "api_fieldname": "resource", "readOnly": true, "required": false, - "_key": "total_count" + "_key": "resource" } ], "field_renames": [], - "tags": [ - "Public API" - ], - "group_id": "Devices", - "_key": "device_enrollment_bulk_delete" + "tags": [], + "group_id": "Accounts", + "_key": "policy" }, { "swagger_models": [ - "BlackListedDeviceData", - "DenialAttemptsResponse" + "ApiKeyInfoRespList", + "GroupCreationInfo", + "GroupSummary", + "GroupSummaryList", + "GroupUpdateInfo", + "UserInfoRespList" ], "primary_key_field": "id", "methods": [ { - "description": "This produces a list of failed attempts to bootstrap using a particular certificate which is blacklisted (trusted_certificate).\nReturned list can be filtered by endpoint name. Trusted certificate ID filter is required.\n\n**Example usage:**\n```\ncurl -X GET -H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials?trusted_certificate_id__eq={cert-id}&endpoint_name__eq={endpoint_name}\n```\n", + "description": "Retrieve an array of API keys associated with a policy group.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", - "description": "Optional parameter for pagination. Denied device ID.", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", - "in": "query", "name": "after", + "in": "query", + "required": false, "external_param": true, "parameter_fieldname": "after", - "required": false, "_key": "after" }, + { + "name": "group_id", + "in": "path", + "description": "The ID of the group.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "group_id", + "external_param": false, + "parameter_fieldname": "group_id", + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, { "type": "integer", - "description": "Optional parameter for pagination.", + "format": "int32", "example": 50, - "minimum": 2, - "maximum": 1000, + "description": "The number of results to return (2-1000). Default 50.", "api_fieldname": "limit", "entity_fieldname": "limit", - "in": "query", "name": "limit", + "in": "query", + "required": false, + "default": 50, "external_param": true, "parameter_fieldname": "limit", - "required": false, "_key": "limit" }, { "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" ], - "description": "Optional parameter for pagination.", - "example": "DESC", "api_fieldname": "order", "entity_fieldname": "order", - "in": "query", "name": "order", + "in": "query", + "required": false, + "default": "ASC", "external_param": true, "parameter_fieldname": "order", - "required": false, - "enum_reference": "device_enrollment_denial_order_enum", + "enum_reference": "policy_group_order_enum", "_key": "order" } ], "method": "get", - "mode": "list", + "mode": "api_keys", "responses": [ { - "description": "Query Success. Responding with List of Devices.", + "description": "Successful operation.", "schema": { "type": "object", "required": [ + "data", + "has_more", + "limit", "object", - "data" + "total_count" ], "properties": [ { "type": "string", - "description": "An offset token for current page.", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", "_key": "after" }, { + "type": "array", + "description": "A list of entities.", "items": { + "type": "object", "required": [ + "etag", "id", - "account_id", - "endpoint_name", - "trusted_certificate_id", - "created_at", + "key", + "name", "object" ], "properties": [ { "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", "pattern": "[a-f0-9]{32}", - "description": "account id", - "example": "00005a4e027f0a580a01081c00000000", "_key": "account_id" }, { "type": "string", "format": "date-time", - "description": "date on which the failed bootstrap was attempted on", - "example": "2000-01-23T04:56:07.000+00:00", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", "_key": "created_at" }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "_key": "creation_time" + }, { "type": "string", - "description": "endpoint name", - "example": "Endpoint_1234", - "_key": "endpoint_name" + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "_key": "groups" }, { "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", "pattern": "[a-f0-9]{32}", - "description": "id of the recorded failed bootstrap attempt", - "example": "00005a4e027f0a580a04567c00000000", "_key": "id" }, { "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", "enum": [ - "denied_device" + "api-key" ], "_key": "object" }, { "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", "pattern": "[a-f0-9]{32}", - "description": "Trusted certificate id", - "example": "00005a4e027f0a580a01081c00000000", - "_key": "trusted_certificate_id" + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" } ], + "description": "Represents an API key in Device Management.", "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_denial" + "group": "Accounts", + "entity": "api_key" } }, - "type": "array", "api_fieldname": "data", "entity_fieldname": "data", "_key": "data" }, { "type": "boolean", - "description": "Are there more results available.", "example": false, + "description": "Flag indicating whether there are more results.", "api_fieldname": "has_more", "entity_fieldname": "has_more", "_key": "has_more" }, { "type": "integer", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", + "format": "int32", "example": 50, - "minimum": 2, - "maximum": 1000, + "description": "The number of results to return (2-1000). Default 50.", "api_fieldname": "limit", "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", "_key": "limit" }, { "type": "string", - "description": "The type of this API object is a \"list\".", - "example": "list", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" ], - "description": "The creation time based order of the entries.", - "example": "DESC", "api_fieldname": "order", "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", "_key": "order" }, { - "format": "integer", "type": "integer", - "example": 1, + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", "api_fieldname": "total_count", "entity_fieldname": "total_count", "_key": "total_count" @@ -36675,87 +57729,14 @@ ], "pagination": true, "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_denial" + "group": "Accounts", + "entity": "api_key" } }, "_key": "200" }, { - "description": "JWT validation failed.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "ID set in pagination parameter `after` not found.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -36807,162 +57788,28 @@ "type": "string", "description": "Entity name, always `error`.", "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/device-enrollment-denials", - "summary": "Return list of devices which were denied to bootstrap due to being subjected to blacklisting.", - "return_type": "paginated_response(device_enrollment_denial)", - "return_info": { - "self": true, - "custom": false, - "type": "device_enrollment_denial" - }, - "x_filter": { - "trusted_certificate_id": [ - "eq" - ], - "endpoint_name": [ - "eq" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "has_more", - "total_count", - "data", - "trusted_certificate_id__eq", - "endpoint_name__eq" - ], - "foreign_key_priority": "self", - "group_id": "Devices", - "operation_id": "listEnrollmentDenialAttempts", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_denial" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "Query for a single attempt to bootstrap with a blacklisted certificate by ID.\n\n**Example usage:**\n```\ncurl -X GET -H 'Authorization: Bearer ' \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials/{device_enrollment_denial_id}\n```\n", - "field_renames": [], - "fields": [ - { - "in": "path", - "name": "device_enrollment_denial_id", - "type": "string", - "description": "id of the recorded failed bootstrap attempt", - "required": true, - "entity_fieldname": "device_enrollment_denial_id", - "api_fieldname": "device_enrollment_denial_id", - "external_param": true, - "parameter_fieldname": "device_enrollment_denial_id", - "_key": "device_enrollment_denial_id" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Query Success. Responding with blacklisted device.", - "schema": { - "required": [ - "id", - "account_id", - "endpoint_name", - "trusted_certificate_id", - "created_at", - "object" - ], - "properties": [ - { - "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "account id", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "description": "date on which the failed bootstrap was attempted on", - "example": "2000-01-23T04:56:07.000+00:00", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "endpoint name", - "example": "Endpoint_1234", - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" - }, - { - "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "id of the recorded failed bootstrap attempt", - "example": "00005a4e027f0a580a04567c00000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "enum": [ - "denied_device" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "Trusted certificate id", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "trusted_certificate_id", - "entity_fieldname": "trusted_certificate_id", - "_key": "trusted_certificate_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_enrollment_denial" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "JWT validation failed.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -37032,10 +57879,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "ID not found.", + "description": "A group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -37108,590 +57955,527 @@ "_key": "404" } ], - "path": "/v3/device-enrollment-denials/{device_enrollment_denial_id}", - "summary": "Query for a single device by ID", - "return_type": "device_enrollment_denial", + "path": "/v3/policy-groups/{group_id}/api-keys", + "summary": "Get the API keys of a policy group.", + "return_type": "paginated_response(api_key)", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "device_enrollment_denial" + "type": "api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated, GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications", + "links": [] + }, "drop_fields": [ "object", "etag", "type", "filter", - "id", - "account_id", - "endpoint_name", - "trusted_certificate_id", - "created_at" + "total_count", + "has_more", + "data" ], - "group_id": "Devices", - "operation_id": "getEnrollmentDenialAttempt", - "pagination": false, + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "getApiKeysOfGroup", + "foreign_key": { + "entity": "api_key" + }, + "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "account id", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "description": "date on which the failed bootstrap was attempted on", - "example": "2000-01-23T04:56:07.000+00:00", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "endpoint name", - "example": "Endpoint_1234", - "api_fieldname": "endpoint_name", - "readOnly": true, - "required": false, - "_key": "endpoint_name" - }, - { - "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "id of the recorded failed bootstrap attempt", - "example": "00005a4e027f0a580a04567c00000000", - "api_fieldname": "id", - "readOnly": true, - "required": false, - "_key": "id" + "_key": "api_keys" }, { - "type": "string", - "pattern": "[a-f0-9]{32}", - "description": "Trusted certificate id", - "example": "00005a4e027f0a580a01081c00000000", - "api_fieldname": "trusted_certificate_id", - "readOnly": true, - "required": false, - "_key": "trusted_certificate_id" - } - ], - "field_renames": [], - "tags": [ - "EnrollmentDenials" - ], - "group_id": "Devices", - "_key": "device_enrollment_denial" - }, - { - "swagger_models": [ - "DeviceEventData", - "DeviceEventPage" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "List all device events for an account.\n\n**Example:**\nFollowing example gets device-events limiting returned results to max 5 events\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5 \\\n-H 'Authorization: Bearer '\n```\nor to get events for certain device filter based on device_id:\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id= \\\n-H 'Authorization: Bearer '\n```", + "description": "Create a new group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' -d '{\"name\": \"MyGroup1\"}'\n```", "field_renames": [], "fields": [ { - "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "description": "The ID of the item after which to retrieve the next page.", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "type": "integer", - "example": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", - "in": "query", - "name": "limit", - "minimum": 2, - "maximum": 1000, + "type": "object", + "properties": [ + { + "type": "array", + "description": "An array of API key IDs.", + "items": { + "type": "string" + }, + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This field is deprecated, use 'applications'", + "links": [] + }, + "_key": "apikeys" + }, + { + "type": "array", + "description": "An array of applicationIDs.", + "items": { + "type": "string" + }, + "_key": "applications" + }, + { + "type": "array", + "description": "An array of user IDs.", + "items": { + "type": "string" + }, + "_key": "users" + } + ], + "description": "Represents arrays of user and API key IDs.", + "name": "members", + "in": "body", + "schema_param": true, + "entity_fieldname": "members", + "api_fieldname": "members", "external_param": true, - "parameter_fieldname": "limit", + "parameter_fieldname": "members", "required": false, - "_key": "limit" + "_key": "members" }, { "type": "string", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" } ], - "method": "get", - "mode": "list", + "method": "post", + "mode": "create", "responses": [ { - "description": "Request successful.", + "description": "New entity created.", "schema": { + "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], "properties": [ { "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "items": { - "properties": [ - { - "type": "object", - "additionalProperties": { - "type": "object" - }, - "example": [], - "x-deprecation": { - "issued_at": "2019-01-15T14:55:20+00:00", - "end_of_life_at": "2020-01-15T14:55:20+00:00", - "comment": "This field is not used.", - "links": [] - }, - "_key": "changes" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "created_at" - }, - { - "type": "object", - "example": { - "campaign_id": "00000000000000000000000000000000" - }, - "description": "Additional data relevant to the event.", - "additionalProperties": { - "type": "string" - }, - "_key": "data" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "date_time" - }, - { - "type": "string", - "example": "Device record created", - "_key": "description" - }, - { - "type": "string", - "example": "00000000000000000000000000000000", - "_key": "device_id" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "etag" - }, - { - "type": "string", - "maxLength": 100, - "example": "UPD2_100", - "description": "Event code", - "_key": "event_type" - }, - { - "type": "string", - "example": "FAIL_MANIFEST_REJECTED", - "description": "Category code which groups the event type by a summary category.", - "_key": "event_type_category" - }, - { - "type": "string", - "example": "FAIL", - "description": "Generic description of the event.", - "_key": "event_type_description" - }, - { - "type": "string", - "example": "00000000000000000000000000000000", - "_key": "id" - }, - { - "type": "string", - "description": "The API resource entity.", - "example": "device-event", - "_key": "object" - }, - { - "type": "boolean", - "_key": "state_change" - } - ], - "required": [ - "date_time", - "id" - ], - "foreign_key": { - "group": "Devices", - "entity": "device_events" - } + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] }, - "type": "array", - "example": "[]", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "api_fieldname": "apikey_count", + "entity_fieldname": "apikey_count", + "_key": "apikey_count" }, { - "type": "boolean", - "example": false, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" }, { - "type": "integer", - "example": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "example": "list", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", + "enum": [ + "group" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" }, { "type": "integer", + "format": "int32", "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "entity_fieldname": "user_count", + "_key": "user_count" } ], - "pagination": true, + "description": "This object contains basic information about groups.", "foreign_key": { - "group": "Devices", - "entity": "device_events" + "group": "Accounts", + "entity": "subtenant_policy_group" } }, - "_key": "200" - }, - { - "description": "Bad request.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" + "_key": "201" }, { - "description": "Unable to find page.", - "_key": "404" - } - ], - "path": "/v3/device-events/", - "summary": "List all device events.", - "return_type": "paginated_response(device_events)", - "return_info": { - "self": true, - "custom": false, - "type": "device_events" - }, - "x_filter": { - "date_time": [ - "in", - "nin", - "lte", - "gte" - ], - "description": [ - "eq", - "neq", - "in", - "nin" - ], - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "device_id": [ - "eq", - "neq", - "in", - "nin" - ], - "event_type": [ - "eq", - "neq", - "in", - "nin" - ], - "state_change": [ - "eq", - "neq" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "data", - "has_more", - "total_count", - "date_time__in", - "date_time__nin", - "date_time__lte", - "date_time__gte", - "description__eq", - "description__neq", - "description__in", - "description__nin", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "device_id__eq", - "device_id__neq", - "device_id__in", - "device_id__nin", - "event_type__eq", - "event_type__neq", - "event_type__in", - "event_type__nin", - "state_change__eq", - "state_change__neq" - ], - "foreign_key_priority": "self", - "group_id": "Devices", - "operation_id": "Device_Event_list", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_events" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "Retrieve a specific device event.\n\n**Example:**\nTo fetch a specific event you can use the 'id' field form the '/v3/device-events'. Form of '016c03d40a4e000000000001001003b4'\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "device_event_id", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Retrieved result successfully.", + "description": "Error in input data, for example, invalid group name.", "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "object", - "additionalProperties": { - "type": "object" - }, - "example": [], - "x-deprecation": { - "issued_at": "2019-01-15T14:55:20+00:00", - "end_of_life_at": "2020-01-15T14:55:20+00:00", - "comment": "This field is not used.", - "links": [] + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] }, - "api_fieldname": "changes", - "entity_fieldname": "changes", - "_key": "changes" + "_key": "fields" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { - "type": "object", - "example": { - "campaign_id": "00000000000000000000000000000000" - }, - "description": "Additional data relevant to the event.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "date_time", - "entity_fieldname": "date_time", - "_key": "date_time" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "example": "Device record created", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "device_id", - "entity_fieldname": "device_id", - "_key": "device_id" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "maxLength": 100, - "example": "UPD2_100", - "description": "Event code", - "api_fieldname": "event_type", - "entity_fieldname": "event_type", - "_key": "event_type" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { "type": "string", - "example": "FAIL_MANIFEST_REJECTED", - "description": "Category code which groups the event type by a summary category.", - "api_fieldname": "event_type_category", - "entity_fieldname": "event_type_category", - "_key": "event_type_category" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { "type": "string", - "example": "FAIL", - "description": "Generic description of the event.", - "api_fieldname": "event_type_description", - "entity_fieldname": "event_type_description", - "_key": "event_type_description" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Forbidden.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "The API resource entity.", - "example": "device-event", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { - "type": "boolean", - "api_fieldname": "state_change", - "entity_fieldname": "state_change", - "_key": "state_change" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "required": [ - "date_time", - "id" - ], - "foreign_key": { - "group": "Devices", - "entity": "device_events" - } + ] }, - "_key": "200" - }, - { - "description": "Bad request.", - "_key": "400" - }, - { - "description": "Not authenticated.", - "_key": "401" + "_key": "403" }, { - "description": "Unable to find device.", - "_key": "404" + "description": "A group with that name already exists.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "409" } ], - "path": "/v3/device-events/{device_event_id}/", - "summary": "Retrieve a device event.", - "return_type": "device_events", + "path": "/v3/policy-groups", + "summary": "Create a new group.", + "return_type": "policy_group", "return_info": { "self": true, "custom": false, - "type": "device_events" + "type": "policy_group" }, "x_filter": {}, "x_deprecation": null, @@ -37700,193 +58484,50 @@ "etag", "type", "filter", + "id", "created_at", - "changes", - "data", - "date_time", - "description", - "device_id", - "event_type", - "event_type_category", - "event_type_description", - "state_change" + "updated_at", + "account_id", + "user_count", + "application_count", + "apikey_count" ], - "group_id": "Devices", - "operation_id": "Device_Event_retrieve", + "group_id": "Accounts", "parameter_map": { - "device_event_id": "id" + "group_id": "id" }, + "operation_id": "createGroup", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "object", - "additionalProperties": { - "type": "object" - }, - "example": [], - "x-deprecation": { - "issued_at": "2019-01-15T14:55:20+00:00", - "end_of_life_at": "2020-01-15T14:55:20+00:00", - "comment": "This field is not used.", - "links": [] - }, - "api_fieldname": "changes", - "readOnly": true, - "required": false, - "_key": "changes" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "object", - "example": { - "campaign_id": "00000000000000000000000000000000" - }, - "description": "Additional data relevant to the event.", - "additionalProperties": { - "type": "string" - }, - "api_fieldname": "data", - "readOnly": true, - "required": false, - "_key": "data" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "date_time", - "readOnly": true, - "required": false, - "_key": "date_time" - }, - { - "type": "string", - "example": "Device record created", - "api_fieldname": "description", - "readOnly": true, - "required": false, - "_key": "description" - }, - { - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "device_id", - "readOnly": true, - "required": false, - "_key": "device_id" - }, - { - "type": "string", - "maxLength": 100, - "example": "UPD2_100", - "description": "Event code", - "api_fieldname": "event_type", - "readOnly": true, - "required": false, - "_key": "event_type" - }, - { - "type": "string", - "example": "FAIL_MANIFEST_REJECTED", - "description": "Category code which groups the event type by a summary category.", - "api_fieldname": "event_type_category", - "readOnly": true, - "required": false, - "_key": "event_type_category" - }, - { - "type": "string", - "example": "FAIL", - "description": "Generic description of the event.", - "api_fieldname": "event_type_description", - "readOnly": true, - "required": false, - "_key": "event_type_description" - }, - { - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" + "_key": "create" }, { - "type": "boolean", - "api_fieldname": "state_change", - "readOnly": true, - "required": false, - "_key": "state_change" - } - ], - "field_renames": [], - "tags": [ - "Device directory - events" - ], - "group_id": "Devices", - "_key": "device_events" - }, - { - "swagger_models": [ - "DeviceGroup", - "DeviceGroupManipulation", - "DeviceGroupPage", - "DevicePage" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Add one device to a group.", + "description": "Delete a group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "type": "string", - "example": "00000000000000000000000000000000", - "name": "device_id", - "in": "body", - "schema_param": true, - "entity_fieldname": "device_id", - "api_fieldname": "device_id", - "external_param": true, - "parameter_fieldname": "device_id", - "required": false, - "_key": "device_id" - }, - { + "name": "group_id", "in": "path", - "description": "The ID of the group.", - "name": "device-group-id", + "description": "The ID of the group to delete.", "required": true, "type": "string", "entity_fieldname": "id", - "api_fieldname": "device-group-id", + "api_fieldname": "group_id", "external_param": false, - "parameter_fieldname": "device-group-id", + "parameter_fieldname": "group_id", "_key": "id" } ], - "method": "post", - "mode": "add_device", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "Success - device added.", + "description": "Deleted successfully.", "_key": "204" }, { - "description": "Bad request.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -37956,10 +58597,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Unauthorized.", + "description": "Forbidden, or Administrators group cannot be removed.", "schema": { "type": "object", "required": [ @@ -38029,10 +58670,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not found.", + "description": "A group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -38105,13 +58746,13 @@ "_key": "404" } ], - "path": "/v3/device-groups/{device-group-id}/devices/add/", - "summary": "Add a device to a group.", - "return_type": "void", + "path": "/v3/policy-groups/{group_id}", + "summary": "Delete a group.", + "return_type": "policy_group", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "policy_group" }, "x_filter": {}, "x_deprecation": null, @@ -38121,175 +58762,282 @@ "type", "filter" ], - "group_id": "Devices", + "group_id": "Accounts", "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_members_add", - "spec": { - "return_type": "void" + "group_id": "id" }, + "operation_id": "deleteGroup", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "add_device" + "_key": "delete" }, { - "description": "Create a group.", + "description": "Retrieve an array of policy groups.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "name": "custom_attributes", - "in": "body", - "schema_param": true, - "parameter_fieldname": "custom_attributes", + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", "required": false, - "_key": "custom_attributes" + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", - "entity_fieldname": "description", - "name": "description", - "in": "body", - "schema_param": true, - "parameter_fieldname": "description", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", "required": false, - "_key": "description" + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "entity_fieldname": "name", - "name": "name", - "in": "body", - "schema_param": true, - "parameter_fieldname": "name", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", "required": false, - "_key": "name" + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "policy_group_order_enum", + "_key": "order" } ], - "method": "post", - "mode": "create", + "method": "get", + "mode": "list", "responses": [ { - "description": "Created.", + "description": "Successful operation.", "schema": { "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], "properties": [ { "type": "string", - "format": "date-time", - "description": "The time the campaign was created.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", + "enum": [ + "group" + ], + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "_key": "user_count" + } + ], + "description": "This object contains basic information about groups.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_policy_group" + } }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "_key": "custom_attributes" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { "type": "integer", - "description": "The number of devices in this group.", - "example": 10, - "api_fieldname": "devices_count", - "entity_fieldname": "devices_count", - "_key": "devices_count" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name: always `device-group`.", - "example": "device-group", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "format": "date-time", - "description": "The time the object was updated.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "subtenant_api_key_order_enum", + "_key": "order" + }, + { + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], + "pagination": true, "foreign_key": { - "group": "Devices", - "entity": "device_group" + "group": "Accounts", + "entity": "policy_group" } }, - "_key": "201" + "_key": "200" }, { - "description": "Bad request.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -38359,10 +59107,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Unauthorized.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -38420,22 +59168,201 @@ }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + } + ], + "path": "/v3/policy-groups", + "summary": "Get policy groups.", + "return_type": "paginated_response(policy_group)", + "return_info": { + "self": true, + "custom": false, + "type": "policy_group" + }, + "x_filter": { + "name": [ + "eq" + ] + }, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "total_count", + "has_more", + "data", + "name__eq" + ], + "foreign_key_priority": "self", + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "getAllGroups", + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "policy_group" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Retrieve a policy group.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "group_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "api_fieldname": "apikey_count", + "entity_fieldname": "apikey_count", + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", + "enum": [ + "group" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "entity_fieldname": "user_count", + "_key": "user_count" } - ] + ], + "description": "This object contains basic information about groups.", + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_policy_group" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Conflict - Group name already exists.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -38505,65 +59432,10 @@ } ] }, - "_key": "409" - } - ], - "path": "/v3/device-groups/", - "summary": "Create a group.", - "return_type": "device_group", - "return_info": { - "self": true, - "custom": false, - "type": "device_group" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "id", - "devices_count", - "created_at", - "updated_at" - ], - "group_id": "Devices", - "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_create", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "create" - }, - { - "description": "Delete a group.", - "field_renames": [], - "fields": [ - { - "description": "The ID of the group.", - "in": "path", - "name": "device-group-id", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "device-group-id", - "external_param": false, - "parameter_fieldname": "device-group-id", - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Success - group deleted.", - "_key": "204" + "_key": "401" }, { - "description": "Unauthorized.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -38633,10 +59505,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not Found.", + "description": "A group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -38664,508 +59536,237 @@ "message" ], "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/device-groups/{device-group-id}/", - "summary": "Delete a group.", - "return_type": "device_group", - "return_info": { - "self": true, - "custom": false, - "type": "device_group" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Devices", - "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_delete", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Get a page of devices.", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The ID of the item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "in": "path", - "name": "device-group-id", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "device-group-id", - "external_param": false, - "parameter_fieldname": "device-group-id", - "_key": "id" - }, - { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "type": "integer", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" - }, - { - "type": "string", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" - } - ], - "method": "get", - "mode": "devices", - "responses": [ - { - "description": "Ok.", - "schema": { - "properties": [ - { - "type": "string", - "description": "The ID of the item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", - "api_fieldname": "after", - "entity_fieldname": "after", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "items": [ - { - "group": "Devices", - "entity": "device", - "_key": "foreign_key" - }, - { - "device_execution_mode": { - "enum": [ - 0, - 1, - 5 - ], - "type": "integer", - "description": "The execution mode from the certificate of the device. Defaults to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified execution mode (default if host_gateway invalid or not set). The device firmware uses a certificate that is not identified as a developer or production certificate.\n - 1 - Development device. The device firmware uses a developer certificate to communicate with Device Management.\n - 5 - Production device. The device firmware uses a factory-generated certificate to communicate with Device Management.", - "example": 0, - "default": 0 - }, - "groups": { - "description": "An array containing an ID of each group this device belongs to.", - "type": "array", - "items": { - "type": "string", - "example": "00000000000000000000000000000000" - } - }, - "issuer_fingerprint": { - "type": "string", - "pattern": "[A-Fa-f0-9]{64}", - "x-nullable": true, - "description": "SHA256 fingerprint of the certificate used to validate the signature of the device certificate.", - "example": "C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322" - }, - "operator_suspended": { - "type": "boolean", - "description": "Is the device suspended by the operator?" - }, - "last_operator_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance" - }, - "last_operator_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description why the device was suspended or returned to service.", - "example": "Suspended for maintenance." - }, - "last_operator_suspended_updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent suspension activity.", - "example": "2017-05-22T12:37:55.576563Z" - }, - "system_suspended": { - "type": "boolean", - "description": "Is the device suspended by the system?" - }, - "last_system_suspended_category": { - "type": "string", - "description": "The reference of the block category.", - "pattern": "[a-f0-9_]{32}", - "example": "maintenance" - }, - "last_system_suspended_description": { - "type": "string", - "maxLength": 2000, - "description": "The most recent description of why the device was blocked or unblocked by the system.", - "example": "A certificate in the device's certificate chain was blacklisted by the system." - }, - "last_system_suspended_updated_at": { - "type": "string", - "format": "date-time", - "description": "The timestamp of the most recent system block activity.", - "example": "2017-05-22T12:37:55.576563Z" - }, - "lifecycle_status": { - "type": "string", - "enum": [ - "enabled", - "blocked" - ], - "description": "The lifecycle status of the device.", - "example": "enabled" - }, - "account_id": { - "type": "string", - "description": "The ID of the associated account.", - "example": "00000000000000000000000000000000" - }, - "auto_update": { - "type": "boolean", - "description": "DEPRECATED: Mark this device for automatic firmware update." - }, - "bootstrap_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to bootstrap server." - }, - "bootstrapped_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the device's most recent bootstrap process." - }, - "ca_id": { - "type": "string", - "maxLength": 500, - "description": "The certificate issuer's ID.", - "example": "00000000000000000000000000000000" - }, - "connector_expiration_date": { - "format": "date", - "type": "string", - "x-nullable": true, - "description": "The expiration date of the certificate used to connect to LwM2M server." - }, - "created_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of when the device was created in the device directory." - }, - "custom_attributes": { - "type": "object", - "maxProperties": 5, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to five custom key-value attributes. Note that keys cannot begin with a number. Both keys and values are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - } - }, - "deployed_state": { - "enum": [ - "development", - "production" - ], - "type": "string", - "description": "DEPRECATED: The state of the device's deployment." - }, - "deployment": { - "type": "string", - "description": "DEPRECATED: The last deployment used on the device.", - "example": "" - }, - "description": { - "type": "string", - "maxLength": 2000, - "description": "The description of the device.", - "example": "description" - }, - "device_class": { - "type": "string", - "maxLength": 32, - "description": "An ID representing the model and hardware revision of the device.", - "example": "" - }, - "id": { - "type": "string", - "description": "The ID of the device. The device ID is used across all Device Management APIs.", - "example": "00000000000000000000000000000000" - }, - "device_key": { - "type": "string", - "maxLength": 512, - "description": "The fingerprint of the device certificate.", - "example": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00" - }, - "endpoint_name": { - "type": "string", - "description": "The endpoint name given to the device.", - "example": "00000000-0000-0000-0000-000000000000", - "readOnly": true - }, - "endpoint_type": { - "type": "string", - "description": "The endpoint type of the device. For example, the device is a gateway.", - "maxLength": 64, - "example": "" - }, - "etag": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The entity instance signature." - }, - "firmware_checksum": { - "type": "string", - "description": "The SHA256 checksum of the current firmware image.", - "example": "0000000000000000000000000000000000000000000000000000000000000000" - }, - "host_gateway": { - "type": "string", - "description": "The ID of the host gateway, if appropriate.", - "example": "" - }, - "manifest": { - "type": "string", - "description": "DEPRECATED: The URL for the current device manifest.", - "example": "" - }, - "manifest_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The timestamp of the current manifest version." - }, - "mechanism": { - "enum": [ - "connector", - "direct" - ], - "type": "string", - "description": "The ID of the channel used to communicate with the device." - }, - "mechanism_url": { - "type": "string", - "description": "The address of the connector to use.", - "example": "" - }, - "name": { - "type": "string", - "maxLength": 128, - "description": "The name of the device.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "object": { - "type": "string", - "description": "The API resource entity.", - "example": "device" - }, - "serial_number": { - "type": "string", - "description": "The serial number of the device.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "state": { - "enum": [ - "unenrolled", - "cloud_enrolling", - "bootstrapped", - "registered", - "deregistered" - ], - "type": "string", - "description": "The current state of the device." - }, - "updated_at": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "description": "The time the object was updated." - }, - "vendor_id": { - "type": "string", - "description": "The device vendor ID.", - "example": "00000000-0000-0000-0000-000000000000" - }, - "enrolment_list_timestamp": { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "description": "The claim date/time." + "description": "Message describing the error condition.", + "_key": "message" }, - "_key": "properties" - } + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" ], - "type": "array", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "_key": "object" }, { - "type": "boolean", - "description": "Are there more results available.", - "example": false, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/policy-groups/{group_id}", + "summary": "Get a policy group.", + "return_type": "policy_group", + "return_info": { + "self": true, + "custom": false, + "type": "policy_group" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "account_id", + "name", + "user_count", + "application_count", + "apikey_count" + ], + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "getGroupSummary", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" + }, + { + "description": "Update a group name.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestGroup2\"}'\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "group_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" + } + ], + "method": "put", + "mode": "update", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { "type": "integer", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", - "example": 50, - "minimum": 2, - "maximum": 1000, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "in": "query", - "name": "limit", - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "api_fieldname": "apikey_count", + "entity_fieldname": "apikey_count", + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" }, { "type": "string", - "description": "The type of this API object is a \"list\".", - "example": "list", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", + "enum": [ + "group" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "_key": "order" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" }, { - "format": "integer", "type": "integer", + "format": "int32", "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "entity_fieldname": "user_count", + "_key": "user_count" } ], - "pagination": true, + "description": "This object contains basic information about groups.", "foreign_key": { - "group": "Devices", - "entity": "device" + "group": "Accounts", + "entity": "subtenant_policy_group" } }, "_key": "200" }, { - "description": "Bad request.", + "description": "Error in input data, for example, the group name is too long.", "schema": { "type": "object", "required": [ @@ -39238,7 +59839,7 @@ "_key": "400" }, { - "description": "Unauthorized.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -39311,7 +59912,7 @@ "_key": "401" }, { - "description": "Not found.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -39381,941 +59982,688 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/device-groups/{device-group-id}/devices/", - "summary": "Get a page of devices.", - "return_type": "paginated_response(device)", - "return_info": { - "self": false, - "custom": false, - "type": "device" - }, - "x_filter": { - "lifecycle_status": [ - "eq", - "neq", - "in", - "nin" - ], - "operator_suspended": [ - "eq", - "neq" - ], - "last_operator_suspended_category": [ - "eq", - "neq", - "in", - "nin" - ], - "last_operator_suspended_updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "system_suspended": [ - "eq", - "neq" - ], - "last_system_suspended_category": [ - "eq", - "neq", - "in", - "nin" - ], - "last_system_suspended_updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "account_id": [ - "eq", - "neq", - "in", - "nin" - ], - "auto_update": [ - "eq", - "neq" - ], - "bootstrap_expiration_date": [ - "in", - "nin", - "lte", - "gte" - ], - "bootstrapped_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "ca_id": [ - "eq", - "neq", - "in", - "nin" - ], - "connector_expiration_date": [ - "in", - "nin", - "lte", - "gte" - ], - "created_at": [ - "in", - "nin", - "lte", - "gte" - ], - "deployed_state": [ - "eq", - "neq", - "in", - "nin" - ], - "deployment": [ - "eq", - "neq", - "in", - "nin" - ], - "description": [ - "eq", - "neq", - "in", - "nin" - ], - "device_class": [ - "eq", - "neq", - "in", - "nin" - ], - "device_execution_mode": [ - "eq", - "neq", - "in", - "nin" - ], - "device_key": [ - "eq", - "neq", - "in", - "nin" - ], - "endpoint_name": [ - "eq", - "neq", - "in", - "nin" - ], - "endpoint_type": [ - "eq", - "neq", - "in", - "nin" - ], - "enrolment_list_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "firmware_checksum": [ - "eq", - "neq", - "in", - "nin" - ], - "host_gateway": [ - "eq", - "neq", - "in", - "nin" - ], - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "manifest": [ - "eq", - "neq", - "in", - "nin" - ], - "manifest_timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "mechanism": [ - "eq", - "neq", - "in", - "nin" - ], - "mechanism_url": [ - "eq", - "neq", - "in", - "nin" - ], - "name": [ - "eq", - "neq", - "in", - "nin" - ], - "serial_number": [ - "eq", - "neq", - "in", - "nin" - ], - "state": [ - "eq", - "neq", - "in", - "nin" - ], - "updated_at": [ - "in", - "nin", - "lte", - "gte" - ], - "vendor_id": [ - "eq", - "neq", - "in", - "nin" - ] + "_key": "403" + }, + { + "description": "A group with that ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/policy-groups/{group_id}", + "summary": "Update the group name.", + "return_type": "policy_group", + "return_info": { + "self": true, + "custom": false, + "type": "policy_group" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "data", - "has_more", - "total_count", - "lifecycle_status__eq", - "lifecycle_status__neq", - "lifecycle_status__in", - "lifecycle_status__nin", - "operator_suspended__eq", - "operator_suspended__neq", - "last_operator_suspended_category__eq", - "last_operator_suspended_category__neq", - "last_operator_suspended_category__in", - "last_operator_suspended_category__nin", - "last_operator_suspended_updated_at__in", - "last_operator_suspended_updated_at__nin", - "last_operator_suspended_updated_at__lte", - "last_operator_suspended_updated_at__gte", - "system_suspended__eq", - "system_suspended__neq", - "last_system_suspended_category__eq", - "last_system_suspended_category__neq", - "last_system_suspended_category__in", - "last_system_suspended_category__nin", - "last_system_suspended_updated_at__in", - "last_system_suspended_updated_at__nin", - "last_system_suspended_updated_at__lte", - "last_system_suspended_updated_at__gte", - "account_id__eq", - "account_id__neq", - "account_id__in", - "account_id__nin", - "auto_update__eq", - "auto_update__neq", - "bootstrap_expiration_date__in", - "bootstrap_expiration_date__nin", - "bootstrap_expiration_date__lte", - "bootstrap_expiration_date__gte", - "bootstrapped_timestamp__in", - "bootstrapped_timestamp__nin", - "bootstrapped_timestamp__lte", - "bootstrapped_timestamp__gte", - "ca_id__eq", - "ca_id__neq", - "ca_id__in", - "ca_id__nin", - "connector_expiration_date__in", - "connector_expiration_date__nin", - "connector_expiration_date__lte", - "connector_expiration_date__gte", - "created_at__in", - "created_at__nin", - "created_at__lte", - "created_at__gte", - "deployed_state__eq", - "deployed_state__neq", - "deployed_state__in", - "deployed_state__nin", - "deployment__eq", - "deployment__neq", - "deployment__in", - "deployment__nin", - "description__eq", - "description__neq", - "description__in", - "description__nin", - "device_class__eq", - "device_class__neq", - "device_class__in", - "device_class__nin", - "device_execution_mode__eq", - "device_execution_mode__neq", - "device_execution_mode__in", - "device_execution_mode__nin", - "device_key__eq", - "device_key__neq", - "device_key__in", - "device_key__nin", - "endpoint_name__eq", - "endpoint_name__neq", - "endpoint_name__in", - "endpoint_name__nin", - "endpoint_type__eq", - "endpoint_type__neq", - "endpoint_type__in", - "endpoint_type__nin", - "enrolment_list_timestamp__in", - "enrolment_list_timestamp__nin", - "enrolment_list_timestamp__lte", - "enrolment_list_timestamp__gte", - "firmware_checksum__eq", - "firmware_checksum__neq", - "firmware_checksum__in", - "firmware_checksum__nin", - "host_gateway__eq", - "host_gateway__neq", - "host_gateway__in", - "host_gateway__nin", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "manifest__eq", - "manifest__neq", - "manifest__in", - "manifest__nin", - "manifest_timestamp__in", - "manifest_timestamp__nin", - "manifest_timestamp__lte", - "manifest_timestamp__gte", - "mechanism__eq", - "mechanism__neq", - "mechanism__in", - "mechanism__nin", - "mechanism_url__eq", - "mechanism_url__neq", - "mechanism_url__in", - "mechanism_url__nin", - "name__eq", - "name__neq", - "name__in", - "name__nin", - "serial_number__eq", - "serial_number__neq", - "serial_number__in", - "serial_number__nin", - "state__eq", - "state__neq", - "state__in", - "state__nin", - "updated_at__in", - "updated_at__nin", - "updated_at__lte", - "updated_at__gte", - "vendor_id__eq", - "vendor_id__neq", - "vendor_id__in", - "vendor_id__nin" + "created_at", + "updated_at", + "account_id", + "user_count", + "application_count", + "apikey_count" ], - "group_id": "Devices", + "group_id": "Accounts", "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_members_retrieve", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device" + "group_id": "id" }, + "operation_id": "updateGroupName", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "devices" + "_key": "update" }, { - "description": "List all groups.", + "description": "Retrieve an array of users associated with a policy group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", - "description": "The ID of the item after which to retrieve the next page.", - "example": "01631667477600000000000100100374", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", - "in": "query", "name": "after", + "in": "query", + "required": false, "external_param": true, "parameter_fieldname": "after", - "required": false, "_key": "after" }, { - "description": "Comma-separated list of data fields to return. Currently supported: `total_count`.", - "in": "query", + "name": "group_id", + "in": "path", + "description": "The ID of the group.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "group_id", + "external_param": false, + "parameter_fieldname": "group_id", + "_key": "id" + }, + { "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, "type": "string", "entity_fieldname": "include", "api_fieldname": "include", "external_param": true, "parameter_fieldname": "include", - "required": false, "_key": "include" }, { "type": "integer", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "format": "int32", "example": 50, - "minimum": 2, - "maximum": 1000, + "description": "The number of results to return (2-1000). Default 50.", "api_fieldname": "limit", "entity_fieldname": "limit", - "in": "query", "name": "limit", + "in": "query", + "required": false, + "default": 50, "external_param": true, "parameter_fieldname": "limit", - "required": false, "_key": "limit" }, { "type": "string", - "description": "Record order. Acceptable values: ASC, DESC. Default: ASC.", - "example": "DESC", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], "api_fieldname": "order", "entity_fieldname": "order", - "in": "query", "name": "order", + "in": "query", + "required": false, + "default": "ASC", "external_param": true, "parameter_fieldname": "order", - "required": false, + "enum_reference": "policy_group_order_enum", "_key": "order" } ], "method": "get", - "mode": "list", + "mode": "users", "responses": [ { - "description": "Ok.", + "description": "Successful operation.", "schema": { "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], "properties": [ { "type": "string", - "description": "An offset token for current page.", - "example": "01631667477600000000000100100374", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", "_key": "after" }, { + "type": "array", + "description": "A list of entities.", "items": { "type": "object", + "required": [ + "account_id", + "email", + "etag", + "id", + "object", + "status" + ], "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "array", + "description": "List of active user sessions.", + "items": { + "type": "object", + "required": [ + "account_id", + "ip_address", + "login_time", + "object", + "reference_token", + "user_agent" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The UUID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "entity_fieldname": "ip_address", + "_key": "ip_address" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "The login time of the user.", + "api_fieldname": "login_time", + "entity_fieldname": "login_time", + "_key": "login_time" + }, + { + "type": "string", + "description": "Entity name: always 'user-session'", + "enum": [ + "user-session" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", + "description": "The reference token.", + "api_fieldname": "reference_token", + "entity_fieldname": "reference_token", + "_key": "reference_token" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "entity_fieldname": "user_agent", + "_key": "user_agent" + } + ], + "description": "Represents an active user session.", + "foreign_key": { + "group": "Accounts", + "entity": "active_session" + } + }, + "_key": "active_sessions" + }, + { + "type": "string", + "example": "110 Fulbourn Rd, Cambridge, United Kingdom", + "description": "Address.", + "x-nullable": true, + "_key": "address" + }, { "type": "string", "format": "date-time", - "description": "The time the campaign was created.", - "example": "2017-05-22T12:37:55.576563Z", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", "_key": "created_at" }, { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "_key": "custom_attributes" + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "A timestamp of the user creation in the storage, in milliseconds.", + "_key": "creation_time" + }, + { + "type": "object", + "x-nullable": true, + "description": "User's account-specific custom properties. The value is a string.", + "additionalProperties": { + "type": "string" + }, + "_key": "custom_fields" + }, + { + "pattern": "^(?=.{3,254}$).+\\@.+", + "type": "string", + "example": "user@arm.com", + "description": "The email address.", + "_key": "email" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating whether the user's email address has been verified or not.", + "_key": "email_verified" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "maxLength": 100, + "example": "User Doe", + "x-nullable": true, + "description": "The full name of the user.", + "_key": "full_name" + }, + { + "type": "array", + "description": "A list of IDs of the groups this user belongs to.", + "items": { + "type": "string" + }, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The ID of the user.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating that the user has accepted General Terms and Conditions.", + "_key": "is_gtc_accepted" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating that the user has consented to receive marketing information.", + "_key": "is_marketing_accepted" + }, + { + "type": "boolean", + "example": true, + "description": "A flag indicating whether two-factor authentication (TOTP) has been enabled.", + "_key": "is_totp_enabled" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "A timestamp of the latest login of the user, in milliseconds.", + "_key": "last_login_time" + }, + { + "type": "array", + "maxItems": 5, + "description": "Timestamps, succeedings, IP addresses and user agent information of the last five logins of the user, with timestamps in RFC3339 format.", + "items": { + "type": "object", + "required": [ + "date", + "ip_address", + "success", + "user_agent" + ], + "properties": [ + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T17:52:07Z", + "description": "UTC time RFC3339 for this login attempt.", + "api_fieldname": "date", + "entity_fieldname": "date", + "_key": "date" + }, + { + "type": "string", + "example": "127.0.0.1", + "description": "IP address of the client.", + "api_fieldname": "ip_address", + "entity_fieldname": "ip_address", + "_key": "ip_address" + }, + { + "type": "boolean", + "example": true, + "description": "Flag indicating whether login attempt was successful or not.", + "api_fieldname": "success", + "entity_fieldname": "success", + "_key": "success" + }, + { + "type": "string", + "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", + "description": "User Agent header from the login request.", + "api_fieldname": "user_agent", + "entity_fieldname": "user_agent", + "_key": "user_agent" + } + ], + "description": "Represents an entry in login history.", + "foreign_key": { + "group": "Accounts", + "entity": "login_history" + } + }, + "_key": "login_history" + }, + { + "type": "array", + "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", + "x-nullable": true, + "items": { + "type": "object", + "required": [ + "id" + ], + "properties": [ + { + "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "ID of the identity provider.", + "readOnly": false, + "_override": true, + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" + }, + { + "type": "string", + "example": "Pelion", + "readOnly": false, + "description": "Name of the identity provider.", + "_override": true, + "api_fieldname": "name", + "entity_fieldname": "name", + "_key": "name" + }, + { + "type": "string", + "description": "Identity provider type.", + "example": "NATIVE", + "readOnly": true, + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "login_profile_type", + "_key": "type" + } + ], + "description": "Represents a user login profile in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "login_profile" + } + }, + "_key": "login_profiles" + }, + { + "type": "string", + "description": "Entity name: always `user`.", + "enum": [ + "user" + ], + "_key": "object" }, { "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "_key": "description" + "example": "PZf9eEUH43DAPE9ULINFeuj", + "description": "The password when creating a new user. It will be generated when not present in the request.", + "x-nullable": true, + "_key": "password" }, { "type": "integer", - "description": "The number of devices in this group.", - "example": 10, - "_key": "devices_count" + "format": "int64", + "example": 1518630727688, + "description": "A timestamp of the latest change of the user password, in milliseconds.", + "_key": "password_changed_time" }, { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "_key": "etag" + "maxLength": 100, + "example": "+44 (1223) 400 400", + "description": "Phone number.", + "x-nullable": true, + "_key": "phone_number" }, { "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "_key": "id" + "example": "ACTIVE", + "description": "The status of the user. ENROLLING state indicates that the user is in the middle of the enrollment process. INVITED means that the user has not accepted the invitation request. RESET means that the password must be changed immediately. INACTIVE users are locked out and not permitted to use the system.", + "enum": [ + "ENROLLING", + "INVITED", + "ACTIVE", + "RESET", + "INACTIVE" + ], + "_key": "status" }, { - "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "_key": "name" + "type": "array", + "x-nullable": true, + "description": "A list of scratch codes for the two-factor authentication. Visible only when 2FA is requested to be enabled or the codes regenerated.", + "items": { + "type": "string" + }, + "_key": "totp_scratch_codes" }, { "type": "string", - "description": "Entity name: always `device-group`.", - "example": "device-group", - "_key": "object" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" }, { + "pattern": "[\\w\\-,._@+=]{4,30}", "type": "string", - "format": "date-time", - "description": "The time the object was updated.", - "example": "2017-05-22T12:37:55.576563Z", - "_key": "updated_at" + "example": "admin", + "description": "A username.", + "x-nullable": true, + "_key": "username" } ], + "description": "Represents a user in Device Management.", "foreign_key": { - "group": "Devices", - "entity": "device_group" + "group": "Accounts", + "entity": "user" } }, - "type": "array", "api_fieldname": "data", "entity_fieldname": "data", "_key": "data" }, { "type": "boolean", - "description": "More results are available.", "example": false, + "description": "Flag indicating whether there are more results.", "api_fieldname": "has_more", "entity_fieldname": "has_more", "_key": "has_more" }, { "type": "integer", - "description": "How many objects to retrieve in the page (2-1000). Limit values outside of this range are set to the closest limit.", + "format": "int32", "example": 50, - "minimum": 2, - "maximum": 1000, + "description": "The number of results to return (2-1000). Default 50.", "api_fieldname": "limit", "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", "_key": "limit" }, { "type": "string", - "description": "The type of this API object is 'list'.", - "example": "list", + "description": "Entity name: always `list`.", + "enum": [ + "list" + ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Record order based on creation time.", - "example": "DESC", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], "api_fieldname": "order", "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "account_order_enum", "_key": "order" }, - { - "format": "integer", - "type": "integer", - "example": 1, - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_group" - } - }, - "_key": "200" - }, - { - "description": "Unauthorized.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Not Found.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ { "type": "integer", "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/device-groups/", - "summary": "List all groups.", - "return_type": "paginated_response(device_group)", - "return_info": { - "self": true, - "custom": false, - "type": "device_group" - }, - "x_filter": { - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "devices_count": [ - "eq", - "neq", - "in", - "nin", - "lte", - "gte" - ], - "name": [ - "eq", - "neq", - "in", - "nin" - ], - "created_at": [ - "in", - "nin", - "lte", - "gte" - ], - "updated_at": [ - "in", - "nin", - "lte", - "gte" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "data", - "has_more", - "total_count", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "devices_count__eq", - "devices_count__neq", - "devices_count__in", - "devices_count__nin", - "devices_count__lte", - "devices_count__gte", - "name__eq", - "name__neq", - "name__in", - "name__nin", - "created_at__in", - "created_at__nin", - "created_at__lte", - "created_at__gte", - "updated_at__in", - "updated_at__nin", - "updated_at__lte", - "updated_at__gte" - ], - "foreign_key_priority": "self", - "group_id": "Devices", - "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_list", - "pagination": true, - "foreign_key": { - "group": "Devices", - "entity": "device_group" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "Get a group.", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "device-group-id", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Ok.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "The time the campaign was created.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "_key": "custom_attributes" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "type": "integer", - "description": "The number of devices in this group.", - "example": 10, - "api_fieldname": "devices_count", - "entity_fieldname": "devices_count", - "_key": "devices_count" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always `device-group`.", - "example": "device-group", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "description": "The time the object was updated.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } ], + "pagination": true, "foreign_key": { - "group": "Devices", - "entity": "device_group" + "group": "Accounts", + "entity": "user" } }, "_key": "200" }, { - "description": "Bad request.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -40385,10 +60733,10 @@ } ] }, - "_key": "400" + "_key": "401" }, { - "description": "Unauthorized.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -40458,10 +60806,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Not Found.", + "description": "A group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -40534,302 +60882,306 @@ "_key": "404" } ], - "path": "/v3/device-groups/{device-group-id}/", - "summary": "Get a group.", - "return_type": "device_group", + "path": "/v3/policy-groups/{group_id}/users", + "summary": "Get users of a policy group.", + "return_type": "paginated_response(user)", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "device_group" + "type": "user" + }, + "x_filter": { + "status": [ + "eq", + "in", + "nin" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "name", - "description", - "custom_attributes", - "devices_count", - "created_at", - "updated_at" + "total_count", + "has_more", + "data", + "status__eq", + "status__in", + "status__nin" ], - "group_id": "Devices", + "group_id": "Accounts", "parameter_map": { - "device-group-id": "id" + "group_id": "id" }, - "operation_id": "Group_retrieve", - "pagination": false, + "operation_id": "getUsersOfGroup", + "foreign_key": { + "entity": "user" + }, + "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "users" + } + ], + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "readOnly": true, + "required": false, + "_key": "account_id" }, { - "description": "Remove one device from a group.", + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "api_fieldname": "apikey_count", + "readOnly": true, + "required": false, + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "readOnly": true, + "required": false, + "_key": "application_count" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "readOnly": false, + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "readOnly": false, + "required": true, + "_key": "name" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "readOnly": true, + "required": false, + "_key": "user_count" + } + ], + "field_renames": [], + "tags": [ + "Account - policy groups" + ], + "group_id": "Accounts", + "_key": "policy_group" + }, + { + "swagger_models": [ + "ListOfPreSharedKeysWithoutSecret", + "PreSharedKey", + "PreSharedKeyWithoutSecret" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Upload a PSK for an endpoint to allow it to bootstrap. The existing key cannot be overwritten, but needs\nto be deleted first in the case of re-setting a PSK for an endpoint.\n\n**Note**: The PSK APIs are available only to accounts that have this feature enabled.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\" \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\": \"4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```", "field_renames": [], "fields": [ { + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, "type": "string", - "example": "00000000000000000000000000000000", - "name": "device_id", - "in": "body", - "schema_param": true, - "entity_fieldname": "device_id", - "api_fieldname": "device_id", - "external_param": true, - "parameter_fieldname": "device_id", - "required": false, - "_key": "device_id" + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "_key": "endpoint_name" }, { - "in": "path", - "description": "The ID of the group.", - "name": "device-group-id", - "required": true, + "description": "The Id of the pre_shared_key, shadows the endpoint_name", "type": "string", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "_override": true, + "api_fieldname": "id", "entity_fieldname": "id", - "api_fieldname": "device-group-id", - "external_param": false, - "parameter_fieldname": "device-group-id", + "pattern": "^[ -~]{16,64}$", + "example": "my-endpoint-0001", + "name": "endpoint_name", + "in": "body", + "schema_param": true, "_key": "id" + }, + { + "type": "string", + "pattern": "^(0[xX])?[0-9a-fA-F]{32,64}$", + "description": "The secret of the PSK in hexadecimal. It is not case sensitive; 4a is same as 4A, and it is allowed with or without 0x in the beginning. The minimum length of the secret is 128 bits and maximum 256 bits.", + "example": "4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a", + "name": "secret_hex", + "in": "body", + "schema_param": true, + "entity_fieldname": "secret_hex", + "api_fieldname": "secret_hex", + "external_param": true, + "parameter_fieldname": "secret_hex", + "required": true, + "_key": "secret_hex" } ], "method": "post", - "mode": "remove_device", + "mode": "create", "responses": [ { - "description": "Success - device removed.", - "_key": "204" + "description": "Successfully created.", + "_key": "201" }, { - "description": "Bad request.", + "description": "Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT.", "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] + "type": "string" }, "_key": "400" }, { - "description": "Unauthorized.", + "description": "Authentication failure.", + "_key": "401" + }, + { + "description": "Forbidden. You need to read and accept the PSK license in Device Management Portal.", + "_key": "403" + }, + { + "description": "Conflict. The PSK for the endpoint already exists and cannot be overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT.", "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] + "type": "string" }, - "_key": "401" + "_key": "409" + } + ], + "path": "/v2/device-shared-keys", + "summary": "Upload a PSK to Pelion Device Management.", + "return_type": "pre_shared_key", + "return_info": { + "self": true, + "custom": false, + "type": "pre_shared_key" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Security", + "parameter_map": { + "endpoint_name": "id" + }, + "operation_id": "uploadPreSharedKey", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Remove a PSK.\n\n**Example:**\n\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 \\\n-H \"Authorization: Bearer \"\n```", + "field_renames": [], + "fields": [ + { + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, + "type": "string", + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "_key": "endpoint_name" }, { - "description": "Not found.", + "description": "The Id of the pre_shared_key, shadows the endpoint_name", + "type": "string", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "_override": true, + "api_fieldname": "id", + "entity_fieldname": "id", + "name": "endpoint_name", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Successfully deleted. Responds even if the endpoint does not have an associated PSK.", + "_key": "204" + }, + { + "description": "Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME.", "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] + "type": "string" }, - "_key": "404" + "_key": "400" + }, + { + "description": "Authentication failure.", + "_key": "401" } ], - "path": "/v3/device-groups/{device-group-id}/devices/remove/", - "summary": "Remove a device from a group.", - "return_type": "void", + "path": "/v2/device-shared-keys/{endpoint_name}", + "summary": "Remove a PSK.", + "return_type": "pre_shared_key", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "pre_shared_key" }, "x_filter": {}, "x_deprecation": null, @@ -40839,411 +61191,315 @@ "type", "filter" ], - "group_id": "Devices", + "group_id": "Security", "parameter_map": { - "device-group-id": "id" - }, - "operation_id": "Group_members_remove", - "spec": { - "return_type": "void" + "endpoint_name": "id" }, + "operation_id": "deletePreSharedKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "remove_device" + "_key": "delete" }, { - "description": "Modify the attributes of a group.", + "description": "Retrieve pre-shared keys (PSKs) with pagination. Default page size of 50 entries.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n-H \"Authorization: Bearer \"\n```", "field_renames": [], "fields": [ { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "name": "custom_attributes", - "in": "body", - "schema_param": true, - "parameter_fieldname": "custom_attributes", + "type": "string", + "description": "An offset token for fetching a specific page. Provided by the server.", + "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", "required": false, - "_key": "custom_attributes" + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", - "entity_fieldname": "description", - "name": "description", - "in": "body", - "schema_param": true, - "parameter_fieldname": "description", - "required": false, - "_key": "description" + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "_key": "endpoint_name" }, { + "description": "The Id of the pre_shared_key, shadows the endpoint_name", "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "_override": true, "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "device-group-id", - "in": "path", - "required": true, "_key": "id" }, { - "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "entity_fieldname": "name", - "name": "name", - "in": "body", - "schema_param": true, - "parameter_fieldname": "name", + "type": "integer", + "description": "The number of objects to retrieve on a page (2-1000). Values outside the range are set to the closest limit.", + "example": 50, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", "required": false, - "_key": "name" + "default": 50, + "minimum": 2, + "maximum": 1000, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" } ], - "method": "put", - "mode": "update", + "method": "get", + "mode": "list", "responses": [ { - "description": "Ok.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "The time the campaign was created.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", - "entity_fieldname": "custom_attributes", - "_key": "custom_attributes" - }, - { - "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "type": "integer", - "description": "The number of devices in this group.", - "example": 10, - "api_fieldname": "devices_count", - "entity_fieldname": "devices_count", - "_key": "devices_count" - }, - { - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always `device-group`.", - "example": "device-group", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "description": "The time the object was updated.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Devices", - "entity": "device_group" - } - }, - "_key": "200" - }, - { - "description": "Bad request.", + "description": "List of PSKs.", "schema": { "type": "object", "required": [ - "code", - "message", "object", - "request_id", - "type" + "limit", + "order", + "has_more", + "data" ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "An offset token for current page.", + "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004", + "api_fieldname": "after", + "entity_fieldname": "after", + "_key": "after" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "400" - }, - { - "description": "Unauthorized.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "description": "An offset token for fetching the next page. Note that exactly the same limit needs to be used on the request for fetching subsequent pages.", + "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005", + "api_fieldname": "continuation_marker", + "entity_fieldname": "continuation_marker", + "_key": "continuation_marker" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "Array of the PSK entries. The array is empty if there are no PSKs.", + "minLength": 0, "items": { "type": "object", "required": [ - "name", - "message" + "endpoint_name" ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "format": "date-time", + "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", + "example": "2017-07-21T17:32:28.012Z", + "_key": "created_at" }, { "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" + "pattern": "^[ -~]{16,64}$", + "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", + "example": "my-endpoint-0001", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, + "_key": "endpoint_name" } - ] + ], + "foreign_key": { + "group": "Security", + "entity": "pre_shared_key" + } }, - "_key": "fields" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "description": "More results are available.", + "example": true, + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" }, { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" + "type": "integer", + "description": "The value of limit query parameter from the request, or default if not specified.", + "example": 50, + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "The type of this API object is a \"list\".", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "description": "Record order based on creation time.", + "example": "DESC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "pre_shared_key" + } }, - "_key": "401" + "_key": "200" }, { - "description": "Not Found.", + "description": "Bad request. Contains the error as a string, either TOKEN_NOT_FOUND or INVALID_LIMIT.", + "_key": "400" + } + ], + "path": "/v2/device-shared-keys", + "summary": "List PSKs.", + "return_type": "paginated_response(pre_shared_key)", + "return_info": { + "self": true, + "custom": false, + "type": "pre_shared_key" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "order", + "has_more", + "continuation_marker", + "data" + ], + "foreign_key_priority": "self", + "group_id": "Security", + "parameter_map": { + "endpoint_name": "id" + }, + "operation_id": "listPreSharedKeys", + "pagination": true, + "foreign_key": { + "group": "Security", + "entity": "pre_shared_key" + }, + "request_content_type": "application/json", + "request_body": "json", + "_key": "list" + }, + { + "description": "Check if a PSK for an endpoint exists or not. The response does not contain the secret itself.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 \\\n-H \"Authorization: Bearer \"\n```", + "field_renames": [], + "fields": [ + { + "type": "string", + "pattern": "^[ -~]{16,64}$", + "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", + "example": "my-endpoint-0001", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "_key": "endpoint_name" + }, + { + "description": "The Id of the pre_shared_key, shadows the endpoint_name", + "type": "string", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "_override": true, + "api_fieldname": "id", + "entity_fieldname": "id", + "name": "endpoint_name", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Pre-shared key for the device (does not contain secret).", "schema": { "type": "object", "required": [ - "code", - "message", - "object", - "request_id", - "type" + "endpoint_name" ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "format": "date-time", + "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", + "example": "2017-07-21T17:32:28.012Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "pattern": "^[ -~]{16,64}$", + "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", + "example": "my-endpoint-0001", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "readOnly": false, + "_override": true, + "api_fieldname": "endpoint_name", + "entity_fieldname": "endpoint_name", + "_key": "endpoint_name" } - ] + ], + "foreign_key": { + "group": "Security", + "entity": "pre_shared_key" + } + }, + "_key": "200" + }, + { + "description": "Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME.", + "schema": { + "type": "string" }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "_key": "401" + }, + { + "description": "The PSK does not exist.", "_key": "404" } ], - "path": "/v3/device-groups/{device-group-id}/", - "summary": "Modify the attributes of a group.", - "return_type": "device_group", + "path": "/v2/device-shared-keys/{endpoint_name}", + "summary": "Get a PSK.", + "return_type": "pre_shared_key", "return_info": { "self": true, "custom": false, - "type": "device_group" + "type": "pre_shared_key" }, "x_filter": {}, "x_deprecation": null, @@ -41252,890 +61508,636 @@ "etag", "type", "filter", - "devices_count", - "created_at", - "updated_at" + "created_at" ], - "group_id": "Devices", + "group_id": "Security", "parameter_map": { - "device-group-id": "id" + "endpoint_name": "id" }, - "operation_id": "Group_update", + "operation_id": "getPreSharedKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "update" + "_key": "read" } ], "fields": [ { "type": "string", "format": "date-time", - "description": "The time the campaign was created.", - "example": "2017-05-22T12:37:55.576563Z", + "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", + "example": "2017-07-21T17:32:28.012Z", "api_fieldname": "created_at", "readOnly": true, "required": false, "_key": "created_at" }, { - "type": "object", - "maxProperties": 10, - "additionalProperties": { - "type": "string", - "maxLength": 128, - "pattern": "^[A-Za-z].*" - }, - "description": "Up to ten custom key-value attributes. Keys cannot begin with a number. Both key and value are limited to 128 characters. Updating this field replaces existing contents.", - "example": { - "key": "value" - }, - "api_fieldname": "custom_attributes", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", "readOnly": false, + "_override": true, + "type": "string", + "api_fieldname": "endpoint_name", + "pattern": "^[ -~]{16,64}$", + "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", + "example": "my-endpoint-0001", "required": false, - "_key": "custom_attributes" + "_key": "endpoint_name" }, { + "description": "The Id of the pre_shared_key, shadows the endpoint_name", "type": "string", - "maxLength": 2000, - "description": "The description of the group.", - "example": "Devices on the factory floor.", - "api_fieldname": "description", + "getter_custom_method": "pre_shared_key_id_getter", + "setter_custom_method": "pre_shared_key_id_setter", + "_override": true, + "api_fieldname": "id", "readOnly": false, "required": false, - "_key": "description" + "_key": "id" + } + ], + "field_renames": [], + "tags": [ + "Security and identity - pre-shared keys" + ], + "group_id": "Security", + "_key": "pre_shared_key" + }, + { + "swagger_models": [ + "SAML2Req" + ], + "primary_key_field": null, + "methods": [], + "fields": [ + { + "type": "string", + "format": "byte", + "maxLength": 65535, + "description": "Contains an entity descriptor document for the identity provider. Can be used as an alternative method to provide the identity provider's attributes.", + "api_fieldname": "entity_descriptor", + "readOnly": true, + "required": false, + "_key": "entity_descriptor" }, { - "type": "integer", - "description": "The number of devices in this group.", - "example": 10, - "api_fieldname": "devices_count", + "type": "string", + "description": "Entity ID of the identity provider.", + "api_fieldname": "idp_entity_id", "readOnly": true, "required": false, - "_key": "devices_count" + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider. Certificates must be in PEM format.", + "items": { + "type": "string" + }, + "api_fieldname": "idp_x509_certs", + "readOnly": true, + "required": false, + "_key": "idp_x509_certs" }, { "type": "string", - "description": "The group ID.", - "example": "015c3029f6f7000000000001001000c3", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" + "description": "URL of the identity provider's SLO endpoint.", + "api_fieldname": "slo_endpoint", + "readOnly": true, + "required": false, + "_key": "slo_endpoint" }, { "type": "string", - "maxLength": 128, - "description": "Name of the group.", - "example": "My devices", - "api_fieldname": "name", - "readOnly": false, + "description": "Entity ID of the service provider. We recommend that you leave it empty and let the system generate it.", + "api_fieldname": "sp_entity_id", + "readOnly": true, "required": false, - "_key": "name" + "_key": "sp_entity_id" }, { "type": "string", - "format": "date-time", - "description": "The time the object was updated.", - "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "updated_at", + "description": "URL of the identity provider's SSO endpoint.", + "api_fieldname": "sso_endpoint", "readOnly": true, "required": false, - "_key": "updated_at" + "_key": "sso_endpoint" } ], "field_renames": [], - "tags": [ - "Device directory - groups" - ], - "group_id": "Devices", - "_key": "device_group" + "tags": [], + "group_id": "Accounts", + "_key": "saml2_request" }, { "swagger_models": [ - "FirmwareImage", - "FirmwareImagePage" + "ServerCredentialsResponseData" ], "primary_key_field": "id", "methods": [ { - "description": "Create a firmware image.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - } - ], - "fields": [ - { - "description": "The description of the object", - "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "parameter_fieldname": "description", - "in": "stream", - "required": false, - "_key": "description" - }, - { - "description": "The firmware image file to upload", - "in": "stream", - "name": "datafile", - "required": true, - "type": "file", - "entity_fieldname": "firmware_image_file", - "api_fieldname": "datafile", - "external_param": true, - "parameter_fieldname": "datafile", - "_key": "firmware_image_file" - }, - { - "description": "The firmware image name", - "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", - "in": "stream", - "required": false, - "_key": "name" - } - ], - "method": "post", - "mode": "create", + "description": "Return bootstrap server credentials for client to connect to bootstrap server.\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/bootstrap \\\n-H \"Authorization: Bearer \"\n```", + "field_renames": [], + "fields": [], + "method": "get", + "mode": "get_bootstrap", "responses": [ { - "description": "Firmware image created. The API gateway enforces the account-specific file size.", + "description": "Bootstrap server credentials fetched successfully.", "schema": { + "type": "object", "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { - "description": "The firmware image file URL", - "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", - "entity_fieldname": "datafile_url", - "_key": "datafile" - }, - { - "description": "The checksum (sha256) generated for the datafile", - "type": "string", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "datafile_checksum", - "entity_fieldname": "datafile_checksum", - "_key": "datafile_checksum" - }, - { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "api_fieldname": "datafile_size", - "entity_fieldname": "datafile_size", - "_key": "datafile_size" - }, - { - "description": "The description of the object", - "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", + "description": "API resource entity version.", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { - "description": "The firmware image ID", "type": "string", - "example": "00000000000000000000000000000000", + "description": "Unique entity ID.", "api_fieldname": "id", "entity_fieldname": "id", "_key": "id" }, { - "description": "The firmware image name", - "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "description": "The API resource entity", "type": "string", - "example": "firmware-image", + "description": "Entity name: always `server-credentials`.", "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", + "api_fieldname": "server_certificate", + "entity_fieldname": "server_certificate", + "_key": "server_certificate" + }, + { + "type": "string", + "description": "Server URI that the client connects to.", + "api_fieldname": "server_uri", + "entity_fieldname": "server_uri", + "_key": "server_uri" } ], - "required": [ - "created_at", - "datafile", - "datafile_checksum", - "description", - "etag", - "id", - "name", - "object", - "updated_at" - ], "foreign_key": { - "group": "Device_Update", - "entity": "firmware_image" + "group": "Security", + "entity": "server_credentials" } }, - "_key": "201" - }, - { - "description": "Cannot validate the data used to create the firmware image.", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Forbidden", - "_key": "403" - }, - { - "description": "Firmware image too large.", - "_key": "413" - } - ], - "path": "/v3/firmware-images/", - "summary": "Create an image", - "return_type": "firmware_image", - "return_info": { - "self": true, - "custom": false, - "type": "firmware_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "datafile_checksum", - "datafile_size", - "id", - "updated_at", - "datafile_url" - ], - "group_id": "Device_Update", - "parameter_map": { - "image_id": "id", - "datafile": "firmware_image_file" - }, - "operation_id": "Firmware_Image_create", - "notes": "This is not a standard create method as it uploads a file which creates an entity which contains URIs to the uploaded file.", - "unaggregated": true, - "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "create" - }, - { - "description": "Delete a firmware image.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - } - ], - "fields": [ - { - "description": "The firmware image ID", - "in": "path", - "name": "image_id", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "image_id", - "external_param": false, - "parameter_fieldname": "image_id", - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Firmware image deleted", - "_key": "204" - }, - { - "description": "Bad Request", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Firmware image not found", - "_key": "404" - } - ], - "path": "/v3/firmware-images/{image_id}/", - "summary": "Delete an image", - "return_type": "firmware_image", - "return_info": { - "self": true, - "custom": false, - "type": "firmware_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Device_Update", - "parameter_map": { - "image_id": "id" - }, - "operation_id": "Firmware_Image_destroy", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "List all firmware images.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - } - ], - "fields": [ - { - "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "description": "The ID of the the item after which to retrieve the next page", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "A comma-separated list of data fields to return. Currently supported: total_count", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "format": "int32", - "type": "integer", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "in": "query", - "name": "limit", - "minimum": 2, - "maximum": 1000, - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" + "examples": [ + { + "object": "server-credentials", + "id": "015fee4431fd38c98640fbfb00000000", + "etag": "1", + "created_at": "2017-12-11T14:22:20.009Z", + "server_certificate": "-----BEGIN CERTIFICATE-----\\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\\n-----END CERTIFICATE-----", + "server_uri": "coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000", + "_key": "Success" + } + ], + "_key": "200" }, { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "ASC or DESC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "enum_reference": "firmware_image_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ + "description": "Bad request.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, { - "description": "Request successful", + "description": "Invalid access token.", "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { + "type": "array", + "description": "Request fields which failed validation.", "items": { + "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "created_at" - }, - { - "description": "The firmware image file URL", - "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "_key": "datafile" - }, - { - "description": "The checksum (sha256) generated for the datafile", - "type": "string", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "_key": "datafile_checksum" - }, - { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "_key": "datafile_size" - }, - { - "description": "The description of the object", - "type": "string", - "maxLength": 2000, - "example": "", - "_key": "description" - }, - { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "etag" - }, - { - "description": "The firmware image ID", "type": "string", - "example": "00000000000000000000000000000000", - "_key": "id" + "description": "Message describing the error condition.", + "_key": "message" }, { - "description": "The firmware image name", "type": "string", - "maxLength": 128, - "example": "", + "description": "Name of the field which caused the error.", "_key": "name" - }, - { - "description": "The API resource entity", - "type": "string", - "example": "firmware-image", - "_key": "object" - }, - { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "updated_at" } - ], - "required": [ - "created_at", - "datafile", - "datafile_checksum", - "description", - "etag", - "id", - "name", - "object", - "updated_at" - ], - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_image" - } + ] }, - "type": "array", - "example": "[]", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "format": "int32", - "type": "integer", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "The order of the records based on creation time, `ASC` or `DESC`; by default `ASC`.", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "format": "int32", - "type": "integer", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_image" - } + ] }, - "_key": "200" - }, - { - "description": "Bad Request", - "_key": "400" - }, - { - "description": "Not authenticated", + "examples": [ + { + "object": "error", + "code": 401, + "type": "invalid_auth", + "message": "Invalid access token.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "_key": "Authentication Error" + } + ], "_key": "401" - }, - { - "description": "Unable to find content", - "_key": "404" } ], - "path": "/v3/firmware-images/", - "summary": "List all images", - "return_type": "paginated_response(firmware_image)", + "path": "/v3/server-credentials/bootstrap", + "summary": "Fetch bootstrap server credentials.", + "return_type": "server_credentials", "return_info": { "self": true, "custom": false, - "type": "firmware_image" - }, - "x_filter": { - "created_at": [ - "in", - "nin", - "lte", - "gte" - ], - "datafile_url": [ - "eq", - "neq", - "in", - "nin" - ], - "datafile_checksum": [ - "eq", - "neq", - "in", - "nin" - ], - "datafile_size": [ - "eq", - "neq", - "in", - "nin" - ], - "description": [ - "eq", - "neq", - "in", - "nin" - ], - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "name": [ - "eq", - "neq", - "in", - "nin" - ], - "updated_at": [ - "in", - "nin", - "lte", - "gte" - ] + "type": "server_credentials" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "data", - "has_more", - "total_count", - "created_at__in", - "created_at__nin", - "created_at__lte", - "created_at__gte", - "datafile__eq", - "datafile__neq", - "datafile__in", - "datafile__nin", - "datafile_checksum__eq", - "datafile_checksum__neq", - "datafile_checksum__in", - "datafile_checksum__nin", - "datafile_size__eq", - "datafile_size__neq", - "datafile_size__in", - "datafile_size__nin", - "description__eq", - "description__neq", - "description__in", - "description__nin", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "name__eq", - "name__neq", - "name__in", - "name__nin", - "updated_at__in", - "updated_at__nin", - "updated_at__lte", - "updated_at__gte" + "id", + "created_at", + "server_certificate", + "server_uri" ], - "foreign_key_priority": "self", - "group_id": "Device_Update", - "parameter_map": { - "image_id": "id" - }, - "operation_id": "Firmware_Image_list", - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_image" - }, + "group_id": "Security", + "operation_id": "getBootstrapServerCredentials", + "additional_operations": [ + { + "operation_id": "getAllServerCredentials", + "notes": "The information returned by this endpoint can be obtained by calling `get_bootstrap`." + } + ], + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "get_bootstrap" }, { - "description": "Retrieve a firmware image.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - } - ], - "fields": [ - { - "description": "The firmware image ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "image_id", - "in": "path", - "required": true, - "_key": "id" - } - ], + "description": "Return LwM2M server credentials for client to connect to LwM2M server.\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/lwm2m \\\n-H \"Authorization: Bearer \"\n```", + "field_renames": [], + "fields": [], "method": "get", - "mode": "read", + "mode": "get_lwm2m", "responses": [ { - "description": "Retrieved result successfully", + "description": "LwM2M server credentials fetched successfully.", "schema": { + "type": "object", "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { - "description": "The firmware image file URL", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", - "entity_fieldname": "datafile_url", - "_key": "datafile" + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { - "description": "The checksum (sha256) generated for the datafile", "type": "string", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "datafile_checksum", - "entity_fieldname": "datafile_checksum", - "_key": "datafile_checksum" + "description": "Unique entity ID.", + "api_fieldname": "id", + "entity_fieldname": "id", + "_key": "id" }, { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "api_fieldname": "datafile_size", - "entity_fieldname": "datafile_size", - "_key": "datafile_size" + "type": "string", + "description": "Entity name: always `server-credentials`.", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { - "description": "The description of the object", "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", + "api_fieldname": "server_certificate", + "entity_fieldname": "server_certificate", + "_key": "server_certificate" }, { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "Server URI that the client connects to.", + "api_fieldname": "server_uri", + "entity_fieldname": "server_uri", + "_key": "server_uri" + } + ], + "foreign_key": { + "group": "Security", + "entity": "server_credentials" + } + }, + "examples": [ + { + "object": "server-credentials", + "id": "015fee4431fd38c98640fbfb00000000", + "etag": "1", + "created_at": "2017-12-11T14:22:20.009Z", + "server_certificate": "-----BEGIN CERTIFICATE-----\\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\\n-----END CERTIFICATE-----", + "server_uri": "coaps://mds.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000", + "_key": "Success" + } + ], + "_key": "200" + }, + { + "description": "Bad request.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "description": "The firmware image ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { - "description": "The firmware image name", "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { - "description": "The API resource entity", "type": "string", - "example": "firmware-image", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], + ] + }, + "_key": "400" + }, + { + "description": "Invalid access token.", + "schema": { + "type": "object", "required": [ - "created_at", - "datafile", - "datafile_checksum", - "description", - "etag", - "id", - "name", + "code", + "message", "object", - "updated_at" + "request_id", + "type" ], - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_image" - } + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] }, - "_key": "200" - }, - { - "description": "Bad Request", - "_key": "400" - }, - { - "description": "Not authenticated", + "examples": [ + { + "object": "error", + "code": 401, + "type": "invalid_auth", + "message": "Invalid access token.", + "request_id": "015fee4431fd38c98640fbfb00000000", + "_key": "Authentication Error" + } + ], "_key": "401" - }, - { - "description": "Firmware image can't be found", - "_key": "404" } ], - "path": "/v3/firmware-images/{image_id}/", - "summary": "Get an image", - "return_type": "firmware_image", + "path": "/v3/server-credentials/lwm2m", + "summary": "Fetch LwM2M server credentials.", + "return_type": "server_credentials", "return_info": { "self": true, "custom": false, - "type": "firmware_image" + "type": "server_credentials" }, "x_filter": {}, "x_deprecation": null, @@ -42144,1170 +62146,663 @@ "etag", "type", "filter", + "id", "created_at", - "datafile_checksum", - "datafile_size", - "description", - "name", - "updated_at", - "datafile_url" + "server_certificate", + "server_uri" + ], + "group_id": "Security", + "operation_id": "getL2M2MServerCredentials", + "additional_operations": [ + { + "operation_id": "getAllServerCredentials", + "notes": "The information returned by this endpoint can be obtained by calling `get_lwm2m`." + } ], - "group_id": "Device_Update", - "parameter_map": { - "image_id": "id" - }, - "operation_id": "Firmware_Image_retrieve", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "get_lwm2m" } ], "fields": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", + "format": "date-time", + "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "readOnly": true, "required": false, "_key": "created_at" }, { - "description": "The checksum (sha256) generated for the datafile", - "type": "string", - "example": "0000000000000000000000000000000000000000000000000000000000000000", - "api_fieldname": "datafile_checksum", - "readOnly": true, - "required": false, - "_key": "datafile_checksum" - }, - { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "api_fieldname": "datafile_size", - "readOnly": true, - "required": false, - "_key": "datafile_size" - }, - { - "description": "The firmware image file URL", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", + "description": "Unique entity ID.", + "api_fieldname": "id", "readOnly": true, "required": false, - "_key": "datafile_url" - }, - { - "description": "The description of the object", - "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "readOnly": false, - "required": false, - "_key": "description" - }, - { - "description": "The firmware image ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, "_key": "id" }, { - "description": "The firmware image name", "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "readOnly": false, + "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", + "api_fieldname": "server_certificate", + "readOnly": true, "required": false, - "_key": "name" + "_key": "server_certificate" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "updated_at", + "description": "Server URI that the client connects to.", + "api_fieldname": "server_uri", "readOnly": true, "required": false, - "_key": "updated_at" + "_key": "server_uri" } ], - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - } + "field_renames": [], + "tags": [ + "Security and identity - server credentials" ], - "tags": [], - "group_id": "Device_Update", - "_key": "firmware_image" + "group_id": "Security", + "_key": "server_credentials" }, { "swagger_models": [ - "FirmwareManifest", - "FirmwareManifestPage" + "ApiKeyInfoReq", + "ApiKeyInfoResp", + "ApiKeyUpdateReq", + "GroupSummaryList" ], "primary_key_field": "id", "methods": [ { - "description": "Upload a firmware manifest. The API enforces a maximum size of manifests of 2 KB.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - }, - { - "api_fieldname": "key_table", - "_key": "key_table_url" - } - ], + "description": "Create a new API key. There is no default value for the owner ID, and it must be from the same account where the new API key is created.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"MyKey1\"}'\n```", + "field_renames": [], "fields": [ { - "description": "The description of the firmware manifest", "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "parameter_fieldname": "description", - "in": "stream", - "required": false, - "_key": "description" - }, - { - "description": "The manifest file to create. The API gateway enforces the account-specific file size.", - "in": "stream", - "name": "datafile", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "parameter_fieldname": "account_id", + "in": "path", "required": true, - "type": "file", - "entity_fieldname": "firmware_manifest_file", - "api_fieldname": "datafile", - "external_param": true, - "parameter_fieldname": "datafile", - "_key": "firmware_manifest_file" + "_key": "account_id" }, { - "description": "The key table of pre-shared keys for devices", - "in": "stream", - "name": "key_table", + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", "required": false, - "type": "file", - "entity_fieldname": "key_table_file", - "api_fieldname": "key_table", - "external_param": true, - "parameter_fieldname": "key_table", - "_key": "key_table_file" + "_key": "groups" }, { - "description": "The name of the object", "type": "string", - "maxLength": 128, - "example": "", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", "api_fieldname": "name", "entity_fieldname": "name", "parameter_fieldname": "name", - "in": "stream", + "in": "body", "required": false, "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "subtenant_api_key_status_enum", + "_key": "status" } ], "method": "post", "mode": "create", "responses": [ { - "description": "Created", + "description": "New entity created.", "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "description": "The URL of the firmware manifest binary", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", - "entity_fieldname": "datafile_url", - "_key": "datafile" + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" }, { - "description": "The size of the datafile in bytes", - "format": "int64", "type": "integer", - "api_fieldname": "datafile_size", - "entity_fieldname": "datafile_size", - "_key": "datafile_size" - }, - { - "description": "The description of the firmware manifest", - "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" - }, - { - "description": "The class of the device", - "type": "string", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "device_class", - "entity_fieldname": "device_class", - "_key": "device_class" + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" }, { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", + "example": "1", + "description": "API resource entity version.", "api_fieldname": "etag", "entity_fieldname": "etag", "_key": "etag" }, { - "description": "The firmware manifest ID", + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" + }, + { "type": "string", - "example": "00000000000000000000000000000000", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, "_key": "id" }, { - "description": "The key table of pre-shared keys for devices", - "type": "string", - "format": "uri", - "example": "http://example.com", - "api_fieldname": "key_table", - "entity_fieldname": "key_table_url", - "_key": "key_table" - }, - { - "description": "The name of the object", - "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "description": "The API resource entity", "type": "string", - "example": "firmware-manifest", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" }, { - "description": "The firmware manifest version as a timestamp", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "timestamp", - "entity_fieldname": "timestamp", - "_key": "timestamp" + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "required": [ - "created_at", - "datafile", - "description", - "device_class", - "etag", - "id", - "name", - "object", - "timestamp", - "updated_at" - ], - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_manifest" - } - }, - "_key": "201" - }, - { - "description": "Validation error. The data used to create the firmware manifest did not validate and/or the manifest uploaded exceeded 2 KB in size.\n", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Forbidden", - "_key": "403" - } - ], - "path": "/v3/firmware-manifests/", - "summary": "Upload a manifest", - "return_type": "firmware_manifest", - "return_info": { - "self": true, - "custom": false, - "type": "firmware_manifest" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "created_at", - "datafile_size", - "device_class", - "id", - "timestamp", - "updated_at", - "datafile_url", - "key_table_url" - ], - "group_id": "Device_Update", - "parameter_map": { - "manifest_id": "id", - "datafile": "firmware_manifest_file", - "key_table": "key_table_file" - }, - "operation_id": "Firmware_Manifest_create", - "notes": "This is not a standard create method as it uploads a file (or files) which creates an entity which contains URIs to the uploaded file(s).", - "unaggregated": true, - "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "create" - }, - { - "description": "Delete a firmware manifest.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - }, - { - "api_fieldname": "key_table", - "_key": "key_table_url" - } - ], - "fields": [ - { - "description": "The firmware manifest ID", - "in": "path", - "name": "manifest_id", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "manifest_id", - "external_param": false, - "parameter_fieldname": "manifest_id", - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Firmware manifest deleted", - "_key": "204" - }, - { - "description": "Bad Request", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Firmware manifest not found", - "_key": "404" - } - ], - "path": "/v3/firmware-manifests/{manifest_id}/", - "summary": "Delete a manifest", - "return_type": "firmware_manifest", - "return_info": { - "self": true, - "custom": false, - "type": "firmware_manifest" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Device_Update", - "parameter_map": { - "manifest_id": "id" - }, - "operation_id": "Firmware_Manifest_destroy", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "List firmware manifests.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - }, - { - "api_fieldname": "key_table", - "_key": "key_table_url" - } - ], - "fields": [ - { - "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "description": "The ID of the the item after which to retrieve the next page", - "in": "query", - "name": "after", - "external_param": true, - "parameter_fieldname": "after", - "required": false, - "_key": "after" - }, - { - "description": "A comma-separated list of data fields to return. Currently supported: total_count", - "in": "query", - "name": "include", - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "required": false, - "_key": "include" - }, - { - "format": "int32", - "type": "integer", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "description": "How many objects to retrieve in the page. The minimum limit is 2 and the maximum is 1000. Limit values outside of this range are set to the closest limit.", - "in": "query", - "name": "limit", - "minimum": 2, - "maximum": 1000, - "external_param": true, - "parameter_fieldname": "limit", - "required": false, - "_key": "limit" + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } + }, + "_key": "201" }, { - "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "ASC or DESC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "in": "query", - "name": "order", - "external_param": true, - "parameter_fieldname": "order", - "required": false, - "enum_reference": "firmware_manifest_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "Request successful", + "description": "Error in input data, for example, missing API key name.", "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "type": "string", - "example": null, - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { + "type": "array", + "description": "Request fields which failed validation.", "items": { + "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "created_at" - }, - { - "description": "The URL of the firmware manifest binary", - "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "_key": "datafile" - }, - { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "_key": "datafile_size" - }, - { - "description": "The description of the firmware manifest", - "type": "string", - "maxLength": 2000, - "example": "", - "_key": "description" - }, - { - "description": "The class of the device", - "type": "string", - "example": "00000000-0000-0000-0000-000000000000", - "_key": "device_class" - }, - { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "_key": "etag" - }, - { - "description": "The firmware manifest ID", - "type": "string", - "example": "00000000000000000000000000000000", - "_key": "id" - }, - { - "description": "The key table of pre-shared keys for devices", "type": "string", - "format": "uri", - "example": "http://example.com", - "_key": "key_table" + "description": "Message describing the error condition.", + "_key": "message" }, { - "description": "The name of the object", "type": "string", - "maxLength": 128, - "example": "", + "description": "Name of the field which caused the error.", "_key": "name" - }, - { - "description": "The API resource entity", - "type": "string", - "example": "firmware-manifest", - "_key": "object" - }, + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Authentication failure.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ { - "description": "The firmware manifest version as a timestamp", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "_key": "timestamp" + "description": "Message describing the error condition.", + "_key": "message" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "_key": "updated_at" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "required": [ - "created_at", - "datafile", - "description", - "device_class", - "etag", - "id", - "name", - "object", - "timestamp", - "updated_at" - ], - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_manifest" - } + ] }, - "type": "array", - "example": "[]", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "format": "int32", - "type": "integer", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "enum": [ - "ASC", - "DESC" - ], - "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "format": "int32", - "type": "integer", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_manifest" - } + ] }, - "_key": "200" - }, - { - "description": "Bad Request", - "_key": "400" - }, - { - "description": "Not authenticated", "_key": "401" }, { - "description": "Unable to find content", - "_key": "404" - } - ], - "path": "/v3/firmware-manifests/", - "summary": "List manifests", - "return_type": "paginated_response(firmware_manifest)", - "return_info": { - "self": true, - "custom": false, - "type": "firmware_manifest" - }, - "x_filter": { - "created_at": [ - "in", - "nin", - "lte", - "gte" - ], - "datafile_url": [ - "eq", - "neq", - "in", - "nin" - ], - "datafile_size": [ - "eq", - "neq", - "in", - "nin" - ], - "description": [ - "eq", - "neq", - "in", - "nin" - ], - "device_class": [ - "eq", - "neq", - "in", - "nin" - ], - "id": [ - "eq", - "neq", - "in", - "nin" - ], - "name": [ - "eq", - "neq", - "in", - "nin" - ], - "timestamp": [ - "in", - "nin", - "lte", - "gte" - ], - "updated_at": [ - "in", - "nin", - "lte", - "gte" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "data", - "has_more", - "total_count", - "created_at__in", - "created_at__nin", - "created_at__lte", - "created_at__gte", - "datafile__eq", - "datafile__neq", - "datafile__in", - "datafile__nin", - "datafile_size__eq", - "datafile_size__neq", - "datafile_size__in", - "datafile_size__nin", - "description__eq", - "description__neq", - "description__in", - "description__nin", - "device_class__eq", - "device_class__neq", - "device_class__in", - "device_class__nin", - "id__eq", - "id__neq", - "id__in", - "id__nin", - "name__eq", - "name__neq", - "name__in", - "name__nin", - "timestamp__in", - "timestamp__nin", - "timestamp__lte", - "timestamp__gte", - "updated_at__in", - "updated_at__nin", - "updated_at__lte", - "updated_at__gte" - ], - "foreign_key_priority": "self", - "group_id": "Device_Update", - "parameter_map": { - "manifest_id": "id" - }, - "operation_id": "Firmware_Manifest_list", - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_manifest" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "Retrieve a firmware manifest.", - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" - }, - { - "api_fieldname": "key_table", - "_key": "key_table_url" - } - ], - "fields": [ - { - "description": "The firmware manifest ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "manifest_id", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Retrieved result successfully", + "description": "Forbidden.", "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], "properties": [ { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "description": "The URL of the firmware manifest binary", - "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", - "entity_fieldname": "datafile_url", - "_key": "datafile" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "api_fieldname": "datafile_size", - "entity_fieldname": "datafile_size", - "_key": "datafile_size" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { - "description": "The description of the firmware manifest", "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "entity_fieldname": "description", - "_key": "description" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, { - "description": "The class of the device", "type": "string", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "device_class", - "entity_fieldname": "device_class", - "_key": "device_class" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "description": "The entity instance signature", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "403" + }, + { + "description": "An account with the given ID does not exist.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { - "description": "The firmware manifest ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "description": "The key table of pre-shared keys for devices", - "type": "string", - "format": "uri", - "example": "http://example.com", - "api_fieldname": "key_table", - "entity_fieldname": "key_table_url", - "_key": "key_table" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { - "description": "The name of the object", "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { - "description": "The API resource entity", "type": "string", - "example": "firmware-manifest", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { - "description": "The firmware manifest version as a timestamp", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "timestamp", - "entity_fieldname": "timestamp", - "_key": "timestamp" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "required": [ - "created_at", - "datafile", - "description", - "device_class", - "etag", - "id", - "name", - "object", - "timestamp", - "updated_at" - ], - "foreign_key": { - "group": "Device_Update", - "entity": "firmware_manifest" - } + ] }, - "_key": "200" - }, - { - "description": "Bad request", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Firmware manifest can't be found", "_key": "404" } ], - "path": "/v3/firmware-manifests/{manifest_id}/", - "summary": "Get a manifest", - "return_type": "firmware_manifest", + "path": "/v3/accounts/{account_id}/api-keys", + "summary": "Create a new API key.", + "return_type": "subtenant_api_key", "return_info": { "self": true, "custom": false, - "type": "firmware_manifest" + "type": "subtenant_api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys", + "links": [] + }, "drop_fields": [ "object", "etag", "type", "filter", + "id", "created_at", - "datafile_size", - "description", - "device_class", - "name", - "timestamp", "updated_at", - "datafile_url", - "key_table_url" + "key", + "creation_time", + "last_login_time" ], - "group_id": "Device_Update", + "group_id": "Accounts", "parameter_map": { - "manifest_id": "id" + "apikey_id": "id" }, - "operation_id": "Firmware_Manifest_retrieve", + "operation_id": "createAccountApiKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "description": "The time the object was created", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "description": "The size of the datafile in bytes", - "format": "int64", - "type": "integer", - "api_fieldname": "datafile_size", - "readOnly": true, - "required": false, - "_key": "datafile_size" - }, - { - "description": "The URL of the firmware manifest binary", - "type": "string", - "example": "http://example.com/00000000000000000000000000000000", - "api_fieldname": "datafile", - "readOnly": true, - "required": false, - "_key": "datafile_url" - }, - { - "description": "The description of the firmware manifest", - "type": "string", - "maxLength": 2000, - "example": "", - "api_fieldname": "description", - "readOnly": false, - "required": false, - "_key": "description" - }, - { - "description": "The class of the device", - "type": "string", - "example": "00000000-0000-0000-0000-000000000000", - "api_fieldname": "device_class", - "readOnly": true, - "required": false, - "_key": "device_class" - }, - { - "description": "The firmware manifest ID", - "type": "string", - "example": "00000000000000000000000000000000", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "description": "The key table of pre-shared keys for devices", - "type": "string", - "format": "uri", - "example": "http://example.com", - "api_fieldname": "key_table", - "readOnly": true, - "required": false, - "_key": "key_table_url" - }, - { - "description": "The name of the object", - "type": "string", - "maxLength": 128, - "example": "", - "api_fieldname": "name", - "readOnly": false, - "required": false, - "_key": "name" - }, - { - "description": "The firmware manifest version as a timestamp", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "timestamp", - "readOnly": true, - "required": false, - "_key": "timestamp" - }, - { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [ - { - "api_fieldname": "datafile", - "_key": "datafile_url" + "_key": "create" }, { - "api_fieldname": "key_table", - "_key": "key_table_url" - } - ], - "tags": [], - "group_id": "Device_Update", - "_key": "firmware_manifest" - }, - { - "swagger_models": [ - "BrandingColor", - "BrandingColorList" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Resets the branding color to its light theme default.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete an API key.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "is_primary_key": true, - "_override": true, + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "name": "reference", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "name": "apikey_id", "in": "path", - "description": "The name of the branding color.", + "description": "The ID of the API key to delete.", "required": true, - "enum_reference": "light_theme_color_reference_enum", - "_key": "reference" + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "apikey_id", + "external_param": false, + "parameter_fieldname": "apikey_id", + "_key": "id" } ], "method": "delete", @@ -43464,7 +62959,7 @@ "_key": "403" }, { - "description": "Color not found.", + "description": "An account or API key with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -43537,47 +63032,127 @@ "_key": "404" } ], - "path": "/v3/branding-colors/light/{reference}", - "summary": "Reset branding color to default.", - "return_type": "void", + "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", + "summary": "Delete the API key.", + "return_type": "subtenant_api_key", "return_info": { - "self": false, - "custom": true, - "type": "void" + "self": true, + "custom": false, + "type": "subtenant_api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, "drop_fields": [ "object", "etag", "type", "filter" ], - "group_id": "Branding", - "operation_id": "resetLightColor", - "spec": { - "return_type": "void" + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" }, + "operation_id": "deleteAccountApiKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "delete" }, { - "description": "Retrieve the light theme branding colors.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of policy groups associated with an API key.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "is_primary_key": true, - "_override": true, + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "_key": "reference" + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "apikey_id", + "in": "path", + "description": "The ID of the API key.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "apikey_id", + "external_param": false, + "parameter_fieldname": "apikey_id", + "_key": "id" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "subtenant_api_key_order_enum", + "_key": "order" } ], "method": "get", - "mode": "list", + "mode": "policy_groups", "responses": [ { "description": "Successful operation.", @@ -43594,10 +63169,15 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", "_key": "after" }, { @@ -43605,60 +63185,97 @@ "description": "A list of entities.", "items": { "type": "object", + "required": [ + "account_id", + "apikey_count", + "etag", + "id", + "name", + "object", + "user_count" + ], "properties": [ { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "_key": "color" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" }, { "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "_key": "object" + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" }, { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" + "group" ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "_key": "reference" + "_key": "object" }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, + "description": "Last update UTC time RFC3339.", "_key": "updated_at" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "_key": "user_count" } ], + "description": "This object contains basic information about groups.", "foreign_key": { - "group": "Branding", - "entity": "dark_theme_color" + "group": "Accounts", + "entity": "subtenant_policy_group" } }, "api_fieldname": "data", @@ -43677,9 +63294,15 @@ "type": "integer", "format": "int32", "example": 50, - "description": "The number of results to return, or equal to `total_count`.", + "description": "The number of results to return (2-1000). Default 50.", "api_fieldname": "limit", "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", "_key": "limit" }, { @@ -43694,13 +63317,20 @@ }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" ], "api_fieldname": "order", "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "api_key_order_enum", "_key": "order" }, { @@ -43715,314 +63345,8 @@ ], "pagination": true, "foreign_key": { - "group": "Branding", - "entity": "light_theme_color" - } - }, - "_key": "200" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "403" - } - ], - "path": "/v3/branding-colors/light", - "summary": "Get light theme branding colors.", - "return_type": "paginated_response(light_theme_color)", - "return_info": { - "self": true, - "custom": false, - "type": "light_theme_color" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "limit", - "after", - "order", - "total_count", - "has_more", - "data" - ], - "foreign_key_priority": "self", - "group_id": "Branding", - "operation_id": "getLightColors", - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "light_theme_color" - }, - "request_content_type": "application/json", - "request_body": "json", - "_key": "list" - }, - { - "description": "Retrieve the requested light theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "light_theme_color_reference_enum", - "_key": "reference" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "name": "object", - "in": "body", - "schema_param": true, - "external_param": true, - "parameter_fieldname": "object", - "required": false, - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_color" + "group": "Accounts", + "entity": "subtenant_policy_group" } }, "_key": "200" @@ -44174,7 +63498,7 @@ "_key": "403" }, { - "description": "Color not found.", + "description": "An account or API key with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -44247,253 +63571,231 @@ "_key": "404" } ], - "path": "/v3/branding-colors/light/{reference}", - "summary": "Get light theme branding color.", - "return_type": "light_theme_color", + "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}/groups", + "summary": "Get policy groups of an API key.", + "return_type": "paginated_response(subtenant_policy_group)", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "light_theme_color" + "type": "subtenant_policy_group" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups", + "links": [] + }, "drop_fields": [ "object", "etag", "type", "filter", - "color", - "updated_at" + "total_count", + "has_more", + "data" ], - "group_id": "Branding", - "operation_id": "getLightColor", - "pagination": false, + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getGroupsOfAccountApikey", + "foreign_key": { + "entity": "subtenant_policy_group" + }, + "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "policy_groups" }, { - "description": "Update light theme branding color.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"purple\" }'\n```", + "description": "Retrieve details of an API key.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n -H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "parameter_fieldname": "account_id", "in": "path", "required": true, - "enum_reference": "light_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "method": "put", - "mode": "update", - "responses": [ - { - "description": "Color has been set successfully.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "name": "object", - "in": "body", - "schema_param": true, - "external_param": true, - "parameter_fieldname": "object", - "required": false, - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_color" - } - }, - "_key": "200" + "_key": "account_id" }, { - "description": "Error in input data format.", + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", "schema": { "type": "object", "required": [ - "code", - "message", - "object", - "request_id", - "type" + "etag", + "id", + "key", + "name", + "object" ], "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of group IDs this API key belongs to.", "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] + "type": "string" }, - "_key": "fields" + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" }, { "type": "string", - "description": "Entity name, always `error`.", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", "enum": [ - "error" + "api-key" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } }, - "_key": "400" + "_key": "200" }, { "description": "Authentication failure.", @@ -44642,7 +63944,7 @@ "_key": "403" }, { - "description": "Color not found.", + "description": "An account or API key with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -44715,170 +64017,360 @@ "_key": "404" } ], - "path": "/v3/branding-colors/light/{reference}", - "summary": "Updates light theme branding color.", - "return_type": "light_theme_color", + "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", + "summary": "Get API key details.", + "return_type": "subtenant_api_key", "return_info": { "self": true, "custom": false, - "type": "light_theme_color" + "type": "subtenant_api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, "drop_fields": [ "object", "etag", "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "setLightColor", - "additional_operations": [ - { - "operation_id": "bulkSetLightColors", - "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." - } + "filter", + "created_at", + "updated_at", + "key", + "name", + "groups", + "owner", + "status", + "creation_time", + "last_login_time" ], + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "getAccountApiKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "update" - } - ], - "fields": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "readOnly": false, - "_key": "color" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "name": "reference", - "in": "path", - "required": false, - "enum_reference": "light_theme_color_reference_enum", - "readOnly": false, - "_key": "reference" + "_key": "read" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "User interface configuration - colors" - ], - "group_id": "Branding", - "_key": "light_theme_color" - }, - { - "swagger_models": [ - "BrandingImage", - "BrandingImageList" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Revert an account branding image to light theme default.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", + "description": "Update API key details.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestApiKey25\"}'\n```", "field_renames": [], "fields": [ { - "is_primary_key": true, - "_override": true, "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "name": "reference", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "parameter_fieldname": "account_id", "in": "path", - "description": "Name of the branding images (icon or picture).", "required": true, - "enum_reference": "light_theme_image_reference_enum", - "_key": "reference" + "_key": "account_id" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "subtenant_api_key_status_enum", + "_key": "status" } ], - "method": "post", - "mode": "delete", + "method": "put", + "mode": "update", "responses": [ { - "description": "Image reverted successfully.", - "_key": "204" + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "etag", + "id", + "key", + "name", + "object" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "entity_fieldname": "creation_time", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "entity_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "entity_fieldname": "key", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "entity_fieldname": "last_login_time", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": false, + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "entity_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "api_key_status_enum", + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } + }, + "_key": "200" + }, + { + "description": "Error in input data, for example, invalid API key name.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" }, { "description": "Authentication failure.", @@ -45027,7 +64519,7 @@ "_key": "403" }, { - "description": "Unknown image reference.", + "description": "An account ID or API key with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -45100,211 +64592,312 @@ "_key": "404" } ], - "path": "/v3/branding-images/light/{reference}/clear", - "summary": "Revert an image to light theme default.", - "return_type": "light_theme_image", + "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", + "summary": "Update API key details.", + "return_type": "subtenant_api_key", "return_info": { "self": true, "custom": false, - "type": "light_theme_image" + "type": "subtenant_api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id}", + "links": [] + }, "drop_fields": [ "object", "etag", "type", - "filter" + "filter", + "created_at", + "updated_at", + "key", + "creation_time", + "last_login_time" ], - "group_id": "Branding", - "operation_id": "clearLightImage", + "group_id": "Accounts", + "parameter_map": { + "apikey_id": "id" + }, + "operation_id": "updateAccountApiKey", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "delete" + "_key": "update" + } + ], + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "readOnly": false, + "required": true, + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "readOnly": true, + "required": false, + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "api_fieldname": "creation_time", + "readOnly": true, + "required": false, + "_key": "creation_time" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "api_fieldname": "groups", + "parameter_fieldname": "groups", + "in": "body", + "required": false, + "readOnly": false, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "parameter_fieldname": "apikey_id", + "in": "path", + "required": true, + "readOnly": false, + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "api_fieldname": "key", + "readOnly": true, + "required": false, + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "api_fieldname": "last_login_time", + "readOnly": true, + "required": false, + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", + "api_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "readOnly": false, + "_key": "name" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "owner", + "parameter_fieldname": "owner", + "in": "body", + "required": false, + "readOnly": false, + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "api_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "subtenant_api_key_status_enum", + "readOnly": false, + "_key": "status" }, { - "description": "Retrieve the metadata of all light theme branding images.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "readOnly": true, + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Tenant accounts - API keys" + ], + "group_id": "Accounts", + "_key": "subtenant_api_key" + }, + { + "swagger_models": [ + "BrandingColor" + ], + "primary_key_field": "reference", + "methods": [ + { + "description": "Resets the branding color to its dark theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": true, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, { "is_primary_key": true, "_override": true, "type": "string", "api_fieldname": "reference", "entity_fieldname": "reference", + "enum": [ + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" + ], + "name": "reference", + "in": "path", + "description": "The name of the branding color.", + "required": true, + "enum_reference": "subtenant_dark_theme_color_reference_enum", "_key": "reference" } ], - "method": "get", - "mode": "list", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "Successful operation.", + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ - "data", - "has_more", - "limit", + "code", + "message", "object", - "total_count" + "request_id", + "type" ], "properties": [ { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", - "description": "A list of entities.", + "description": "Request fields which failed validation.", "items": { "type": "object", + "required": [ + "name", + "message" + ], "properties": [ { "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "_key": "static_uri" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "_key": "updated_at" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "foreign_key": { - "group": "Branding", - "entity": "dark_theme_image" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return, or equal to `total_count`.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "Entity name: always `list`.", + "description": "Entity name, always `error`.", "enum": [ - "list" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "The order of the records to return based on creation time. Available values: ASC, DESC; by default ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "light_theme_image" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -45374,10 +64967,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Color or account not found.", "schema": { "type": "object", "required": [ @@ -45447,16 +65040,16 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/branding-images/light", - "summary": "Get metadata of all light theme images.", - "return_type": "paginated_response(light_theme_image)", + "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", + "summary": "Reset branding color to default.", + "return_type": "void", "return_info": { - "self": true, - "custom": false, - "type": "light_theme_image" + "self": false, + "custom": true, + "type": "void" }, "x_filter": {}, "x_deprecation": null, @@ -45464,72 +65057,55 @@ "object", "etag", "type", - "filter", - "limit", - "after", - "order", - "total_count", - "has_more", - "data" + "filter" ], - "foreign_key_priority": "self", "group_id": "Branding", - "operation_id": "getAllLightImageData", - "pagination": true, - "foreign_key": { - "group": "Branding", - "entity": "light_theme_image" + "operation_id": "resetAccountDarkColor", + "spec": { + "return_type": "void" }, + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "delete" }, { - "description": "Retrieve metadata for one account light theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve the requested dark theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": true, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, { "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], "type": "string", - "description": "Name of the image.", + "description": "Color name.", "is_primary_key": true, "_override": true, "api_fieldname": "reference", @@ -45537,7 +65113,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "light_theme_image_reference_enum", + "enum_reference": "subtenant_dark_theme_color_reference_enum", "_key": "reference" } ], @@ -45551,57 +65127,54 @@ "properties": [ { "type": "string", - "description": "Entity name: always 'branding_image'", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", "readOnly": true, "enum": [ - "branding_image" + "branding_color" ], "api_fieldname": "object", "entity_fieldname": "object", + "name": "object", + "in": "body", + "schema_param": true, + "external_param": true, + "parameter_fieldname": "object", + "required": false, "_key": "object" }, { "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], "type": "string", - "description": "Name of the image.", + "description": "Color name.", "is_primary_key": true, "_override": true, "api_fieldname": "reference", @@ -45609,19 +65182,9 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "dark_theme_image_reference_enum", + "enum_reference": "light_theme_color_reference_enum", "_key": "reference" }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, { "type": "string", "format": "date-time", @@ -45630,12 +65193,15 @@ "readOnly": true, "api_fieldname": "updated_at", "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, "_key": "updated_at" } ], "foreign_key": { "group": "Branding", - "entity": "subtenant_light_theme_image" + "entity": "subtenant_light_theme_color" } }, "_key": "200" @@ -45787,7 +65353,7 @@ "_key": "403" }, { - "description": "Unknown image reference.", + "description": "Color or account not found.", "schema": { "type": "object", "required": [ @@ -45860,13 +65426,13 @@ "_key": "404" } ], - "path": "/v3/branding-images/light/{reference}", - "summary": "Get metadata of a light theme image.", - "return_type": "light_theme_image", + "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", + "summary": "Get dark theme branding color.", + "return_type": "subtenant_dark_theme_color", "return_info": { "self": true, "custom": false, - "type": "light_theme_image" + "type": "subtenant_dark_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -45875,74 +65441,65 @@ "etag", "type", "filter", - "static_uri", + "color", "updated_at" ], "group_id": "Branding", - "operation_id": "getLightImageData", + "operation_id": "getAccountDarkColor", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "read" }, { - "description": "Upload a new account branding image as form data in the light theme in PNG or JPEG format.", + "description": "Update a dark theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"#f3f93e\" }'\n```", "field_renames": [], "fields": [ { - "in": "stream", - "name": "image", - "description": "The image in PNG or JPEG format as multipart form data.", + "name": "account_id", + "in": "path", + "description": "The ID of the account.", "required": true, - "type": "file", - "entity_fieldname": "image", - "api_fieldname": "image", + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", "external_param": true, - "parameter_fieldname": "image", - "_key": "image" + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" }, { "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], "type": "string", - "description": "Name of the image.", + "description": "Color name.", "is_primary_key": true, "_override": true, "api_fieldname": "reference", @@ -45950,83 +65507,81 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "light_theme_image_reference_enum", + "enum_reference": "subtenant_dark_theme_color_reference_enum", "_key": "reference" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, + "_key": "updated_at" } ], - "method": "post", + "method": "put", "mode": "update", "responses": [ { - "description": "Image uploaded successfully.", - "headers": [ - { - "type": "string", - "description": "Location of the image metadata.", - "_key": "Content-Location" - }, - { - "type": "string", - "description": "Location of the image binary.", - "_key": "Location" - } - ], + "description": "Color has been set successfully.", "schema": { "type": "object", "properties": [ { "type": "string", - "description": "Entity name: always 'branding_image'", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "entity_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "_key": "color" + }, + { + "type": "string", + "description": "Entity name: always 'branding_color'", "readOnly": true, "enum": [ - "branding_image" + "branding_color" ], "api_fieldname": "object", "entity_fieldname": "object", + "name": "object", + "in": "body", + "schema_param": true, + "external_param": true, + "parameter_fieldname": "object", + "required": false, "_key": "object" }, { "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], "type": "string", - "description": "Name of the image.", + "description": "Color name.", "is_primary_key": true, "_override": true, "api_fieldname": "reference", @@ -46034,19 +65589,9 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "dark_theme_image_reference_enum", + "enum_reference": "light_theme_color_reference_enum", "_key": "reference" }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, { "type": "string", "format": "date-time", @@ -46055,18 +65600,21 @@ "readOnly": true, "api_fieldname": "updated_at", "entity_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", + "required": false, "_key": "updated_at" } ], "foreign_key": { "group": "Branding", - "entity": "subtenant_light_theme_image" + "entity": "subtenant_light_theme_color" } }, - "_key": "201" + "_key": "200" }, { - "description": "Error in input data format, for example, image is too large.", + "description": "Error in input data format.", "schema": { "type": "object", "required": [ @@ -46285,7 +65833,7 @@ "_key": "403" }, { - "description": "Unknown image reference.", + "description": "Color or account not found.", "schema": { "type": "object", "required": [ @@ -46358,13 +65906,13 @@ "_key": "404" } ], - "path": "/v3/branding-images/light/{reference}/upload-multipart", - "summary": "Upload a light theme image.", - "return_type": "light_theme_image", + "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", + "summary": "Updates a dark theme branding color.", + "return_type": "subtenant_dark_theme_color", "return_info": { "self": true, "custom": false, - "type": "light_theme_image" + "type": "subtenant_dark_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -46372,87 +65920,66 @@ "object", "etag", "type", - "filter", - "static_uri", - "updated_at" + "filter" ], "group_id": "Branding", - "operation_id": "uploadLightImageMultipart", + "operation_id": "setAccountDarkColor", "additional_operations": [ { - "operation_id": "uploadLightImage", - "notes": "The multipart request is more generic and better supported by SDKs." + "operation_id": "bulkSetAccountDarkColors", + "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." } ], "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", + "request_content_type": "application/json", + "request_body": "json", "_key": "update" } ], "fields": [ + { + "type": "string", + "example": "#f3f93e", + "description": "The color given as name (purple) or as a hex code.", + "x-nullable": true, + "api_fieldname": "color", + "parameter_fieldname": "color", + "in": "body", + "required": false, + "readOnly": false, + "_key": "color" + }, { "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "error_color", + "primary", + "secondary", + "success_color", + "warning_color", + "canvas_background", + "canvas_background_font_color", + "workspace_background", + "workspace_background_font_color", + "info_color", + "info_font_color", + "primary_font_color", + "secondary_font_color", + "error_font_color", + "success_font_color", + "warning_font_color" ], "type": "string", - "description": "Name of the image.", + "description": "Color name.", "is_primary_key": true, "_override": true, "api_fieldname": "reference", "name": "reference", "in": "path", "required": false, - "enum_reference": "light_theme_image_reference_enum", + "enum_reference": "subtenant_dark_theme_color_reference_enum", "readOnly": false, "_key": "reference" }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "required": false, - "_key": "static_uri" - }, { "type": "string", "format": "date-time", @@ -46460,551 +65987,176 @@ "description": "Last update time in UTC.", "readOnly": true, "api_fieldname": "updated_at", + "parameter_fieldname": "updated_at", + "in": "body", "required": false, "_key": "updated_at" } ], "field_renames": [], "tags": [ - "User interface configuration - images" - ], - "group_id": "Branding", - "_key": "light_theme_image" - }, - { - "swagger_models": [ - "LoginHistory" - ], - "primary_key_field": null, - "methods": [], - "fields": [ - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "UTC time RFC3339 for this login attempt.", - "api_fieldname": "date", - "readOnly": true, - "required": false, - "_key": "date" - }, - { - "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", - "readOnly": true, - "required": false, - "_key": "ip_address" - }, - { - "type": "boolean", - "example": true, - "description": "Flag indicating whether login attempt was successful or not.", - "api_fieldname": "success", - "readOnly": true, - "required": false, - "_key": "success" - }, - { - "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", - "readOnly": true, - "required": false, - "_key": "user_agent" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "login_history" - }, - { - "swagger_models": [ - "LoginProfile" - ], - "primary_key_field": "id", - "methods": [], - "fields": [ - { - "type": "string", - "description": "ID of the identity provider.", - "readOnly": false, - "_override": true, - "api_fieldname": "id", - "required": false, - "_key": "id" - }, - { - "type": "string", - "readOnly": false, - "description": "Name of the identity provider.", - "_override": true, - "api_fieldname": "name", - "required": false, - "_key": "name" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "login_profile" - }, - { - "swagger_models": [ - "ParentAccountInfo" - ], - "primary_key_field": "id", - "methods": [], - "fields": [ - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "info@arm.com", - "description": "The email address of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_email", - "readOnly": true, - "required": false, - "_key": "admin_email" - }, - { - "type": "string", - "maxLength": 100, - "example": "J. Doe", - "description": "The name of the admin user who is the contact person of the parent account.", - "api_fieldname": "admin_name", - "readOnly": true, - "required": false, - "_key": "admin_name" - }, - { - "type": "string", - "example": "01619571dad80242ac12000600000000", - "description": "The ID of the parent account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "readOnly": true, - "required": false, - "_key": "id" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "parent_account" - }, - { - "swagger_models": [ - "PasswordPolicy" - ], - "primary_key_field": null, - "methods": [], - "fields": [ - { - "type": "integer", - "minimum": 8, - "maximum": 512, - "example": "8", - "description": "Minimum length for the password.", - "api_fieldname": "minimum_length", - "readOnly": true, - "required": false, - "_key": "minimum_length" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "password_policy" - }, - { - "swagger_models": [ - "FeaturePolicy" - ], - "primary_key_field": null, - "methods": [], - "fields": [ - { - "type": "string", - "example": "GET", - "description": "Comma-separated list of actions, empty string represents all actions.", - "api_fieldname": "action", - "readOnly": true, - "required": false, - "_key": "action" - }, - { - "type": "boolean", - "example": true, - "description": "True or false controlling whether an action is allowed or not.", - "api_fieldname": "allow", - "readOnly": true, - "required": false, - "_key": "allow" - }, - { - "type": "string", - "example": "update-campaigns", - "description": "Feature name corresponding to this policy.", - "api_fieldname": "feature", - "readOnly": true, - "required": false, - "_key": "feature" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether this feature is inherited or overwritten specifically.", - "readOnly": true, - "api_fieldname": "inherited", - "required": false, - "_key": "inherited" - }, - { - "type": "string", - "example": "016ada3ec2d46665bf66e32e00000000", - "description": "An ID indicating where this policy is inherited from.", - "pattern": "[a-f0-9]{32}", - "readOnly": true, - "api_fieldname": "inherited_from", - "required": false, - "_key": "inherited_from" - }, - { - "type": "string", - "example": "account", - "description": "Indicates the type of entity this policy is inherited from.", - "readOnly": true, - "enum": [ - "account", - "template", - "tier_template" - ], - "api_fieldname": "inherited_type", - "required": false, - "enum_reference": "policy_inherited_type_enum", - "_key": "inherited_type" - }, - { - "type": "string", - "example": "/v3/update-campaign", - "description": "Resource that is protected by this policy.", - "api_fieldname": "resource", - "readOnly": true, - "required": false, - "_key": "resource" - } - ], - "field_renames": [], - "tags": [], - "group_id": "Accounts", - "_key": "policy" - }, - { - "swagger_models": [ - "ApiKeyInfoRespList", - "GroupSummary", - "GroupSummaryList", - "UserInfoRespList" + "Tenant user interface configuration - colors" ], - "primary_key_field": "id", - "methods": [ - { - "description": "Manage policy groups.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, + "group_id": "Branding", + "_key": "subtenant_dark_theme_color" + }, + { + "swagger_models": [ + "BrandingImage" + ], + "primary_key_field": "reference", + "methods": [ + { + "description": "Revert an account branding image to dark theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ { - "name": "group_id", + "name": "account_id", "in": "path", - "description": "The ID of the group.", + "description": "The ID of the account.", "required": true, "type": "string", - "entity_fieldname": "id", - "api_fieldname": "group_id", - "external_param": false, - "parameter_fieldname": "group_id", - "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, + "entity_fieldname": "account_id", + "api_fieldname": "account_id", "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "parameter_fieldname": "account_id", + "_key": "account_id" }, { + "is_primary_key": true, + "_override": true, "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "api_fieldname": "reference", + "entity_fieldname": "reference", "enum": [ - "ASC", - "DESC" + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "policy_group_order_enum", - "_key": "order" + "name": "reference", + "in": "path", + "description": "Name of the branding images (icon or picture).", + "required": true, + "enum_reference": "subtenant_dark_theme_image_reference_enum", + "_key": "reference" } ], - "method": "get", - "mode": "api_keys", + "method": "post", + "mode": "delete", "responses": [ { - "description": "Successful operation.", + "description": "Image reverted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ - "data", - "has_more", - "limit", + "code", + "message", "object", - "total_count" + "request_id", + "type" ], "properties": [ { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", - "description": "A list of entities.", + "description": "Request fields which failed validation.", "items": { "type": "object", "required": [ - "etag", - "id", - "key", "name", - "object" + "message" ], "properties": [ { "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "_key": "creation_time" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "_key": "last_login_time" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "description": "Name of the field which caused the error.", "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always 'api-key'", - "enum": [ - "api-key" - ], - "_key": "object" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "_key": "status" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" } - ], - "description": "Represents an API key in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "api_key" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "Entity name: always `list`.", + "description": "Entity name, always `error`.", "enum": [ - "list" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "account_order_enum", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "api_key" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -47074,10 +66226,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Unknown image reference, or account not found.", "schema": { "type": "object", "required": [ @@ -47145,12 +66297,204 @@ "example": "validation_error", "_key": "type" } - ] + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}/clear", + "summary": "Revert an image to dark theme default.", + "return_type": "subtenant_dark_theme_image", + "return_info": { + "self": true, + "custom": false, + "type": "subtenant_dark_theme_image" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter" + ], + "group_id": "Branding", + "operation_id": "clearAccountDarkImage", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" + }, + { + "description": "Retrieve metadata of one account dark theme branding image.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": true, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "subtenant_dark_theme_image_reference_enum", + "_key": "reference" + } + ], + "method": "get", + "mode": "read", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "light_theme_image_reference_enum", + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_image" + } }, - "_key": "403" + "_key": "200" }, { - "description": "A group with that ID does not exist.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -47220,294 +66564,10 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/policy-groups/{group_id}/api-keys", - "summary": "Get the API keys of a group.", - "return_type": "paginated_response(api_key)", - "return_info": { - "self": false, - "custom": false, - "type": "api_key" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "total_count", - "has_more", - "data" - ], - "group_id": "Accounts", - "parameter_map": { - "group_id": "id" - }, - "operation_id": "getApiKeysOfGroup", - "foreign_key": { - "entity": "api_key" - }, - "pagination": true, - "request_content_type": "application/json", - "request_body": "json", - "_key": "api_keys" - }, - { - "description": "Retrieve all group information.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "policy_group_order_enum", - "_key": "order" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "required": [ - "data", - "has_more", - "limit", - "object", - "total_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "apikey_count", - "etag", - "id", - "name", - "object", - "user_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "integer", - "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always `group`.", - "enum": [ - "group" - ], - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "_key": "user_count" - } - ], - "description": "This object contains basic information about groups.", - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" - } - }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Entity name: always `list`.", - "enum": [ - "list" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "subtenant_api_key_order_enum", - "_key": "order" - }, - { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" - } - ], - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "policy_group" - } - }, - "_key": "200" + "_key": "401" }, { - "description": "Authentication failure.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -47577,10 +66637,10 @@ } ] }, - "_key": "401" + "_key": "403" }, { - "description": "Forbidden.", + "description": "Unknown image reference, or account not found.", "schema": { "type": "object", "required": [ @@ -47650,171 +66710,298 @@ } ] }, - "_key": "403" + "_key": "404" } ], - "path": "/v3/policy-groups", - "summary": "Get all group information.", - "return_type": "paginated_response(policy_group)", + "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}", + "summary": "Get metadata of a dark theme image.", + "return_type": "subtenant_dark_theme_image", "return_info": { "self": true, "custom": false, - "type": "policy_group" - }, - "x_filter": { - "name": [ - "eq" - ] + "type": "subtenant_dark_theme_image" }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "total_count", - "has_more", - "data", - "name__eq" + "static_uri", + "updated_at" ], - "foreign_key_priority": "self", - "group_id": "Accounts", - "parameter_map": { - "group_id": "id" - }, - "operation_id": "getAllGroups", - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "policy_group" - }, + "group_id": "Branding", + "operation_id": "getAccountDarkImageData", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "read" }, { - "description": "Retrieve general information about a group.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Upload a new account dark theme branding image as form data in PNG or JPEG format.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "group_id", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": true, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "in": "stream", + "name": "image", + "description": "The image in PNG or JPEG format as multipart form data.", + "required": true, + "type": "file", + "entity_fieldname": "image", + "api_fieldname": "image", + "external_param": true, + "parameter_fieldname": "image", + "_key": "image" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", "in": "path", "required": true, - "_key": "id" + "enum_reference": "subtenant_dark_theme_image_reference_enum", + "_key": "reference" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "update", "responses": [ { - "description": "Successful operation.", + "description": "Image uploaded successfully.", + "headers": [ + { + "type": "string", + "description": "Location of the image metadata.", + "_key": "Content-Location" + }, + { + "type": "string", + "description": "Location of the image binary.", + "_key": "Location" + } + ], + "schema": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "Entity name: always 'branding_image'", + "readOnly": true, + "enum": [ + "branding_image" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "light_theme_image_reference_enum", + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_light_theme_image" + } + }, + "_key": "201" + }, + { + "description": "Error in input data format, for example, image is too large.", "schema": { "type": "object", "required": [ - "account_id", - "apikey_count", - "etag", - "id", - "name", + "code", + "message", "object", - "user_count" + "request_id", + "type" ], "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, { "type": "integer", "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "api_fieldname": "apikey_count", - "entity_fieldname": "apikey_count", - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "Entity name: always `group`.", + "description": "Entity name, always `error`.", "enum": [ - "group" + "error" ], - "api_fieldname": "object", - "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "api_fieldname": "user_count", - "entity_fieldname": "user_count", - "_key": "user_count" + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "description": "This object contains basic information about groups.", - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" - } + ] }, - "_key": "200" + "_key": "400" }, { "description": "Authentication failure.", @@ -47963,7 +67150,7 @@ "_key": "403" }, { - "description": "A group with that ID does not exist.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -48036,13 +67223,13 @@ "_key": "404" } ], - "path": "/v3/policy-groups/{group_id}", - "summary": "Get group information.", - "return_type": "policy_group", + "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart", + "summary": "Upload a dark theme image.", + "return_type": "subtenant_dark_theme_image", "return_info": { "self": true, "custom": false, - "type": "policy_group" + "type": "subtenant_dark_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -48051,576 +67238,861 @@ "etag", "type", "filter", - "created_at", - "updated_at", - "account_id", - "name", - "user_count", - "apikey_count" + "static_uri", + "updated_at" + ], + "group_id": "Branding", + "operation_id": "uploadAccountDarkImageMultipart", + "additional_operations": [ + { + "operation_id": "uploadAccountDarkImage", + "notes": "The multipart endpoint is used by the SDKs as it offers the same functionality as the standard upload endpoint." + } ], - "group_id": "Accounts", - "parameter_map": { - "group_id": "id" - }, - "operation_id": "getGroupSummary", "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "update" + } + ], + "fields": [ + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "name": "reference", + "in": "path", + "required": false, + "enum_reference": "subtenant_dark_theme_image_reference_enum", + "readOnly": false, + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "required": false, + "_key": "static_uri" }, { - "description": "Retrieve users of a group with details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users \\\n-H 'Authorization: Bearer '\n```", + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Tenant user interface configuration - images" + ], + "group_id": "Branding", + "_key": "subtenant_dark_theme_image" + }, + { + "swagger_models": [ + "CertificateGenerationReq", + "IdentityProviderCreationReq", + "IdentityProviderInfo", + "IdentityProviderList", + "IdentityProviderUpdateReq" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Create a new identity provider.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "group_id", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "parameter_fieldname": "account_id", "in": "path", - "description": "The ID of the group.", "required": true, + "_key": "account_id" + }, + { "type": "string", - "entity_fieldname": "id", - "api_fieldname": "group_id", - "external_param": false, - "parameter_fieldname": "group_id", - "_key": "id" + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { - "name": "include", "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", + "name": "discovery", + "description": "Indicates that the OpenID Connect endpoints and keys should be set using the OpenID Connect Discovery mechanism. The following parameters are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint * revocation_endpoint * jwks_uri * keys", + "type": "boolean", + "allowEmptyValue": true, + "entity_fieldname": "discovery", + "api_fieldname": "discovery", + "external_param": true, + "parameter_fieldname": "discovery", "required": false, + "_key": "discovery" + }, + { "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", + "type": "object", "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", + "in": "body", + "required": false, + "_key": "saml2_attributes" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Status of the identity provider.", "enum": [ - "ASC", - "DESC" + "ACTIVE", + "SUSPENDED" ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "policy_group_order_enum", - "_key": "order" + "enum_reference": "subtenant_identity_provider_status_enum", + "_key": "status" } ], - "method": "get", - "mode": "users", + "method": "post", + "mode": "create", "responses": [ { - "description": "Successful operation.", + "description": "New entity created.", + "headers": [ + { + "type": "string", + "description": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + }, + { + "type": "string", + "description": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "_key": "Location" + } + ], "schema": { "type": "object", "required": [ - "data", - "has_more", - "limit", + "etag", + "id", + "name", "object", - "total_count" + "type" ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" }, { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "email", - "etag", - "id", - "object", - "status" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "array", - "description": "List of active user sessions.", - "items": { - "type": "object", - "required": [ - "account_id", - "ip_address", - "login_time", - "object", - "reference_token", - "user_agent" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The UUID of the account.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "entity_fieldname": "account_id", - "_key": "account_id" - }, - { - "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", - "entity_fieldname": "ip_address", - "_key": "ip_address" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "The login time of the user.", - "api_fieldname": "login_time", - "entity_fieldname": "login_time", - "_key": "login_time" - }, - { - "type": "string", - "description": "Entity name: always 'user-session'", - "enum": [ - "user-session" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "example": "rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk", - "description": "The reference token.", - "api_fieldname": "reference_token", - "entity_fieldname": "reference_token", - "_key": "reference_token" - }, - { - "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", - "entity_fieldname": "user_agent", - "_key": "user_agent" - } - ], - "description": "Represents an active user session.", - "foreign_key": { - "group": "Accounts", - "entity": "active_session" - } + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" }, - "_key": "active_sessions" - }, - { - "type": "string", - "example": "110 Fulbourn Rd, Cambridge, United Kingdom", - "description": "Address.", - "x-nullable": true, - "_key": "address" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "A timestamp of the user creation in the storage, in milliseconds.", - "_key": "creation_time" - }, - { - "type": "object", - "x-nullable": true, - "description": "User's account-specific custom properties. The value is a string.", - "additionalProperties": { - "type": "string" + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" }, - "_key": "custom_fields" - }, - { - "pattern": "^(?=.{3,254}$).+\\@.+", - "type": "string", - "example": "user@arm.com", - "description": "The email address.", - "_key": "email" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating whether the user's email address has been verified or not.", - "_key": "email_verified" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "maxLength": 100, - "example": "User Doe", - "x-nullable": true, - "description": "The full name of the user.", - "_key": "full_name" - }, - { - "type": "array", - "description": "A list of IDs of the groups this user belongs to.", - "items": { - "type": "string" + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" }, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The ID of the user.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating that the user has accepted General Terms and Conditions.", - "_key": "is_gtc_accepted" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating that the user has consented to receive marketing information.", - "_key": "is_marketing_accepted" - }, - { - "type": "boolean", - "example": true, - "description": "A flag indicating whether two-factor authentication (TOTP) has been enabled.", - "_key": "is_totp_enabled" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "A timestamp of the latest login of the user, in milliseconds.", - "_key": "last_login_time" - }, - { - "type": "array", - "maxItems": 5, - "description": "Timestamps, succeedings, IP addresses and user agent information of the last five logins of the user, with timestamps in RFC3339 format.", - "items": { - "type": "object", - "required": [ - "date", - "ip_address", - "success", - "user_agent" - ], - "properties": [ - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T17:52:07Z", - "description": "UTC time RFC3339 for this login attempt.", - "api_fieldname": "date", - "entity_fieldname": "date", - "_key": "date" - }, - { - "type": "string", - "example": "127.0.0.1", - "description": "IP address of the client.", - "api_fieldname": "ip_address", - "entity_fieldname": "ip_address", - "_key": "ip_address" - }, - { - "type": "boolean", - "example": true, - "description": "Flag indicating whether login attempt was successful or not.", - "api_fieldname": "success", - "entity_fieldname": "success", - "_key": "success" - }, - { - "type": "string", - "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", - "description": "User Agent header from the login request.", - "api_fieldname": "user_agent", - "entity_fieldname": "user_agent", - "_key": "user_agent" - } - ], - "description": "Represents an entry in login history.", - "foreign_key": { - "group": "Accounts", - "entity": "login_history" - } + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" }, - "_key": "login_history" - }, - { - "type": "array", - "description": "A list of login profiles for the user. Specified as the identity providers the user is associated with.", - "x-nullable": true, - "items": { - "type": "object", - "required": [ - "id" - ], - "properties": [ - { - "type": "string", - "description": "ID of the identity provider.", - "readOnly": false, - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "readOnly": false, - "description": "Name of the identity provider.", - "_override": true, - "api_fieldname": "name", - "entity_fieldname": "name", - "_key": "name" - }, - { - "type": "string", - "description": "Identity provider type.", - "readOnly": true, - "enum": [ - "NATIVE", - "MBED", - "SAML2", - "OIDC" - ], - "api_fieldname": "type", - "entity_fieldname": "type", - "_key": "type" - } - ], - "description": "Represents a user login profile in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "login_profile" - } + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" }, - "_key": "login_profiles" - }, - { - "type": "string", - "description": "Entity name: always `user`.", - "enum": [ - "user" - ], - "_key": "object" - }, - { - "type": "string", - "example": "PZf9eEUH43DAPE9ULINFeuj", - "description": "The password when creating a new user. It will be generated when not present in the request.", - "x-nullable": true, - "_key": "password" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "A timestamp of the latest change of the user password, in milliseconds.", - "_key": "password_changed_time" - }, - { - "type": "string", - "maxLength": 100, - "example": "+44 (1223) 400 400", - "description": "Phone number.", - "x-nullable": true, - "_key": "phone_number" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the user. ENROLLING state indicates that the user is in the middle of the enrollment process. INVITED means that the user has not accepted the invitation request. RESET means that the password must be changed immediately. INACTIVE users are locked out and not permitted to use the system.", - "enum": [ - "ENROLLING", - "INVITED", - "ACTIVE", - "RESET", - "INACTIVE" - ], - "_key": "status" - }, - { - "type": "array", - "x-nullable": true, - "description": "A list of scratch codes for the two-factor authentication. Visible only when 2FA is requested to be enabled or the codes regenerated.", - "items": { - "type": "string" + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" }, - "_key": "totp_scratch_codes" + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } }, - { - "pattern": "[\\w\\-,._@+=]{4,30}", - "type": "string", - "example": "admin", - "description": "A username.", - "x-nullable": true, - "_key": "username" - } - ], - "description": "Represents a user in Device Management.", - "foreign_key": { - "group": "Accounts", - "entity": "user" + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", + "in": "body", "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "_key": "saml2_attributes" }, { "type": "string", - "description": "Entity name: always `list`.", + "description": "Status of the identity provider.", "enum": [ - "list" + "ACTIVE", + "SUSPENDED" ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "identity_provider_status_enum", + "_key": "status" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Identity provider type.", "enum": [ - "ASC", - "DESC" + "NATIVE", + "MBED", + "SAML2", + "OIDC" ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "account_order_enum", - "_key": "order" + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } ], - "pagination": true, "foreign_key": { "group": "Accounts", - "entity": "user" + "entity": "identity_provider" } }, - "_key": "200" + "_key": "201" }, { - "description": "Authentication failure.", + "description": "Error in input data, for example, too long name.", "schema": { "type": "object", "required": [ @@ -48690,10 +68162,10 @@ } ] }, - "_key": "401" + "_key": "400" }, { - "description": "Forbidden.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -48763,10 +68235,10 @@ } ] }, - "_key": "403" + "_key": "401" }, { - "description": "A group with that ID does not exist.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -48836,485 +68308,89 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/policy-groups/{group_id}/users", - "summary": "Get users of a group.", - "return_type": "paginated_response(user)", - "return_info": { - "self": false, - "custom": false, - "type": "user" - }, - "x_filter": { - "status": [ - "eq", - "in", - "nin" - ] - }, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "total_count", - "has_more", - "data", - "status__eq", - "status__in", - "status__nin" - ], - "group_id": "Accounts", - "parameter_map": { - "group_id": "id" - }, - "operation_id": "getUsersOfGroup", - "foreign_key": { - "entity": "user" - }, - "pagination": true, - "request_content_type": "application/json", - "request_body": "json", - "_key": "users" - } - ], - "fields": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "account_id", - "readOnly": true, - "required": false, - "_key": "account_id" - }, - { - "type": "integer", - "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "api_fieldname": "apikey_count", - "readOnly": true, - "required": false, - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "readOnly": false, - "required": true, - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "api_fieldname": "name", - "readOnly": true, - "required": false, - "_key": "name" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "api_fieldname": "updated_at", - "readOnly": true, - "required": false, - "_key": "updated_at" - }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "api_fieldname": "user_count", - "readOnly": true, - "required": false, - "_key": "user_count" - } - ], - "field_renames": [], - "tags": [ - "Account - policy groups" - ], - "group_id": "Accounts", - "_key": "policy_group" - }, - { - "swagger_models": [ - "ListOfPreSharedKeysWithoutSecret", - "PreSharedKey", - "PreSharedKeyWithoutSecret" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Upload a PSK for an endpoint to allow it to bootstrap. The existing key cannot be overwritten, but needs\nto be deleted first in the case of re-setting a PSK for an endpoint.\n\n**Note**: The PSK APIs are available only to accounts that have this feature enabled.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\" \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\": \"4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```", - "field_renames": [], - "fields": [ - { - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "type": "string", - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" - }, - { - "description": "The Id of the pre_shared_key, shadows the endpoint_name", - "type": "string", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "pattern": "^[ -~]{16,64}$", - "example": "my-endpoint-0001", - "name": "endpoint_name", - "in": "body", - "schema_param": true, - "_key": "id" - }, - { - "type": "string", - "pattern": "^(0[xX])?[0-9a-fA-F]{32,64}$", - "description": "The secret of the PSK in hexadecimal. It is not case sensitive; 4a is same as 4A, and it is allowed with or without 0x in the beginning. The minimum length of the secret is 128 bits and maximum 256 bits.", - "example": "4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a", - "name": "secret_hex", - "in": "body", - "schema_param": true, - "entity_fieldname": "secret_hex", - "api_fieldname": "secret_hex", - "external_param": true, - "parameter_fieldname": "secret_hex", - "required": true, - "_key": "secret_hex" - } - ], - "method": "post", - "mode": "create", - "responses": [ - { - "description": "Successfully created.", - "_key": "201" - }, - { - "description": "Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT.", - "schema": { - "type": "string" - }, - "_key": "400" - }, - { - "description": "Authentication failure.", - "_key": "401" - }, - { - "description": "Forbidden. You need to read and accept the PSK license in Device Management Portal.", "_key": "403" }, { - "description": "Conflict. The PSK for the endpoint already exists and cannot be overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT.", - "schema": { - "type": "string" - }, - "_key": "409" - } - ], - "path": "/v2/device-shared-keys", - "summary": "Upload a PSK to Pelion Device Management.", - "return_type": "pre_shared_key", - "return_info": { - "self": true, - "custom": false, - "type": "pre_shared_key" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Security", - "parameter_map": { - "endpoint_name": "id" - }, - "operation_id": "uploadPreSharedKey", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "create" - }, - { - "description": "Remove a PSK.\n\n**Example:**\n\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 \\\n-H \"Authorization: Bearer \"\n```", - "field_renames": [], - "fields": [ - { - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "type": "string", - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" - }, - { - "description": "The Id of the pre_shared_key, shadows the endpoint_name", - "type": "string", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "name": "endpoint_name", - "in": "path", - "required": true, - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Successfully deleted. Responds even if the endpoint does not have an associated PSK.", - "_key": "204" - }, - { - "description": "Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME.", - "schema": { - "type": "string" - }, - "_key": "400" - }, - { - "description": "Authentication failure.", - "_key": "401" - } - ], - "path": "/v2/device-shared-keys/{endpoint_name}", - "summary": "Remove a PSK.", - "return_type": "pre_shared_key", - "return_info": { - "self": true, - "custom": false, - "type": "pre_shared_key" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Security", - "parameter_map": { - "endpoint_name": "id" - }, - "operation_id": "deletePreSharedKey", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve pre-shared keys (PSKs) with pagination. Default page size of 50 entries.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \\\n-H \"Authorization: Bearer \"\n```", - "field_renames": [], - "fields": [ - { - "type": "string", - "description": "An offset token for fetching a specific page. Provided by the server.", - "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "type": "string", - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" - }, - { - "description": "The Id of the pre_shared_key, shadows the endpoint_name", - "type": "string", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "integer", - "description": "The number of entries per page.", - "example": 50, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - } - ], - "method": "get", - "mode": "list", - "responses": [ - { - "description": "List of PSKs.", + "description": "Account not found.", "schema": { "type": "object", "required": [ + "code", + "message", "object", - "limit", - "order", - "has_more", - "data" + "request_id", + "type" ], "properties": [ { - "type": "string", - "description": "An offset token for current page.", - "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004", - "api_fieldname": "after", - "entity_fieldname": "after", - "_key": "after" - }, - { - "type": "string", - "description": "An offset token for fetching the next page. Note that exactly the same limit needs to be used on the request for fetching subsequent pages.", - "example": "001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005", - "api_fieldname": "continuation_marker", - "entity_fieldname": "continuation_marker", - "_key": "continuation_marker" + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" }, { "type": "array", - "description": "Array of the PSK entries. The array is empty if there are no PSKs.", - "minLength": 0, + "description": "Request fields which failed validation.", "items": { "type": "object", "required": [ - "endpoint_name" + "name", + "message" ], "properties": [ { "type": "string", - "format": "date-time", - "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", - "example": "2017-07-21T17:32:28.012Z", - "_key": "created_at" + "description": "Message describing the error condition.", + "_key": "message" }, { "type": "string", - "pattern": "^[ -~]{16,64}$", - "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", - "example": "my-endpoint-0001", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "_key": "endpoint_name" + "description": "Name of the field which caused the error.", + "_key": "name" } - ], - "foreign_key": { - "group": "Security", - "entity": "pre_shared_key" - } + ] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "description": "More results are available.", - "example": true, - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "_key": "fields" }, { - "type": "integer", - "description": "The value of limit query parameter from the request, or default if not specified.", - "example": 50, - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "description": "The type of this API object is a \"list\".", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], "_key": "object" }, { "type": "string", - "description": "Record order based on creation time.", - "example": "DESC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "pre_shared_key" - } + ] }, - "_key": "200" - }, - { - "description": "Bad request. Contains the error as a string, either TOKEN_NOT_FOUND or INVALID_LIMIT.", - "_key": "400" + "_key": "404" } ], - "path": "/v2/device-shared-keys", - "summary": "List PSKs.", - "return_type": "paginated_response(pre_shared_key)", + "path": "/v3/accounts/{account_id}/identity-providers", + "summary": "Create a new identity provider.", + "return_type": "subtenant_identity_provider", "return_info": { "self": true, "custom": false, - "type": "pre_shared_key" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -49323,121 +68399,284 @@ "etag", "type", "filter", - "order", - "has_more", - "continuation_marker", - "data" + "id", + "created_at", + "updated_at", + "is_default" ], - "foreign_key_priority": "self", - "group_id": "Security", + "group_id": "Accounts", "parameter_map": { - "endpoint_name": "id" - }, - "operation_id": "listPreSharedKeys", - "pagination": true, - "foreign_key": { - "group": "Security", - "entity": "pre_shared_key" + "identity_provider_id": "id" }, + "operation_id": "createAccountIdentityProvider", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "create" }, { - "description": "Check if a PSK for an endpoint exists or not. The response does not contain the secret itself.\n\n**Example:**\n\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 \\\n-H \"Authorization: Bearer \"\n```", + "description": "Delete an identity provider by ID.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, "type": "string", - "pattern": "^[ -~]{16,64}$", - "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", - "example": "my-endpoint-0001", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "account_id" }, { - "description": "The Id of the pre_shared_key, shadows the endpoint_name", - "type": "string", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "_override": true, - "api_fieldname": "id", - "entity_fieldname": "id", - "name": "endpoint_name", + "name": "identity_provider_id", "in": "path", + "description": "The ID of the identity provider to delete.", "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "identity_provider_id", + "external_param": false, + "parameter_fieldname": "identity_provider_id", "_key": "id" } ], - "method": "get", - "mode": "read", + "method": "delete", + "mode": "delete", "responses": [ { - "description": "Pre-shared key for the device (does not contain secret).", + "description": "Deleted successfully.", + "_key": "204" + }, + { + "description": "Authentication failure.", "schema": { "type": "object", "required": [ - "endpoint_name" + "code", + "message", + "object", + "request_id", + "type" ], "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, { "type": "string", - "format": "date-time", - "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", - "example": "2017-07-21T17:32:28.012Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", - "pattern": "^[ -~]{16,64}$", - "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", - "example": "my-endpoint-0001", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "api_fieldname": "endpoint_name", - "entity_fieldname": "endpoint_name", - "_key": "endpoint_name" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "foreign_key": { - "group": "Security", - "entity": "pre_shared_key" - } + ] }, - "_key": "200" + "_key": "401" }, { - "description": "Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME.", + "description": "Forbidden, or identity provider is in use.", "schema": { - "type": "string" + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] }, - "_key": "400" - }, - { - "description": "Authentication failure.", - "_key": "401" + "_key": "403" }, { - "description": "The PSK does not exist.", + "description": "An account or identity provider not found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" } ], - "path": "/v2/device-shared-keys/{endpoint_name}", - "summary": "Get a PSK.", - "return_type": "pre_shared_key", + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "summary": "Delete an identity provider by ID.", + "return_type": "subtenant_identity_provider", "return_info": { "self": true, "custom": false, - "type": "pre_shared_key" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -49445,84 +68684,82 @@ "object", "etag", "type", - "filter", - "created_at" + "filter" ], - "group_id": "Security", + "group_id": "Accounts", "parameter_map": { - "endpoint_name": "id" + "identity_provider_id": "id" }, - "operation_id": "getPreSharedKey", + "operation_id": "deleteAccountIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" - } - ], - "fields": [ - { - "type": "string", - "format": "date-time", - "description": "The date-time (RFC3339) when this PSK was uploaded to Device Management.", - "example": "2017-07-21T17:32:28.012Z", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "readOnly": false, - "_override": true, - "type": "string", - "api_fieldname": "endpoint_name", - "pattern": "^[ -~]{16,64}$", - "description": "The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) ASCII characters.", - "example": "my-endpoint-0001", - "required": false, - "_key": "endpoint_name" + "_key": "delete" }, { - "description": "The Id of the pre_shared_key, shadows the endpoint_name", - "type": "string", - "getter_custom_method": "pre_shared_key_id_getter", - "setter_custom_method": "pre_shared_key_id_setter", - "_override": true, - "api_fieldname": "id", - "readOnly": false, - "required": false, - "_key": "id" - } - ], - "field_renames": [], - "tags": [ - "PreSharedKeys" - ], - "group_id": "Security", - "_key": "pre_shared_key" - }, - { - "swagger_models": [ - "ServerCredentialsResponseData" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Return bootstrap server credentials for client to connect to bootstrap server.\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/bootstrap \\\n-H \"Authorization: Bearer \"\n```", + "description": "Delete a service provider certificate.\nNote: This endpoint is restricted to administrators.", "field_renames": [], - "fields": [], - "method": "get", - "mode": "get_bootstrap", + "fields": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "parameter_fieldname": "account_id", + "in": "path", + "required": true, + "_key": "account_id" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" + } + ], + "method": "post", + "mode": "delete_service_provider_certificate", "responses": [ { - "description": "Bootstrap server credentials fetched successfully.", + "description": "Successful operation.", + "headers": [ + { + "type": "string", + "description": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], "schema": { "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, { "type": "string", "format": "date-time", + "example": "2018-02-13T09:35:20Z", "description": "Creation UTC time RFC3339.", "api_fieldname": "created_at", "entity_fieldname": "created_at", @@ -49530,6 +68767,18 @@ }, { "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "type": "string", + "example": "1", "description": "API resource entity version.", "api_fieldname": "etag", "entity_fieldname": "etag", @@ -49537,126 +68786,358 @@ }, { "type": "string", - "description": "Unique entity ID.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, "_key": "id" }, { - "type": "string", - "description": "Entity name: always `server-credentials`.", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, { "type": "string", - "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", - "api_fieldname": "server_certificate", - "entity_fieldname": "server_certificate", - "_key": "server_certificate" + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" }, { "type": "string", - "description": "Server URI that the client connects to.", - "api_fieldname": "server_uri", - "entity_fieldname": "server_uri", - "_key": "server_uri" - } - ], - "foreign_key": { - "group": "Security", - "entity": "server_credentials" - } - }, - "examples": [ - { - "object": "server-credentials", - "id": "015fee4431fd38c98640fbfb00000000", - "etag": "1", - "created_at": "2017-12-11T14:22:20.009Z", - "server_certificate": "-----BEGIN CERTIFICATE-----\\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\\n-----END CERTIFICATE-----", - "server_uri": "coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000", - "_key": "Success" - } - ], - "_key": "200" - }, - { - "description": "Bad request.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" }, { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "_key": "fields" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", + "in": "body", + "required": false, + "_key": "saml2_attributes" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Status of the identity provider.", "enum": [ - "error" + "ACTIVE", + "SUSPENDED" ], - "_key": "object" + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "identity_provider_status_enum", + "_key": "status" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider" + } }, - "_key": "400" + "_key": "200" }, { - "description": "Invalid access token.", + "description": "Authentication failure.", "schema": { "type": "object", "required": [ @@ -49726,128 +69207,10 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 401, - "type": "invalid_auth", - "message": "Invalid access token.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "_key": "Authentication Error" - } - ], "_key": "401" - } - ], - "path": "/v3/server-credentials/bootstrap", - "summary": "Fetch bootstrap server credentials.", - "return_type": "server_credentials", - "return_info": { - "self": true, - "custom": false, - "type": "server_credentials" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "id", - "created_at", - "server_certificate", - "server_uri" - ], - "group_id": "Security", - "operation_id": "getBootstrapServerCredentials", - "additional_operations": [ - { - "operation_id": "getAllServerCredentials", - "notes": "The information returned by this endpoint can be obtained by calling `get_bootstrap`." - } - ], - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "get_bootstrap" - }, - { - "description": "Return LwM2M server credentials for client to connect to LwM2M server.\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/lwm2m \\\n-H \"Authorization: Bearer \"\n```", - "field_renames": [], - "fields": [], - "method": "get", - "mode": "get_lwm2m", - "responses": [ - { - "description": "LwM2M server credentials fetched successfully.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "entity_fieldname": "created_at", - "_key": "created_at" - }, - { - "type": "string", - "description": "API resource entity version.", - "api_fieldname": "etag", - "entity_fieldname": "etag", - "_key": "etag" - }, - { - "type": "string", - "description": "Unique entity ID.", - "api_fieldname": "id", - "entity_fieldname": "id", - "_key": "id" - }, - { - "type": "string", - "description": "Entity name: always `server-credentials`.", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "type": "string", - "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", - "api_fieldname": "server_certificate", - "entity_fieldname": "server_certificate", - "_key": "server_certificate" - }, - { - "type": "string", - "description": "Server URI that the client connects to.", - "api_fieldname": "server_uri", - "entity_fieldname": "server_uri", - "_key": "server_uri" - } - ], - "foreign_key": { - "group": "Security", - "entity": "server_credentials" - } - }, - "examples": [ - { - "object": "server-credentials", - "id": "015fee4431fd38c98640fbfb00000000", - "etag": "1", - "created_at": "2017-12-11T14:22:20.009Z", - "server_certificate": "-----BEGIN CERTIFICATE-----\\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\\n-----END CERTIFICATE-----", - "server_uri": "coaps://mds.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000", - "_key": "Success" - } - ], - "_key": "200" }, { - "description": "Bad request.", + "description": "Forbidden.", "schema": { "type": "object", "required": [ @@ -49917,10 +69280,10 @@ } ] }, - "_key": "400" + "_key": "403" }, { - "description": "Invalid access token.", + "description": "An account or identity provider not found.", "schema": { "type": "object", "required": [ @@ -49990,26 +69353,16 @@ } ] }, - "examples": [ - { - "object": "error", - "code": 401, - "type": "invalid_auth", - "message": "Invalid access token.", - "request_id": "015fee4431fd38c98640fbfb00000000", - "_key": "Authentication Error" - } - ], - "_key": "401" + "_key": "404" } ], - "path": "/v3/server-credentials/lwm2m", - "summary": "Fetch LwM2M server credentials.", - "return_type": "server_credentials", + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}/delete-sp-certificate", + "summary": "Delete the service provider certificate.", + "return_type": "subtenant_identity_provider", "return_info": { "self": true, "custom": false, - "type": "server_credentials" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -50018,84 +69371,33 @@ "etag", "type", "filter", - "id", "created_at", - "server_certificate", - "server_uri" - ], - "group_id": "Security", - "operation_id": "getL2M2MServerCredentials", - "additional_operations": [ - { - "operation_id": "getAllServerCredentials", - "notes": "The information returned by this endpoint can be obtained by calling `get_lwm2m`." - } + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "is_default" ], + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "deleteAccountSpCertificate", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "get_lwm2m" - } - ], - "fields": [ - { - "type": "string", - "format": "date-time", - "description": "Creation UTC time RFC3339.", - "api_fieldname": "created_at", - "readOnly": true, - "required": false, - "_key": "created_at" - }, - { - "type": "string", - "description": "Unique entity ID.", - "api_fieldname": "id", - "readOnly": true, - "required": false, - "_key": "id" - }, - { - "type": "string", - "description": "PEM-format X.509 server certificate used to validate the server certificate received during the TLS/DTLS handshake.", - "api_fieldname": "server_certificate", - "readOnly": true, - "required": false, - "_key": "server_certificate" + "_key": "delete_service_provider_certificate" }, { - "type": "string", - "description": "Server URI that the client connects to.", - "api_fieldname": "server_uri", - "readOnly": true, - "required": false, - "_key": "server_uri" - } - ], - "field_renames": [], - "tags": [ - "Service security - server credentials" - ], - "group_id": "Security", - "_key": "server_credentials" - }, - { - "swagger_models": [ - "ApiKeyInfoReq", - "ApiKeyInfoResp", - "ApiKeyUpdateReq", - "GroupSummaryList" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "Create a new API key. There is no default value for the owner ID, and it must be from the same account where the new API key is created.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"MyKey1\"}'\n```", + "description": "Generate a new service provider certificate.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -50104,79 +69406,85 @@ "required": true, "_key": "account_id" }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, { "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", + "description": "The algorithm and its key size used for generating the certificate. Defaults to RSA2048.", + "enum": [ + "RSA2048", + "RSA3072", + "EC224", + "EC256", + "EC384", + "EC521", + "ECDSA224", + "ECDSA256", + "ECDSA384", + "ECDSA521" + ], + "name": "algorithm", "in": "body", - "required": true, - "_key": "name" + "schema_param": true, + "entity_fieldname": "algorithm", + "api_fieldname": "algorithm", + "external_param": true, + "parameter_fieldname": "algorithm", + "required": false, + "enum_reference": "subtenant_identity_provider_algorithm_enum", + "_key": "algorithm" }, { "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", - "in": "body", - "required": false, - "_key": "owner" + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" }, { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "api_fieldname": "status", - "entity_fieldname": "status", - "parameter_fieldname": "status", + "type": "integer", + "format": "int32", + "description": "Validity for the certificate in days.", + "name": "validity", "in": "body", + "schema_param": true, + "entity_fieldname": "validity", + "api_fieldname": "validity", + "external_param": true, + "parameter_fieldname": "validity", "required": false, - "enum_reference": "subtenant_api_key_status_enum", - "_key": "status" + "_key": "validity" } ], "method": "post", - "mode": "create", + "mode": "generate_service_provider_certificate", "responses": [ { - "description": "New entity created.", + "description": "Successful operation.", + "headers": [ + { + "type": "string", + "description": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], "schema": { "type": "object", "required": [ "etag", "id", - "key", "name", - "object" + "object", + "type" ], "properties": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -50192,13 +69500,15 @@ "_key": "created_at" }, { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { "type": "string", @@ -50208,53 +69518,30 @@ "entity_fieldname": "etag", "_key": "etag" }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", - "in": "path", - "required": true, - "_key": "id" - }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, { "type": "string", "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "description": "Name of the identity provider.", "api_fieldname": "name", "entity_fieldname": "name", "parameter_fieldname": "name", @@ -50264,42 +69551,308 @@ }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'identity-provider'", "enum": [ - "api-key" + "identity-provider" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, - "_key": "owner" + "_key": "saml2_attributes" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", + "description": "Status of the identity provider.", "enum": [ "ACTIVE", - "INACTIVE" + "SUSPENDED" ], "api_fieldname": "status", "entity_fieldname": "status", "parameter_fieldname": "status", "in": "body", "required": false, - "enum_reference": "api_key_status_enum", + "enum_reference": "identity_provider_status_enum", "_key": "status" }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" + }, { "type": "string", "format": "date-time", @@ -50310,16 +69863,15 @@ "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { "group": "Accounts", - "entity": "api_key" + "entity": "identity_provider" } }, - "_key": "201" + "_key": "200" }, { - "description": "Error in input data, for example, missing display name.", + "description": "Error in input data, for example, invalid certificate validity value.", "schema": { "type": "object", "required": [ @@ -50538,7 +70090,7 @@ "_key": "403" }, { - "description": "An account with the given ID does not exist.", + "description": "An account or identity provider not found.", "schema": { "type": "object", "required": [ @@ -50576,108 +70128,606 @@ "description": "Name of the field which caused the error.", "_key": "name" } - ] + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "404" + } + ], + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}/generate-sp-certificate", + "summary": "Generate a new service provider certificate.", + "return_type": "subtenant_identity_provider", + "return_info": { + "self": true, + "custom": false, + "type": "subtenant_identity_provider" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "created_at", + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "is_default" + ], + "group_id": "Accounts", + "parameter_map": { + "identity_provider_id": "id" + }, + "operation_id": "generateAccountSpCertificate", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "generate_service_provider_certificate" + }, + { + "description": "Retrieve an array of identity providers.\nNote: This endpoint is restricted to administrators.", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "The ID of the account.", + "required": true, + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", + "required": false, + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" + }, + { + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "subtenant_identity_provider_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "list", + "responses": [ + { + "description": "Successful operation.", + "schema": { + "type": "object", + "required": [ + "data", + "has_more", + "limit", + "object", + "total_count" + ], + "properties": [ + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" + }, + { + "type": "array", + "description": "A list of entities.", + "items": { + "type": "object", + "required": [ + "etag", + "id", + "name", + "object", + "type" + ], + "properties": [ + { + "type": "string", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "_key": "description" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "_key": "object" + }, + { + "type": "object", + "required": [ + "issuer" + ], + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "_key": "saml2_attributes" + }, + { + "type": "string", + "description": "Status of the identity provider.", + "enum": [ + "ACTIVE", + "SUSPENDED" + ], + "_key": "status" + }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "_key": "type" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider" + } }, - "_key": "fields" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always `list`.", "enum": [ - "error" + "list" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "identity_provider_order_enum", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" + } }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/api-keys", - "summary": "Create a new API key.", - "return_type": "subtenant_api_key", - "return_info": { - "self": true, - "custom": false, - "type": "subtenant_api_key" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "id", - "created_at", - "updated_at", - "key", - "creation_time", - "last_login_time" - ], - "group_id": "Accounts", - "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "createAccountApiKey", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "create" - }, - { - "description": "Delete an API key.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "account_id", - "api_fieldname": "account_id", - "external_param": false, - "parameter_fieldname": "account_id", - "_key": "account_id" - }, - { - "name": "apikey_id", - "in": "path", - "description": "The ID of the API key to delete.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "apikey_id", - "external_param": false, - "parameter_fieldname": "apikey_id", - "_key": "id" - } - ], - "method": "delete", - "mode": "delete", - "responses": [ - { - "description": "Deleted successfully.", - "_key": "204" + "_key": "200" }, { "description": "Authentication failure.", @@ -50826,7 +70876,7 @@ "_key": "403" }, { - "description": "An account or API key with the specified ID does not exist.", + "description": "Account not found.", "schema": { "type": "object", "required": [ @@ -50899,13 +70949,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", - "summary": "Delete the API key.", - "return_type": "subtenant_api_key", + "path": "/v3/accounts/{account_id}/identity-providers", + "summary": "Get all identity providers.", + "return_type": "paginated_response(subtenant_identity_provider)", "return_info": { "self": true, "custom": false, - "type": "subtenant_api_key" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -50913,289 +70963,455 @@ "object", "etag", "type", - "filter" + "filter", + "total_count", + "has_more", + "data" ], + "foreign_key_priority": "self", "group_id": "Accounts", "parameter_map": { - "apikey_id": "id" + "identity_provider_id": "id" + }, + "operation_id": "getAllAccountIdentityProviders", + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "subtenant_identity_provider" }, - "operation_id": "deleteAccountApiKey", - "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "delete" + "_key": "list" }, { - "description": "Retrieve groups associated with the API key.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an identity provider.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, "type": "string", - "entity_fieldname": "account_id", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", - "external_param": false, + "entity_fieldname": "account_id", "parameter_fieldname": "account_id", + "in": "path", + "required": true, "_key": "account_id" }, { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "apikey_id", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", "in": "path", - "description": "The ID of the API key.", "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "apikey_id", - "external_param": false, - "parameter_fieldname": "apikey_id", "_key": "id" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "subtenant_api_key_order_enum", - "_key": "order" } ], "method": "get", - "mode": "policy_groups", + "mode": "read", "responses": [ { "description": "Successful operation.", "schema": { "type": "object", "required": [ - "data", - "has_more", - "limit", + "etag", + "id", + "name", "object", - "total_count" + "type" ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" + "_key": "description" }, { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "apikey_count", - "etag", - "id", - "name", - "object", - "user_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "integer", - "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "_key": "name" + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'identity-provider'", + "enum": [ + "identity-provider" + ], + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" }, - { - "type": "string", - "description": "Entity name: always `group`.", - "enum": [ - "group" + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } ], - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "_key": "user_count" - } - ], - "description": "This object contains basic information about groups.", - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" }, { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", + "in": "body", "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "_key": "saml2_attributes" }, { "type": "string", - "description": "Entity name: always `list`.", + "description": "Status of the identity provider.", "enum": [ - "list" + "ACTIVE", + "SUSPENDED" ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "api_fieldname": "status", + "entity_fieldname": "status", + "parameter_fieldname": "status", + "in": "body", + "required": false, + "enum_reference": "identity_provider_status_enum", + "_key": "status" }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Identity provider type.", "enum": [ - "ASC", - "DESC" + "NATIVE", + "MBED", + "SAML2", + "OIDC" ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "api_key_order_enum", - "_key": "order" + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" }, { - "type": "integer", - "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } ], - "pagination": true, "foreign_key": { "group": "Accounts", - "entity": "subtenant_policy_group" + "entity": "identity_provider" } }, "_key": "200" @@ -51347,7 +71563,7 @@ "_key": "403" }, { - "description": "An account or API key with the specified ID does not exist.", + "description": "An account or identity provider not found.", "schema": { "type": "object", "required": [ @@ -51420,13 +71636,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}/groups", - "summary": "Get groups associated with the API key.", - "return_type": "paginated_response(subtenant_policy_group)", + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "summary": "Get an identity provider.", + "return_type": "subtenant_identity_provider", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_policy_group" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -51435,31 +71651,33 @@ "etag", "type", "filter", - "total_count", - "has_more", - "data" + "created_at", + "updated_at", + "name", + "description", + "status", + "saml2_attributes", + "oidc_attributes", + "is_default" ], "group_id": "Accounts", "parameter_map": { - "apikey_id": "id" - }, - "operation_id": "getGroupsOfAccountApikey", - "foreign_key": { - "entity": "subtenant_policy_group" + "identity_provider_id": "id" }, - "pagination": true, + "operation_id": "getAccountIdentityProvider", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "policy_groups" + "_key": "read" }, { - "description": "Retrieve API key details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n -H 'Authorization: Bearer '\n```", + "description": "Refresh an OIDC IdP's signing keys.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -51470,36 +71688,43 @@ }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "_key": "id" } ], - "method": "get", - "mode": "read", + "method": "post", + "mode": "refresh_tokens", "responses": [ { "description": "Successful operation.", + "headers": [ + { + "type": "string", + "description": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "_key": "Content-Location" + } + ], "schema": { "type": "object", "required": [ "etag", "id", - "key", "name", - "object" + "object", + "type" ], "properties": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -51515,13 +71740,15 @@ "_key": "created_at" }, { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { "type": "string", @@ -51531,53 +71758,30 @@ "entity_fieldname": "etag", "_key": "etag" }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "_key": "id" }, { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, { "type": "string", "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "description": "Name of the identity provider.", "api_fieldname": "name", "entity_fieldname": "name", "parameter_fieldname": "name", @@ -51587,42 +71791,308 @@ }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'identity-provider'", "enum": [ - "api-key" + "identity-provider" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, - "_key": "owner" + "_key": "saml2_attributes" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", + "description": "Status of the identity provider.", "enum": [ "ACTIVE", - "INACTIVE" + "SUSPENDED" ], "api_fieldname": "status", "entity_fieldname": "status", "parameter_fieldname": "status", "in": "body", "required": false, - "enum_reference": "api_key_status_enum", + "enum_reference": "identity_provider_status_enum", "_key": "status" }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" + }, { "type": "string", "format": "date-time", @@ -51633,14 +72103,86 @@ "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { "group": "Accounts", - "entity": "api_key" + "entity": "identity_provider" } }, "_key": "200" }, + { + "description": "Not an OIDC IdP or JWKS URI is unspecified.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, { "description": "Authentication failure.", "schema": { @@ -51788,7 +72330,7 @@ "_key": "403" }, { - "description": "An account or API key with the specified ID does not exist.", + "description": "An account or identity provider not found.", "schema": { "type": "object", "required": [ @@ -51861,13 +72403,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", - "summary": "Get API key details.", - "return_type": "subtenant_api_key", + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}/refresh-jwks", + "summary": "Refresh the OIDC signing keys.", + "return_type": "subtenant_identity_provider", "return_info": { "self": true, "custom": false, - "type": "subtenant_api_key" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -51878,32 +72420,31 @@ "filter", "created_at", "updated_at", - "key", "name", - "groups", - "owner", + "description", "status", - "creation_time", - "last_login_time" + "saml2_attributes", + "oidc_attributes", + "is_default" ], "group_id": "Accounts", "parameter_map": { - "apikey_id": "id" + "identity_provider_id": "id" }, - "operation_id": "getAccountApiKey", + "operation_id": "refreshAccountJwks", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "refresh_tokens" }, { - "description": "Update API key details.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestApiKey25\"}'\n```", + "description": "Update an existing identity provider.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -51913,68 +72454,327 @@ "_key": "account_id" }, { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" + }, + { + "in": "query", + "name": "discovery", + "description": "Indicates that the OpenID Connect endpoints and keys should be set using the OpenID Connect Discovery mechanism. The following parameters are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint * revocation_endpoint * jwks_uri * keys", + "type": "boolean", + "allowEmptyValue": true, + "entity_fieldname": "discovery", + "api_fieldname": "discovery", + "external_param": true, + "parameter_fieldname": "discovery", + "required": false, + "_key": "discovery" + }, + { + "type": "string", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "identity_provider_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "description": "Name of the identity provider.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" + }, + { + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, - { - "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "id", - "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", - "in": "path", - "required": true, - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", - "api_fieldname": "name", - "entity_fieldname": "name", - "parameter_fieldname": "name", + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", "in": "body", - "required": true, - "_key": "name" + "_key": "oidc_attributes" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, - "_key": "owner" + "_key": "saml2_attributes" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", + "description": "Status of the identity provider.", "enum": [ "ACTIVE", - "INACTIVE" + "SUSPENDED" ], "api_fieldname": "status", "entity_fieldname": "status", "parameter_fieldname": "status", "in": "body", "required": false, - "enum_reference": "subtenant_api_key_status_enum", + "enum_reference": "subtenant_identity_provider_status_enum", "_key": "status" } ], @@ -51988,15 +72788,15 @@ "required": [ "etag", "id", - "key", "name", - "object" + "object", + "type" ], "properties": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "entity_fieldname": "account_id", @@ -52012,13 +72812,15 @@ "_key": "created_at" }, { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "entity_fieldname": "creation_time", - "_key": "creation_time" + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "entity_fieldname": "description", + "parameter_fieldname": "description", + "in": "body", + "required": false, + "_key": "description" }, { "type": "string", @@ -52028,53 +72830,30 @@ "entity_fieldname": "etag", "_key": "etag" }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "entity_fieldname": "groups", - "parameter_fieldname": "groups", - "in": "body", - "required": false, - "_key": "groups" - }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", "api_fieldname": "id", "entity_fieldname": "id", - "parameter_fieldname": "apikey_id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "_key": "id" }, { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "entity_fieldname": "key", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", - "entity_fieldname": "last_login_time", - "_key": "last_login_time" + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", + "readOnly": true, + "api_fieldname": "is_default", + "entity_fieldname": "is_default", + "_key": "is_default" }, { "type": "string", "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "description": "Name of the identity provider.", "api_fieldname": "name", "entity_fieldname": "name", "parameter_fieldname": "name", @@ -52084,42 +72863,308 @@ }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always 'identity-provider'", "enum": [ - "api-key" + "identity-provider" ], "api_fieldname": "object", "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "entity_fieldname": "owner", - "parameter_fieldname": "owner", + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "entity_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "entity_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, - "_key": "owner" + "_key": "saml2_attributes" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", + "description": "Status of the identity provider.", "enum": [ "ACTIVE", - "INACTIVE" + "SUSPENDED" ], "api_fieldname": "status", "entity_fieldname": "status", "parameter_fieldname": "status", "in": "body", "required": false, - "enum_reference": "api_key_status_enum", + "enum_reference": "identity_provider_status_enum", "_key": "status" }, + { + "type": "string", + "description": "Identity provider type.", + "enum": [ + "NATIVE", + "MBED", + "SAML2", + "OIDC" + ], + "api_fieldname": "type", + "entity_fieldname": "type", + "parameter_fieldname": "type", + "in": "body", + "required": true, + "enum_reference": "identity_provider_type_enum", + "_key": "type" + }, { "type": "string", "format": "date-time", @@ -52130,16 +73175,15 @@ "_key": "updated_at" } ], - "description": "Represents an API key in Device Management.", "foreign_key": { "group": "Accounts", - "entity": "api_key" + "entity": "identity_provider" } }, "_key": "200" }, { - "description": "Error in input data, for example, missing display name.", + "description": "Error in input data, for example, missing name.", "schema": { "type": "object", "required": [ @@ -52358,7 +73402,7 @@ "_key": "403" }, { - "description": "An account ID or API key with the specified ID does not exist.", + "description": "An account or identity provider not found.", "schema": { "type": "object", "required": [ @@ -52431,13 +73475,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/api-keys/{apikey_id}", - "summary": "Update API key details.", - "return_type": "subtenant_api_key", + "path": "/v3/accounts/{account_id}/identity-providers/{identity_provider_id}", + "summary": "Update an existing identity provider.", + "return_type": "subtenant_identity_provider", "return_info": { "self": true, "custom": false, - "type": "subtenant_api_key" + "type": "subtenant_identity_provider" }, "x_filter": {}, "x_deprecation": null, @@ -52448,15 +73492,13 @@ "filter", "created_at", "updated_at", - "key", - "creation_time", - "last_login_time" + "is_default" ], "group_id": "Accounts", "parameter_map": { - "apikey_id": "id" + "identity_provider_id": "id" }, - "operation_id": "updateAccountApiKey", + "operation_id": "updateAccountIdentityProvider", "pagination": false, "request_content_type": "application/json", "request_body": "json", @@ -52467,7 +73509,7 @@ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account the identity provider belongs to.", "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", "readOnly": false, @@ -52485,64 +73527,40 @@ "_key": "created_at" }, { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "api_fieldname": "creation_time", - "readOnly": true, - "required": false, - "_key": "creation_time" - }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "api_fieldname": "groups", - "parameter_fieldname": "groups", + "type": "string", + "maxLength": 500, + "description": "Description for the identity provider.", + "api_fieldname": "description", + "parameter_fieldname": "description", "in": "body", "required": false, "readOnly": false, - "_key": "groups" + "_key": "description" }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571d01d0242ac12000600000000", + "description": "Entity ID.", "pattern": "[a-f0-9]{32}", "api_fieldname": "id", - "parameter_fieldname": "apikey_id", + "parameter_fieldname": "identity_provider_id", "in": "path", "required": true, "readOnly": false, "_key": "id" }, { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "api_fieldname": "key", - "readOnly": true, - "required": false, - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "api_fieldname": "last_login_time", + "type": "boolean", + "description": "Flag indicating whether this is the global default identity provider.", "readOnly": true, + "api_fieldname": "is_default", "required": false, - "_key": "last_login_time" + "_key": "is_default" }, { "type": "string", "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "description": "Name of the identity provider.", "api_fieldname": "name", "parameter_fieldname": "name", "in": "body", @@ -52551,30 +73569,279 @@ "_key": "name" }, { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "api_fieldname": "owner", - "parameter_fieldname": "owner", + "type": "object", + "required": false, + "properties": [ + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "authorization_endpoint" + }, + { + "type": "boolean", + "description": "For future use.", + "x-nullable": true, + "_key": "auto_enrollment" + }, + { + "description": "Mapping for non-standard OIDC claim names.", + "type": "object", + "properties": [ + { + "type": "string", + "description": "Custom claim name for 'email'.", + "example": "email_address", + "x-nullable": true, + "_key": "email" + }, + { + "type": "string", + "description": "Custom claim name for 'email_verified'.", + "example": "email_verified", + "x-nullable": true, + "_key": "email_verified" + }, + { + "type": "string", + "description": "Custom claim name for 'family_name'.", + "example": "family_name", + "x-nullable": true, + "_key": "family_name" + }, + { + "type": "string", + "description": "Custom claim name for 'given_name'.", + "example": "given_name", + "x-nullable": true, + "_key": "given_name" + }, + { + "type": "string", + "description": "Custom claim name for 'name'.", + "example": "name", + "x-nullable": true, + "_key": "name" + }, + { + "type": "string", + "description": "Custom claim name for 'phone_number'.", + "example": "phone_number", + "x-nullable": true, + "_key": "phone_number" + }, + { + "type": "string", + "description": "Custom claim name for 'sub'.", + "example": "sub", + "x-nullable": true, + "_key": "sub" + }, + { + "type": "string", + "description": "Custom claim name for 'updated_at'.", + "example": "updated_at", + "x-nullable": true, + "_key": "updated_at" + }, + { + "type": "string", + "description": "Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat class.", + "example": "yyyy-MM-dd'T'HH:mm:ssXXX", + "x-nullable": true, + "_key": "updated_at_pattern" + } + ], + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request_claim_mapping" + }, + "x-nullable": true, + "_key": "claim_mapping" + }, + { + "type": "string", + "description": "Client ID needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_id" + }, + { + "type": "string", + "description": "Client secret needed to authenticate and gain access to identity provider's API.", + "x-nullable": true, + "_key": "client_secret" + }, + { + "type": "string", + "description": "URL of the provider's end session endpoint.", + "x-nullable": true, + "_key": "end_session_endpoint" + }, + { + "type": "string", + "description": "Issuer of the identity provider.", + "_key": "issuer" + }, + { + "type": "string", + "description": "URL of the provider's JSON web key set document.", + "x-nullable": true, + "_key": "jwks_uri" + }, + { + "type": "array", + "description": "Provider's public keys and key IDs used to sign ID tokens. PEM-encoded.", + "items": { + "type": "object", + "properties": [ + { + "type": "string", + "description": "The public key.", + "_key": "key" + }, + { + "type": "string", + "description": "The public key ID.", + "_key": "kid" + } + ], + "description": "Represents provider's public key and key ID used to sign ID tokens. PEM-encoded.", + "foreign_key": { + "group": "Accounts", + "entity": "identity_provider_public_key" + } + }, + "x-nullable": true, + "_key": "keys" + }, + { + "type": "string", + "description": "The URI needed to authenticate and gain access to identity provider's API. Leave this empty to use the default redirect URI.", + "x-nullable": true, + "_key": "redirect_uri" + }, + { + "type": "string", + "description": "URL of the provider's token revocation endpoint.", + "x-nullable": true, + "_key": "revocation_endpoint" + }, + { + "type": "string", + "description": "Space-separated list of scopes sent in the authentication request. When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims).", + "example": "openid email", + "_key": "scopes" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 authorization endpoint.", + "x-nullable": true, + "_key": "token_endpoint" + }, + { + "type": "string", + "enum": [ + "POST", + "GET" + ], + "default": "POST", + "description": "One way to obtain the access token. Since the request results in the transmission of clear-text credentials, the client must use the POST mode.", + "_key": "token_request_mode" + }, + { + "type": "string", + "description": "Path to the standard data in the token response. Levels in the JSON structure must be separated by '.' (dot) characters.", + "example": "oidc.data", + "_key": "token_response_path" + }, + { + "type": "string", + "description": "URL of the OAuth 2.0 UserInfo endpoint.", + "x-nullable": true, + "_key": "userinfo_endpoint" + } + ], + "description": "Represents OIDC specific attributes.", + "foreign_key": { + "group": "Accounts", + "entity": "oidc_request" + }, + "api_fieldname": "oidc_attributes", + "parameter_fieldname": "oidc_attributes", + "in": "body", + "readOnly": false, + "_key": "oidc_attributes" + }, + { + "type": "object", + "properties": [ + { + "type": "string", + "description": "URL of the service provider's assertion endpoint. Leave this empty to use the default assertion endpoint.", + "x-nullable": true, + "_key": "assertion_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the identity provider.", + "x-nullable": true, + "_key": "idp_entity_id" + }, + { + "type": "array", + "description": "List of public X509 certificates of the identity provider in PEM format.", + "items": { + "type": "string" + }, + "x-nullable": true, + "_key": "idp_x509_certs" + }, + { + "type": "string", + "description": "URL of the identity provider's SLO endpoint.", + "x-nullable": true, + "_key": "slo_endpoint" + }, + { + "type": "string", + "description": "Entity ID of the service provider.", + "x-nullable": true, + "_key": "sp_entity_id" + }, + { + "type": "string", + "description": "Public X509 certificate of the service provider in PEM format. This is a read-only attribute, see API documentation about how to generate a new one or how to delete it.", + "readOnly": true, + "x-nullable": true, + "_key": "sp_x509_cert" + }, + { + "type": "string", + "description": "URL of the identity provider's SSO endpoint.", + "x-nullable": true, + "_key": "sso_endpoint" + } + ], + "description": "Represents SAML2 specific attributes in responses.", + "api_fieldname": "saml2_attributes", + "parameter_fieldname": "saml2_attributes", "in": "body", "required": false, "readOnly": false, - "_key": "owner" + "_key": "saml2_attributes" }, { "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", + "description": "Status of the identity provider.", "enum": [ "ACTIVE", - "INACTIVE" + "SUSPENDED" ], "api_fieldname": "status", "parameter_fieldname": "status", "in": "body", "required": false, - "enum_reference": "subtenant_api_key_status_enum", + "enum_reference": "subtenant_identity_provider_status_enum", "readOnly": false, "_key": "status" }, @@ -52591,10 +73858,10 @@ ], "field_renames": [], "tags": [ - "Tenant accounts - API keys" + "Tenant accounts - identity providers" ], "group_id": "Accounts", - "_key": "subtenant_api_key" + "_key": "subtenant_identity_provider" }, { "swagger_models": [ @@ -52603,13 +73870,13 @@ "primary_key_field": "reference", "methods": [ { - "description": "Resets the branding color of a tenant account to its dark theme default.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "Resets the branding color to its light theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -52646,7 +73913,7 @@ "in": "path", "description": "The name of the branding color.", "required": true, - "enum_reference": "subtenant_dark_theme_color_reference_enum", + "enum_reference": "subtenant_light_theme_color_reference_enum", "_key": "reference" } ], @@ -52877,7 +74144,7 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", + "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", "summary": "Reset branding color to default.", "return_type": "void", "return_info": { @@ -52894,7 +74161,7 @@ "filter" ], "group_id": "Branding", - "operation_id": "resetAccountDarkColor", + "operation_id": "resetAccountLightColor", "spec": { "return_type": "void" }, @@ -52904,13 +74171,13 @@ "_key": "delete" }, { - "description": "Retrieve the requested dark theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve the requested light theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference}\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -52947,7 +74214,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "subtenant_dark_theme_color_reference_enum", + "enum_reference": "subtenant_light_theme_color_reference_enum", "_key": "reference" } ], @@ -53016,7 +74283,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "light_theme_color_reference_enum", + "enum_reference": "subtenant_dark_theme_color_reference_enum", "_key": "reference" }, { @@ -53035,7 +74302,7 @@ ], "foreign_key": { "group": "Branding", - "entity": "subtenant_light_theme_color" + "entity": "subtenant_dark_theme_color" } }, "_key": "200" @@ -53260,13 +74527,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", - "summary": "Get dark theme branding color.", - "return_type": "subtenant_dark_theme_color", + "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", + "summary": "Get light theme branding color.", + "return_type": "subtenant_light_theme_color", "return_info": { "self": true, "custom": false, - "type": "subtenant_dark_theme_color" + "type": "subtenant_light_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -53279,20 +74546,20 @@ "updated_at" ], "group_id": "Branding", - "operation_id": "getAccountDarkColor", + "operation_id": "getAccountLightColor", "pagination": false, "request_content_type": "application/json", "request_body": "json", "_key": "read" }, { - "description": "Update a dark theme branding color of a tenant account.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"#f3f93e\" }'\n```", + "description": "Update a light theme branding color.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"purple\" }'\n```", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -53341,7 +74608,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "subtenant_dark_theme_color_reference_enum", + "enum_reference": "subtenant_light_theme_color_reference_enum", "_key": "reference" }, { @@ -53362,7 +74629,7 @@ "mode": "update", "responses": [ { - "description": "Color has been set successfully.", + "description": "Color set successfully.", "schema": { "type": "object", "properties": [ @@ -53423,7 +74690,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "light_theme_color_reference_enum", + "enum_reference": "subtenant_dark_theme_color_reference_enum", "_key": "reference" }, { @@ -53442,7 +74709,7 @@ ], "foreign_key": { "group": "Branding", - "entity": "subtenant_light_theme_color" + "entity": "subtenant_dark_theme_color" } }, "_key": "200" @@ -53740,13 +75007,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/dark/{reference}", - "summary": "Updates a dark theme branding color.", - "return_type": "subtenant_dark_theme_color", + "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", + "summary": "Updates light theme branding color.", + "return_type": "subtenant_light_theme_color", "return_info": { "self": true, "custom": false, - "type": "subtenant_dark_theme_color" + "type": "subtenant_light_theme_color" }, "x_filter": {}, "x_deprecation": null, @@ -53757,10 +75024,10 @@ "filter" ], "group_id": "Branding", - "operation_id": "setAccountDarkColor", + "operation_id": "setAccountLightColor", "additional_operations": [ { - "operation_id": "bulkSetAccountDarkColors", + "operation_id": "bulkSetAccountLightColors", "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." } ], @@ -53810,7 +75077,7 @@ "name": "reference", "in": "path", "required": false, - "enum_reference": "subtenant_dark_theme_color_reference_enum", + "enum_reference": "subtenant_light_theme_color_reference_enum", "readOnly": false, "_key": "reference" }, @@ -53832,7 +75099,7 @@ "Tenant user interface configuration - colors" ], "group_id": "Branding", - "_key": "subtenant_dark_theme_color" + "_key": "subtenant_light_theme_color" }, { "swagger_models": [ @@ -53841,13 +75108,13 @@ "primary_key_field": "reference", "methods": [ { - "description": "Revert an account branding image to dark theme default.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", + "description": "Revert an account branding image to light theme default.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -53893,439 +75160,28 @@ "carousel_image_landscape_0", "carousel_image_landscape_1", "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "name": "reference", - "in": "path", - "description": "Name of the branding images (icon or picture).", - "required": true, - "enum_reference": "subtenant_dark_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "post", - "mode": "delete", - "responses": [ - { - "description": "Image reverted successfully.", - "_key": "204" - }, - { - "description": "Authentication failure.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "403" - }, - { - "description": "Unknown image reference, or account not found.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}/clear", - "summary": "Revert an image to dark theme default.", - "return_type": "subtenant_dark_theme_image", - "return_info": { - "self": true, - "custom": false, - "type": "subtenant_dark_theme_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "clearAccountDarkImage", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve metadata of one account dark theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "account_id", - "api_fieldname": "account_id", - "external_param": true, - "parameter_fieldname": "account_id", - "_key": "account_id" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_dark_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "light_theme_image_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_light_theme_image" - } - }, - "_key": "200" + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "name": "reference", + "in": "path", + "description": "Name of the branding images (icon or picture).", + "required": true, + "enum_reference": "subtenant_light_theme_image_reference_enum", + "_key": "reference" + } + ], + "method": "post", + "mode": "delete", + "responses": [ + { + "description": "Image reverted successfully.", + "_key": "204" }, { "description": "Authentication failure.", @@ -54547,13 +75403,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}", - "summary": "Get metadata of a dark theme image.", - "return_type": "subtenant_dark_theme_image", + "path": "/v3/accounts/{account_id}/branding-images/light/{reference}/clear", + "summary": "Revert an image to light theme default.", + "return_type": "subtenant_light_theme_image", "return_info": { "self": true, "custom": false, - "type": "subtenant_dark_theme_image" + "type": "subtenant_light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -54561,25 +75417,23 @@ "object", "etag", "type", - "filter", - "static_uri", - "updated_at" + "filter" ], "group_id": "Branding", - "operation_id": "getAccountDarkImageData", + "operation_id": "clearAccountLightImage", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "delete" }, { - "description": "Upload a new account dark theme branding image as form data in PNG or JPEG format.", + "description": "Retrieve metadata for one account light theme branding image.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -54588,18 +75442,6 @@ "parameter_fieldname": "account_id", "_key": "account_id" }, - { - "in": "stream", - "name": "image", - "description": "The image in PNG or JPEG format as multipart form data.", - "required": true, - "type": "file", - "entity_fieldname": "image", - "api_fieldname": "image", - "external_param": true, - "parameter_fieldname": "image", - "_key": "image" - }, { "enum": [ "brand_logo_portrait", @@ -54649,27 +75491,15 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "subtenant_dark_theme_image_reference_enum", + "enum_reference": "subtenant_light_theme_image_reference_enum", "_key": "reference" } ], - "method": "post", - "mode": "update", + "method": "get", + "mode": "read", "responses": [ { - "description": "Image uploaded successfully.", - "headers": [ - { - "type": "string", - "description": "Location of the image metadata.", - "_key": "Content-Location" - }, - { - "type": "string", - "description": "Location of the image binary.", - "_key": "Location" - } - ], + "description": "Successful operation.", "schema": { "type": "object", "properties": [ @@ -54733,7 +75563,7 @@ "name": "reference", "in": "path", "required": true, - "enum_reference": "light_theme_image_reference_enum", + "enum_reference": "subtenant_dark_theme_image_reference_enum", "_key": "reference" }, { @@ -54759,83 +75589,10 @@ ], "foreign_key": { "group": "Branding", - "entity": "subtenant_light_theme_image" + "entity": "subtenant_dark_theme_image" } }, - "_key": "201" - }, - { - "description": "Error in input data format, for example, image is too large.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" - }, - { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "400" + "_key": "200" }, { "description": "Authentication failure.", @@ -54984,7 +75741,7 @@ "_key": "403" }, { - "description": "Unknown image reference.", + "description": "Unknown image reference, or account not found.", "schema": { "type": "object", "required": [ @@ -55057,13 +75814,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart", - "summary": "Upload a dark theme image.", - "return_type": "subtenant_dark_theme_image", + "path": "/v3/accounts/{account_id}/branding-images/light/{reference}", + "summary": "Get metadata of a light theme image.", + "return_type": "subtenant_light_theme_image", "return_info": { "self": true, "custom": false, - "type": "subtenant_dark_theme_image" + "type": "subtenant_light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -55076,114 +75833,20 @@ "updated_at" ], "group_id": "Branding", - "operation_id": "uploadAccountDarkImageMultipart", - "additional_operations": [ - { - "operation_id": "uploadAccountDarkImage", - "notes": "The multipart endpoint is used by the SDKs as it offers the same functionality as the standard upload endpoint." - } - ], + "operation_id": "getAccountLightImageData", "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "update" - } - ], - "fields": [ - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "name": "reference", - "in": "path", - "required": false, - "enum_reference": "subtenant_dark_theme_image_reference_enum", - "readOnly": false, - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "required": false, - "_key": "static_uri" + "request_content_type": "application/json", + "request_body": "json", + "_key": "read" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "Tenant user interface configuration - images" - ], - "group_id": "Branding", - "_key": "subtenant_dark_theme_image" - }, - { - "swagger_models": [ - "BrandingColor" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Resets the branding color of a tenant account to its light theme default.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} \\\n-H 'Authorization: Bearer '\n```", + "description": "Upload a new account branding image as form data in PNG or JPEG format.\nNote: This endpoint is restricted to administrators.", "field_renames": [], "fields": [ { "name": "account_id", "in": "path", - "description": "Account ID.", + "description": "The ID of the account.", "required": true, "type": "string", "entity_fieldname": "account_id", @@ -55193,192 +75856,183 @@ "_key": "account_id" }, { + "in": "stream", + "name": "image", + "description": "The image in PNG or JPEG format as multipart form data.", + "required": true, + "type": "file", + "entity_fieldname": "image", + "api_fieldname": "image", + "external_param": true, + "parameter_fieldname": "image", + "_key": "image" + }, + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", "is_primary_key": true, "_override": true, - "type": "string", "api_fieldname": "reference", "entity_fieldname": "reference", - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], "name": "reference", "in": "path", - "description": "The name of the branding color.", "required": true, - "enum_reference": "subtenant_light_theme_color_reference_enum", + "enum_reference": "subtenant_light_theme_image_reference_enum", "_key": "reference" } ], - "method": "delete", - "mode": "delete", + "method": "post", + "mode": "update", "responses": [ { - "description": "Deleted successfully.", - "_key": "204" - }, - { - "description": "Authentication failure.", + "description": "Image uploaded successfully.", + "headers": [ + { + "type": "string", + "description": "Location of the image metadata.", + "_key": "Content-Location" + }, + { + "type": "string", + "description": "Location of the image binary.", + "_key": "Location" + } + ], "schema": { "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always 'branding_image'", + "readOnly": true, "enum": [ - "error" + "branding_image" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" - }, - { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, - { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" - }, - { - "type": "string", - "description": "Entity name, always `error`.", "enum": [ - "error" + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" ], - "_key": "object" + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "entity_fieldname": "reference", + "name": "reference", + "in": "path", + "required": true, + "enum_reference": "subtenant_dark_theme_image_reference_enum", + "_key": "reference" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "entity_fieldname": "static_uri", + "_key": "static_uri" }, { "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" } - ] + ], + "foreign_key": { + "group": "Branding", + "entity": "subtenant_dark_theme_image" + } }, - "_key": "403" + "_key": "201" }, { - "description": "Color or account not found.", + "description": "Error in input data format, for example, image is too large.", "schema": { "type": "object", "required": [ @@ -55448,171 +76102,7 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", - "summary": "Reset branding color to default.", - "return_type": "void", - "return_info": { - "self": false, - "custom": true, - "type": "void" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "resetAccountLightColor", - "spec": { - "return_type": "void" - }, - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve the requested light theme branding color.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference}\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "account_id", - "api_fieldname": "account_id", - "external_param": true, - "parameter_fieldname": "account_id", - "_key": "account_id" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_light_theme_color_reference_enum", - "_key": "reference" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "name": "object", - "in": "body", - "schema_param": true, - "external_param": true, - "parameter_fieldname": "object", - "required": false, - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_dark_theme_color" - } - }, - "_key": "200" + "_key": "400" }, { "description": "Authentication failure.", @@ -55761,7 +76251,7 @@ "_key": "403" }, { - "description": "Color or account not found.", + "description": "Unknown image reference.", "schema": { "type": "object", "required": [ @@ -55834,13 +76324,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", - "summary": "Get light theme branding color.", - "return_type": "subtenant_light_theme_color", + "path": "/v3/accounts/{account_id}/branding-images/light/{reference}/upload-multipart", + "summary": "Upload a light theme image.", + "return_type": "subtenant_light_theme_image", "return_info": { "self": true, "custom": false, - "type": "subtenant_light_theme_color" + "type": "subtenant_light_theme_image" }, "x_filter": {}, "x_deprecation": null, @@ -55849,18 +76339,117 @@ "etag", "type", "filter", - "color", + "static_uri", "updated_at" ], "group_id": "Branding", - "operation_id": "getAccountLightColor", + "operation_id": "uploadAccountLightImageMultipart", + "additional_operations": [ + { + "operation_id": "uploadAccountLightImage", + "notes": "The multipart request is more generic and better supported by SDKs." + } + ], "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" + "request_content_type": "multipart/form-data", + "request_body": "file", + "_key": "update" + } + ], + "fields": [ + { + "enum": [ + "brand_logo_portrait", + "brand_logo_square", + "brand_logo_landscape", + "brand_logo_email", + "desktop_background_landscape", + "desktop_background_square", + "desktop_background_portrait", + "carousel_image_portrait_0", + "carousel_image_portrait_1", + "carousel_image_portrait_2", + "carousel_image_portrait_3", + "carousel_image_portrait_4", + "carousel_image_portrait_5", + "carousel_image_portrait_6", + "carousel_image_portrait_7", + "carousel_image_portrait_8", + "carousel_image_portrait_9", + "carousel_image_square_0", + "carousel_image_square_1", + "carousel_image_square_2", + "carousel_image_square_3", + "carousel_image_square_4", + "carousel_image_square_5", + "carousel_image_square_6", + "carousel_image_square_7", + "carousel_image_square_8", + "carousel_image_square_9", + "carousel_image_landscape_0", + "carousel_image_landscape_1", + "carousel_image_landscape_2", + "carousel_image_landscape_3", + "carousel_image_landscape_4", + "carousel_image_landscape_5", + "carousel_image_landscape_6", + "carousel_image_landscape_7", + "carousel_image_landscape_8", + "carousel_image_landscape_9" + ], + "type": "string", + "description": "Name of the image.", + "is_primary_key": true, + "_override": true, + "api_fieldname": "reference", + "name": "reference", + "in": "path", + "required": false, + "enum_reference": "subtenant_light_theme_image_reference_enum", + "readOnly": false, + "_key": "reference" + }, + { + "type": "string", + "format": "uri", + "example": "https://static.mbed.com/123456789.jpg", + "description": "The static link to the image.", + "readOnly": true, + "api_fieldname": "static_uri", + "required": false, + "_key": "static_uri" }, { - "description": "Update a light theme branding color of a tenant account.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light/primary \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{ \"color\": \"purple\" }'\n```", + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update time in UTC.", + "readOnly": true, + "api_fieldname": "updated_at", + "required": false, + "_key": "updated_at" + } + ], + "field_renames": [], + "tags": [ + "Tenant user interface configuration - images" + ], + "group_id": "Branding", + "_key": "subtenant_light_theme_image" + }, + { + "swagger_models": [ + "ApiKeyInfoRespList", + "GroupCreationInfo", + "GroupSummary", + "GroupSummaryList", + "GroupUpdateInfo", + "UserInfoRespList" + ], + "primary_key_field": "id", + "methods": [ + { + "description": "Retrieve an array of API keys associated with a policy group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -55871,228 +76460,297 @@ "type": "string", "entity_fieldname": "account_id", "api_fieldname": "account_id", - "external_param": true, + "external_param": false, "parameter_fieldname": "account_id", "_key": "account_id" }, { "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", "required": false, - "_key": "color" + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", + "name": "group_id", "in": "path", + "description": "The ID of the group to retrieve API keys for.", "required": true, - "enum_reference": "subtenant_light_theme_color_reference_enum", - "_key": "reference" + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "group_id", + "external_param": false, + "parameter_fieldname": "group_id", + "_key": "id" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", + "name": "include", + "in": "query", + "description": "Comma-separated additional data to return. Currently supported: total_count.", "required": false, - "_key": "updated_at" - } - ], - "method": "put", - "mode": "update", - "responses": [ + "type": "string", + "entity_fieldname": "include", + "api_fieldname": "include", + "external_param": true, + "parameter_fieldname": "include", + "_key": "include" + }, { - "description": "Color set successfully.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "entity_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "_key": "color" - }, - { - "type": "string", - "description": "Entity name: always 'branding_color'", - "readOnly": true, - "enum": [ - "branding_color" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "name": "object", - "in": "body", - "schema_param": true, - "external_param": true, - "parameter_fieldname": "object", - "required": false, - "_key": "object" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_dark_theme_color_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_dark_theme_color" - } - }, - "_key": "200" + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" }, { - "description": "Error in input data format.", + "type": "string", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "subtenant_policy_group_order_enum", + "_key": "order" + } + ], + "method": "get", + "mode": "api_keys", + "responses": [ + { + "description": "Successful operation.", "schema": { "type": "object", "required": [ - "code", - "message", + "data", + "has_more", + "limit", "object", - "request_id", - "type" + "total_count" ], "properties": [ { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "type": "string", + "example": "01619571f3c00242ac12000600000000", + "description": "The entity ID to retrieve after the given one.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "after", + "entity_fieldname": "after", + "name": "after", + "in": "query", + "required": false, + "external_param": true, + "parameter_fieldname": "after", + "_key": "after" }, { "type": "array", - "description": "Request fields which failed validation.", + "description": "A list of entities.", "items": { "type": "object", "required": [ + "etag", + "id", + "key", "name", - "message" + "object" ], "properties": [ { "type": "string", - "description": "Message describing the error condition.", - "_key": "message" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account.", + "pattern": "[a-f0-9]{32}", + "_key": "account_id" }, { "type": "string", - "description": "Name of the field which caused the error.", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "_key": "created_at" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727683, + "description": "The timestamp of the API key creation in the storage, in milliseconds.", + "_key": "creation_time" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "_key": "etag" + }, + { + "type": "array", + "description": "A list of group IDs this API key belongs to.", + "items": { + "type": "string" + }, + "_key": "groups" + }, + { + "type": "string", + "example": "01619571f7020242ac12000600000000", + "description": "The ID of the API key.", + "pattern": "[a-f0-9]{32}", + "_key": "id" + }, + { + "type": "string", + "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", + "description": "The API key.", + "_key": "key" + }, + { + "type": "integer", + "format": "int64", + "example": 1518630727688, + "description": "The timestamp of the latest API key usage, in milliseconds.", + "_key": "last_login_time" + }, + { + "type": "string", + "maxLength": 100, + "example": "API key gorgon", + "description": "The display name for the API key.", "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always 'api-key'", + "enum": [ + "api-key" + ], + "_key": "object" + }, + { + "type": "string", + "example": "01619571e2e89242ac12000600000000", + "description": "The owner of this API key, who is the creator by default.", + "pattern": "[a-f0-9]{32}", + "_key": "owner" + }, + { + "type": "string", + "example": "ACTIVE", + "description": "The status of the API key.", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "_key": "status" + }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "_key": "updated_at" } - ] + ], + "description": "Represents an API key in Device Management.", + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } }, - "_key": "fields" + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" }, { - "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "type": "boolean", + "example": false, + "description": "Flag indicating whether there are more results.", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "format": "int32", + "example": 50, + "description": "The number of results to return (2-1000). Default 50.", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "name": "limit", + "in": "query", + "required": false, + "default": 50, + "external_param": true, + "parameter_fieldname": "limit", + "_key": "limit" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always `list`.", "enum": [ - "error" + "list" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", + "enum": [ + "ASC", + "DESC" + ], + "api_fieldname": "order", + "entity_fieldname": "order", + "name": "order", + "in": "query", + "required": false, + "default": "ASC", + "external_param": true, + "parameter_fieldname": "order", + "enum_reference": "policy_group_order_enum", + "_key": "order" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 20, + "description": "The total number of records, if requested.", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" } - ] + ], + "pagination": true, + "foreign_key": { + "group": "Accounts", + "entity": "api_key" + } }, - "_key": "400" + "_key": "200" }, { "description": "Authentication failure.", @@ -56241,7 +76899,7 @@ "_key": "403" }, { - "description": "Color or account not found.", + "description": "An account or group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -56314,330 +76972,247 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-colors/light/{reference}", - "summary": "Updates light theme branding color.", - "return_type": "subtenant_light_theme_color", + "path": "/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys", + "summary": "Get API keys in a group.", + "return_type": "paginated_response(subtenant_api_key)", "return_info": { - "self": true, + "self": false, "custom": false, - "type": "subtenant_light_theme_color" + "type": "subtenant_api_key" }, "x_filter": {}, - "x_deprecation": null, + "x_deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications", + "links": [] + }, "drop_fields": [ "object", "etag", "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "setAccountLightColor", - "additional_operations": [ - { - "operation_id": "bulkSetAccountLightColors", - "notes": "Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method." - } + "filter", + "total_count", + "has_more", + "data" ], - "pagination": false, + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "getApiKeysOfAccountGroup", + "foreign_key": { + "entity": "subtenant_api_key" + }, + "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "update" - } - ], - "fields": [ - { - "type": "string", - "example": "#f3f93e", - "description": "The color given as name (purple) or as a hex code.", - "x-nullable": true, - "api_fieldname": "color", - "parameter_fieldname": "color", - "in": "body", - "required": false, - "readOnly": false, - "_key": "color" - }, - { - "enum": [ - "error_color", - "primary", - "secondary", - "success_color", - "warning_color", - "canvas_background", - "canvas_background_font_color", - "workspace_background", - "workspace_background_font_color", - "info_color", - "info_font_color", - "primary_font_color", - "secondary_font_color", - "error_font_color", - "success_font_color", - "warning_font_color" - ], - "type": "string", - "description": "Color name.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "name": "reference", - "in": "path", - "required": false, - "enum_reference": "subtenant_light_theme_color_reference_enum", - "readOnly": false, - "_key": "reference" + "_key": "api_keys" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "parameter_fieldname": "updated_at", - "in": "body", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "Tenant user interface configuration - colors" - ], - "group_id": "Branding", - "_key": "subtenant_light_theme_color" - }, - { - "swagger_models": [ - "BrandingImage" - ], - "primary_key_field": "reference", - "methods": [ - { - "description": "Revert an account branding image to light theme default.\n\n**Example:**\n```curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/clear \\\n-H 'Authorization: Bearer '\n```", + "description": "Create a new group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"MyGroup1\"}'\n```", "field_renames": [], "fields": [ { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, "type": "string", - "entity_fieldname": "account_id", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", - "external_param": true, + "entity_fieldname": "account_id", "parameter_fieldname": "account_id", + "in": "path", + "required": true, "_key": "account_id" }, { - "is_primary_key": true, - "_override": true, - "type": "string", - "api_fieldname": "reference", - "entity_fieldname": "reference", - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" + "type": "object", + "properties": [ + { + "type": "array", + "description": "An array of API key IDs.", + "items": { + "type": "string" + }, + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This field is deprecated, use 'applications'", + "links": [] + }, + "_key": "apikeys" + }, + { + "type": "array", + "description": "An array of applicationIDs.", + "items": { + "type": "string" + }, + "_key": "applications" + }, + { + "type": "array", + "description": "An array of user IDs.", + "items": { + "type": "string" + }, + "_key": "users" + } ], - "name": "reference", - "in": "path", - "description": "Name of the branding images (icon or picture).", + "description": "Represents arrays of user and API key IDs.", + "name": "members", + "in": "body", + "schema_param": true, + "entity_fieldname": "members", + "api_fieldname": "members", + "external_param": true, + "parameter_fieldname": "members", + "required": false, + "_key": "members" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", "required": true, - "enum_reference": "subtenant_light_theme_image_reference_enum", - "_key": "reference" + "_key": "name" } ], "method": "post", - "mode": "delete", + "mode": "create", "responses": [ { - "description": "Image reverted successfully.", - "_key": "204" - }, - { - "description": "Authentication failure.", + "description": "New entity created.", "schema": { "type": "object", "required": [ - "code", - "message", + "account_id", + "apikey_count", + "etag", + "id", + "name", "object", - "request_id", - "type" + "user_count" ], "properties": [ - { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" - }, - { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" - }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "type": "string", - "description": "Entity name, always `error`.", - "enum": [ - "error" - ], - "_key": "object" + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "api_fieldname": "apikey_count", + "entity_fieldname": "apikey_count", + "_key": "apikey_count" }, { - "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" - } - ] - }, - "_key": "401" - }, - { - "description": "Forbidden.", - "schema": { - "type": "object", - "required": [ - "code", - "message", - "object", - "request_id", - "type" - ], - "properties": [ + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { - "type": "integer", - "format": "int32", - "description": "HTTP response code", - "example": 400, - "_key": "code" + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" }, { - "type": "array", - "description": "Request fields which failed validation.", - "items": { - "type": "object", - "required": [ - "name", - "message" - ], - "properties": [ - { - "type": "string", - "description": "Message describing the error condition.", - "_key": "message" - }, - { - "type": "string", - "description": "Name of the field which caused the error.", - "_key": "name" - } - ] - }, - "_key": "fields" + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "group_id", + "in": "path", + "required": true, + "_key": "id" }, { "type": "string", - "description": "A human readable informative explanation", - "example": "Validation error", - "_key": "message" + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" }, { "type": "string", - "description": "Entity name, always `error`.", + "description": "Entity name: always `group`.", "enum": [ - "error" + "group" ], + "api_fieldname": "object", + "entity_fieldname": "object", "_key": "object" }, { "type": "string", - "description": "ID of the request.", - "example": "0161991d63150242ac12000600000000", - "_key": "request_id" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" }, { - "type": "string", - "description": "Error type used to categorise the error.", - "example": "validation_error", - "_key": "type" + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "entity_fieldname": "user_count", + "_key": "user_count" } - ] + ], + "description": "This object contains basic information about groups.", + "foreign_key": { + "group": "Accounts", + "entity": "policy_group" + } }, - "_key": "403" + "_key": "201" }, { - "description": "Unknown image reference, or account not found.", + "description": "Error in input data, for example, invalid group name.", "schema": { "type": "object", "required": [ @@ -56707,199 +77282,7 @@ } ] }, - "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/branding-images/light/{reference}/clear", - "summary": "Revert an image to light theme default.", - "return_type": "subtenant_light_theme_image", - "return_info": { - "self": true, - "custom": false, - "type": "subtenant_light_theme_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter" - ], - "group_id": "Branding", - "operation_id": "clearAccountLightImage", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "delete" - }, - { - "description": "Retrieve metadata for one account light theme branding image.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference} \\\n-H 'Authorization: Bearer '\n```", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "account_id", - "api_fieldname": "account_id", - "external_param": true, - "parameter_fieldname": "account_id", - "_key": "account_id" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_light_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "get", - "mode": "read", - "responses": [ - { - "description": "Successful operation.", - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_dark_theme_image_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_dark_theme_image" - } - }, - "_key": "200" + "_key": "400" }, { "description": "Authentication failure.", @@ -57048,7 +77431,7 @@ "_key": "403" }, { - "description": "Unknown image reference, or account not found.", + "description": "An account with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -57119,227 +77502,9 @@ ] }, "_key": "404" - } - ], - "path": "/v3/accounts/{account_id}/branding-images/light/{reference}", - "summary": "Get metadata of a light theme image.", - "return_type": "subtenant_light_theme_image", - "return_info": { - "self": true, - "custom": false, - "type": "subtenant_light_theme_image" - }, - "x_filter": {}, - "x_deprecation": null, - "drop_fields": [ - "object", - "etag", - "type", - "filter", - "static_uri", - "updated_at" - ], - "group_id": "Branding", - "operation_id": "getAccountLightImageData", - "pagination": false, - "request_content_type": "application/json", - "request_body": "json", - "_key": "read" - }, - { - "description": "Upload a new account branding image as form data in PNG or JPEG format.", - "field_renames": [], - "fields": [ - { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, - "type": "string", - "entity_fieldname": "account_id", - "api_fieldname": "account_id", - "external_param": true, - "parameter_fieldname": "account_id", - "_key": "account_id" - }, - { - "in": "stream", - "name": "image", - "description": "The image in PNG or JPEG format as multipart form data.", - "required": true, - "type": "file", - "entity_fieldname": "image", - "api_fieldname": "image", - "external_param": true, - "parameter_fieldname": "image", - "_key": "image" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_light_theme_image_reference_enum", - "_key": "reference" - } - ], - "method": "post", - "mode": "update", - "responses": [ - { - "description": "Image uploaded successfully.", - "headers": [ - { - "type": "string", - "description": "Location of the image metadata.", - "_key": "Content-Location" - }, - { - "type": "string", - "description": "Location of the image binary.", - "_key": "Location" - } - ], - "schema": { - "type": "object", - "properties": [ - { - "type": "string", - "description": "Entity name: always 'branding_image'", - "readOnly": true, - "enum": [ - "branding_image" - ], - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" - }, - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "entity_fieldname": "reference", - "name": "reference", - "in": "path", - "required": true, - "enum_reference": "subtenant_dark_theme_image_reference_enum", - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "entity_fieldname": "static_uri", - "_key": "static_uri" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at", - "_key": "updated_at" - } - ], - "foreign_key": { - "group": "Branding", - "entity": "subtenant_dark_theme_image" - } - }, - "_key": "201" }, { - "description": "Error in input data format, for example, image is too large.", + "description": "A group with that name already exists.", "schema": { "type": "object", "required": [ @@ -57409,7 +77574,76 @@ } ] }, - "_key": "400" + "_key": "409" + } + ], + "path": "/v3/accounts/{account_id}/policy-groups", + "summary": "Create a new group.", + "return_type": "subtenant_policy_group", + "return_info": { + "self": true, + "custom": false, + "type": "subtenant_policy_group" + }, + "x_filter": {}, + "x_deprecation": null, + "drop_fields": [ + "object", + "etag", + "type", + "filter", + "id", + "created_at", + "updated_at", + "user_count", + "application_count", + "apikey_count" + ], + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "createAccountGroup", + "pagination": false, + "request_content_type": "application/json", + "request_body": "json", + "_key": "create" + }, + { + "description": "Delete a group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", + "field_renames": [], + "fields": [ + { + "name": "account_id", + "in": "path", + "description": "Account ID.", + "required": true, + "type": "string", + "entity_fieldname": "account_id", + "api_fieldname": "account_id", + "external_param": false, + "parameter_fieldname": "account_id", + "_key": "account_id" + }, + { + "name": "group_id", + "in": "path", + "description": "The ID of the group to delete.", + "required": true, + "type": "string", + "entity_fieldname": "id", + "api_fieldname": "group_id", + "external_param": false, + "parameter_fieldname": "group_id", + "_key": "id" + } + ], + "method": "delete", + "mode": "delete", + "responses": [ + { + "description": "Deleted successfully.", + "_key": "204" }, { "description": "Authentication failure.", @@ -57485,7 +77719,7 @@ "_key": "401" }, { - "description": "Forbidden.", + "description": "Forbidden, or Administrators group cannot be removed.", "schema": { "type": "object", "required": [ @@ -57558,7 +77792,7 @@ "_key": "403" }, { - "description": "Unknown image reference.", + "description": "An account or group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -57631,13 +77865,13 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/branding-images/light/{reference}/upload-multipart", - "summary": "Upload a light theme image.", - "return_type": "subtenant_light_theme_image", + "path": "/v3/accounts/{account_id}/policy-groups/{group_id}", + "summary": "Delete a group.", + "return_type": "subtenant_policy_group", "return_info": { "self": true, "custom": false, - "type": "subtenant_light_theme_image" + "type": "subtenant_policy_group" }, "x_filter": {}, "x_deprecation": null, @@ -57645,116 +77879,20 @@ "object", "etag", "type", - "filter", - "static_uri", - "updated_at" - ], - "group_id": "Branding", - "operation_id": "uploadAccountLightImageMultipart", - "additional_operations": [ - { - "operation_id": "uploadAccountLightImage", - "notes": "The multipart request is more generic and better supported by SDKs." - } + "filter" ], + "group_id": "Accounts", + "parameter_map": { + "group_id": "id" + }, + "operation_id": "deleteAccountGroup", "pagination": false, - "request_content_type": "multipart/form-data", - "request_body": "file", - "_key": "update" - } - ], - "fields": [ - { - "enum": [ - "brand_logo_portrait", - "brand_logo_square", - "brand_logo_landscape", - "brand_logo_email", - "desktop_background_landscape", - "desktop_background_square", - "desktop_background_portrait", - "carousel_image_portrait_0", - "carousel_image_portrait_1", - "carousel_image_portrait_2", - "carousel_image_portrait_3", - "carousel_image_portrait_4", - "carousel_image_portrait_5", - "carousel_image_portrait_6", - "carousel_image_portrait_7", - "carousel_image_portrait_8", - "carousel_image_portrait_9", - "carousel_image_square_0", - "carousel_image_square_1", - "carousel_image_square_2", - "carousel_image_square_3", - "carousel_image_square_4", - "carousel_image_square_5", - "carousel_image_square_6", - "carousel_image_square_7", - "carousel_image_square_8", - "carousel_image_square_9", - "carousel_image_landscape_0", - "carousel_image_landscape_1", - "carousel_image_landscape_2", - "carousel_image_landscape_3", - "carousel_image_landscape_4", - "carousel_image_landscape_5", - "carousel_image_landscape_6", - "carousel_image_landscape_7", - "carousel_image_landscape_8", - "carousel_image_landscape_9" - ], - "type": "string", - "description": "Name of the image.", - "is_primary_key": true, - "_override": true, - "api_fieldname": "reference", - "name": "reference", - "in": "path", - "required": false, - "enum_reference": "subtenant_light_theme_image_reference_enum", - "readOnly": false, - "_key": "reference" - }, - { - "type": "string", - "format": "uri", - "example": "https://static.mbed.com/123456789.jpg", - "description": "The static link to the image.", - "readOnly": true, - "api_fieldname": "static_uri", - "required": false, - "_key": "static_uri" + "request_content_type": "application/json", + "request_body": "json", + "_key": "delete" }, { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update time in UTC.", - "readOnly": true, - "api_fieldname": "updated_at", - "required": false, - "_key": "updated_at" - } - ], - "field_renames": [], - "tags": [ - "Tenant user interface configuration - images" - ], - "group_id": "Branding", - "_key": "subtenant_light_theme_image" - }, - { - "swagger_models": [ - "ApiKeyInfoRespList", - "GroupSummary", - "GroupSummaryList", - "UserInfoRespList" - ], - "primary_key_field": "id", - "methods": [ - { - "description": "List the API keys of the group with details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of policy groups.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -57772,7 +77910,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -57783,18 +77921,6 @@ "parameter_fieldname": "after", "_key": "after" }, - { - "name": "group_id", - "in": "path", - "description": "The ID of the group to retrieve API keys for.", - "required": true, - "type": "string", - "entity_fieldname": "id", - "api_fieldname": "group_id", - "external_param": false, - "parameter_fieldname": "group_id", - "_key": "id" - }, { "name": "include", "in": "query", @@ -57824,7 +77950,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -57842,7 +77968,7 @@ } ], "method": "get", - "mode": "api_keys", + "mode": "list", "responses": [ { "description": "Successful operation.", @@ -57859,7 +77985,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -57876,20 +78002,42 @@ "items": { "type": "object", "required": [ + "account_id", + "apikey_count", "etag", "id", - "key", "name", - "object" + "object", + "user_count" ], "properties": [ { "type": "string", "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account.", + "description": "The ID of the account this group belongs to.", "pattern": "[a-f0-9]{32}", "_key": "account_id" }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, + "_key": "apikey_count" + }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" + }, { "type": "string", "format": "date-time", @@ -57897,91 +78045,53 @@ "description": "Creation UTC time RFC3339.", "_key": "created_at" }, - { - "type": "integer", - "format": "int64", - "example": 1518630727683, - "description": "The timestamp of the API key creation in the storage, in milliseconds.", - "_key": "creation_time" - }, { "type": "string", "example": "1", "description": "API resource entity version.", "_key": "etag" }, - { - "type": "array", - "description": "A list of group IDs this API key belongs to.", - "items": { - "type": "string" - }, - "_key": "groups" - }, { "type": "string", - "example": "01619571f7020242ac12000600000000", - "description": "The ID of the API key.", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", "pattern": "[a-f0-9]{32}", "_key": "id" }, - { - "type": "string", - "example": "ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000", - "description": "The API key.", - "_key": "key" - }, - { - "type": "integer", - "format": "int64", - "example": 1518630727688, - "description": "The timestamp of the latest API key usage, in milliseconds.", - "_key": "last_login_time" - }, { "type": "string", "maxLength": 100, - "example": "API key gorgon", - "description": "The display name for the API key.", + "example": "Administrators", + "description": "The name of the group.", "_key": "name" }, { "type": "string", - "description": "Entity name: always 'api-key'", + "description": "Entity name: always `group`.", "enum": [ - "api-key" + "group" ], "_key": "object" }, - { - "type": "string", - "example": "01619571e2e89242ac12000600000000", - "description": "The owner of this API key, who is the creator by default.", - "pattern": "[a-f0-9]{32}", - "_key": "owner" - }, - { - "type": "string", - "example": "ACTIVE", - "description": "The status of the API key.", - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "_key": "status" - }, { "type": "string", "format": "date-time", "example": "2018-02-14T15:24:14Z", "description": "Last update UTC time RFC3339.", "_key": "updated_at" + }, + { + "type": "integer", + "format": "int32", + "example": 1, + "description": "The number of users in this group.", + "_key": "user_count" } ], - "description": "Represents an API key in Device Management.", + "description": "This object contains basic information about groups.", "foreign_key": { "group": "Accounts", - "entity": "api_key" + "entity": "subtenant_policy_group" } }, "api_fieldname": "data", @@ -58023,7 +78133,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -58052,7 +78162,7 @@ "pagination": true, "foreign_key": { "group": "Accounts", - "entity": "api_key" + "entity": "subtenant_policy_group" } }, "_key": "200" @@ -58204,7 +78314,7 @@ "_key": "403" }, { - "description": "An account or group with that ID does not exist.", + "description": "An account with the specified ID does not exist.", "schema": { "type": "object", "required": [ @@ -58277,15 +78387,19 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys", - "summary": "Get API keys of a group.", - "return_type": "paginated_response(subtenant_api_key)", + "path": "/v3/accounts/{account_id}/policy-groups", + "summary": "Get policy groups.", + "return_type": "paginated_response(subtenant_policy_group)", "return_info": { - "self": false, + "self": true, "custom": false, - "type": "subtenant_api_key" + "type": "subtenant_policy_group" + }, + "x_filter": { + "name": [ + "eq" + ] }, - "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", @@ -58294,243 +78408,149 @@ "filter", "total_count", "has_more", - "data" + "data", + "name__eq" ], + "foreign_key_priority": "self", "group_id": "Accounts", "parameter_map": { "group_id": "id" }, - "operation_id": "getApiKeysOfAccountGroup", + "operation_id": "getAllAccountGroups", + "pagination": true, "foreign_key": { - "entity": "subtenant_api_key" + "group": "Accounts", + "entity": "subtenant_policy_group" }, - "pagination": true, "request_content_type": "application/json", "request_body": "json", - "_key": "api_keys" + "_key": "list" }, { - "description": "Retrieve all group information.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve policy group details.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { - "name": "account_id", - "in": "path", - "description": "Account ID.", - "required": true, "type": "string", - "entity_fieldname": "account_id", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", + "pattern": "[a-f0-9]{32}", "api_fieldname": "account_id", - "external_param": false, + "entity_fieldname": "account_id", "parameter_fieldname": "account_id", + "in": "path", + "required": true, "_key": "account_id" }, { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" - }, - { - "name": "include", - "in": "query", - "description": "Comma-separated additional data to return. Currently supported: total_count.", - "required": false, - "type": "string", - "entity_fieldname": "include", - "api_fieldname": "include", - "external_param": true, - "parameter_fieldname": "include", - "_key": "include" - }, - { - "type": "integer", - "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" - }, - { - "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "subtenant_policy_group_order_enum", - "_key": "order" + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "group_id", + "in": "path", + "required": true, + "_key": "id" } ], "method": "get", - "mode": "list", + "mode": "read", "responses": [ { "description": "Successful operation.", "schema": { "type": "object", "required": [ - "data", - "has_more", - "limit", + "account_id", + "apikey_count", + "etag", + "id", + "name", "object", - "total_count" + "user_count" ], "properties": [ { "type": "string", - "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "example": "01619571e2e90242ac12000600000000", + "description": "The ID of the account this group belongs to.", "pattern": "[a-f0-9]{32}", - "api_fieldname": "after", - "entity_fieldname": "after", - "name": "after", - "in": "query", - "required": false, - "external_param": true, - "parameter_fieldname": "after", - "_key": "after" + "api_fieldname": "account_id", + "entity_fieldname": "account_id", + "_key": "account_id" }, { - "type": "array", - "description": "A list of entities.", - "items": { - "type": "object", - "required": [ - "account_id", - "apikey_count", - "etag", - "id", - "name", - "object", - "user_count" - ], - "properties": [ - { - "type": "string", - "example": "01619571e2e90242ac12000600000000", - "description": "The ID of the account this group belongs to.", - "pattern": "[a-f0-9]{32}", - "_key": "account_id" - }, - { - "type": "integer", - "format": "int32", - "example": 0, - "description": "The number of API keys in this group.", - "_key": "apikey_count" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-13T09:35:20Z", - "description": "Creation UTC time RFC3339.", - "_key": "created_at" - }, - { - "type": "string", - "example": "1", - "description": "API resource entity version.", - "_key": "etag" - }, - { - "type": "string", - "example": "01619571dec00242ac12000600000000", - "description": "The ID of the group.", - "pattern": "[a-f0-9]{32}", - "_key": "id" - }, - { - "type": "string", - "maxLength": 100, - "example": "Administrators", - "description": "The name of the group.", - "_key": "name" - }, - { - "type": "string", - "description": "Entity name: always `group`.", - "enum": [ - "group" - ], - "_key": "object" - }, - { - "type": "string", - "format": "date-time", - "example": "2018-02-14T15:24:14Z", - "description": "Last update UTC time RFC3339.", - "_key": "updated_at" - }, - { - "type": "integer", - "format": "int32", - "example": 1, - "description": "The number of users in this group.", - "_key": "user_count" - } - ], - "description": "This object contains basic information about groups.", - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" - } + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] }, - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" - }, - { - "type": "boolean", - "example": false, - "description": "Flag indicating whether there are more results.", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "api_fieldname": "apikey_count", + "entity_fieldname": "apikey_count", + "_key": "apikey_count" }, { "type": "integer", "format": "int32", - "example": 50, - "description": "The number of results to return (2-1000). Default 50.", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "name": "limit", - "in": "query", - "required": false, - "default": 50, - "external_param": true, - "parameter_fieldname": "limit", - "_key": "limit" + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" }, { "type": "string", - "description": "Entity name: always `list`.", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, + { + "type": "string", + "example": "1", + "description": "API resource entity version.", + "api_fieldname": "etag", + "entity_fieldname": "etag", + "_key": "etag" + }, + { + "type": "string", + "example": "01619571dec00242ac12000600000000", + "description": "The ID of the group.", + "pattern": "[a-f0-9]{32}", + "api_fieldname": "id", + "entity_fieldname": "id", + "parameter_fieldname": "group_id", + "in": "path", + "required": true, + "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" + }, + { + "type": "string", + "description": "Entity name: always `group`.", "enum": [ - "list" + "group" ], "api_fieldname": "object", "entity_fieldname": "object", @@ -58538,36 +78558,27 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", - "enum": [ - "ASC", - "DESC" - ], - "api_fieldname": "order", - "entity_fieldname": "order", - "name": "order", - "in": "query", - "required": false, - "default": "ASC", - "external_param": true, - "parameter_fieldname": "order", - "enum_reference": "policy_group_order_enum", - "_key": "order" + "format": "date-time", + "example": "2018-02-14T15:24:14Z", + "description": "Last update UTC time RFC3339.", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at", + "_key": "updated_at" }, { "type": "integer", "format": "int32", - "example": 20, - "description": "The total number of records, if requested.", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "example": 1, + "description": "The number of users in this group.", + "api_fieldname": "user_count", + "entity_fieldname": "user_count", + "_key": "user_count" } ], - "pagination": true, + "description": "This object contains basic information about groups.", "foreign_key": { "group": "Accounts", - "entity": "subtenant_policy_group" + "entity": "policy_group" } }, "_key": "200" @@ -58719,7 +78730,7 @@ "_key": "403" }, { - "description": "An account with the specified ID does not exist.", + "description": "An account or group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -58792,47 +78803,40 @@ "_key": "404" } ], - "path": "/v3/accounts/{account_id}/policy-groups", - "summary": "Get all group information.", - "return_type": "paginated_response(subtenant_policy_group)", + "path": "/v3/accounts/{account_id}/policy-groups/{group_id}", + "summary": "Get policy group.", + "return_type": "subtenant_policy_group", "return_info": { "self": true, "custom": false, "type": "subtenant_policy_group" }, - "x_filter": { - "name": [ - "eq" - ] - }, + "x_filter": {}, "x_deprecation": null, "drop_fields": [ "object", "etag", "type", "filter", - "total_count", - "has_more", - "data", - "name__eq" + "created_at", + "updated_at", + "name", + "user_count", + "application_count", + "apikey_count" ], - "foreign_key_priority": "self", "group_id": "Accounts", "parameter_map": { "group_id": "id" }, - "operation_id": "getAllAccountGroups", - "pagination": true, - "foreign_key": { - "group": "Accounts", - "entity": "subtenant_policy_group" - }, + "operation_id": "getAccountGroupSummary", + "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "list" + "_key": "read" }, { - "description": "Retrieve general information about the group.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Update a group name.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"name\": \"TestGroup2\"}'\n```", "field_renames": [], "fields": [ { @@ -58858,10 +78862,22 @@ "in": "path", "required": true, "_key": "id" + }, + { + "type": "string", + "maxLength": 100, + "example": "Administrators", + "description": "The name of the group.", + "api_fieldname": "name", + "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, + "_key": "name" } ], - "method": "get", - "mode": "read", + "method": "put", + "mode": "update", "responses": [ { "description": "Successful operation.", @@ -58891,10 +78907,25 @@ "format": "int32", "example": 0, "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, "api_fieldname": "apikey_count", "entity_fieldname": "apikey_count", "_key": "apikey_count" }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "entity_fieldname": "application_count", + "_key": "application_count" + }, { "type": "string", "format": "date-time", @@ -58931,6 +78962,9 @@ "description": "The name of the group.", "api_fieldname": "name", "entity_fieldname": "name", + "parameter_fieldname": "name", + "in": "body", + "required": true, "_key": "name" }, { @@ -58970,6 +79004,79 @@ }, "_key": "200" }, + { + "description": "Error in input data, for example, the group name is too long.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, { "description": "Authentication failure.", "schema": { @@ -59117,7 +79224,7 @@ "_key": "403" }, { - "description": "An account or group with that ID does not exist.", + "description": "A group with that ID does not exist.", "schema": { "type": "object", "required": [ @@ -59191,7 +79298,7 @@ } ], "path": "/v3/accounts/{account_id}/policy-groups/{group_id}", - "summary": "Get group information.", + "summary": "Update the group name.", "return_type": "subtenant_policy_group", "return_info": { "self": true, @@ -59207,22 +79314,22 @@ "filter", "created_at", "updated_at", - "name", "user_count", + "application_count", "apikey_count" ], "group_id": "Accounts", "parameter_map": { "group_id": "id" }, - "operation_id": "getAccountGroupSummary", + "operation_id": "updateAccountGroupName", "pagination": false, "request_content_type": "application/json", "request_body": "json", - "_key": "read" + "_key": "update" }, { - "description": "List users of the group with details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of users associated with a policy group.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -59240,7 +79347,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -59292,7 +79399,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -59327,7 +79434,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -59382,6 +79489,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -59598,6 +79714,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -59607,6 +79733,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -59617,6 +79744,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -59625,7 +79753,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -59750,7 +79878,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -60005,7 +80133,7 @@ } ], "path": "/v3/accounts/{account_id}/policy-groups/{group_id}/users", - "summary": "Get users of a group.", + "summary": "Get users in a policy group.", "return_type": "paginated_response(subtenant_user)", "return_info": { "self": false, @@ -60062,11 +80190,27 @@ "format": "int32", "example": 0, "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, "api_fieldname": "apikey_count", "readOnly": true, "required": false, "_key": "apikey_count" }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "api_fieldname": "application_count", + "readOnly": true, + "required": false, + "_key": "application_count" + }, { "type": "string", "format": "date-time", @@ -60095,8 +80239,10 @@ "example": "Administrators", "description": "The name of the group.", "api_fieldname": "name", - "readOnly": true, - "required": false, + "parameter_fieldname": "name", + "in": "body", + "required": true, + "readOnly": false, "_key": "name" }, { @@ -60137,7 +80283,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Upload new trusted certificates.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"name\": \"myCert1\", \"description\": \"very important cert\", \"certificate\": \"certificate_data\", \"service\": \"lwm2m\"}\n```", + "description": "Upload new trusted certificate.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"name\": \"myCert1\", \"description\": \"very important cert\", \"certificate\": \"certificate_data\", \"service\": \"lwm2m\"}\n```", "field_renames": [], "fields": [ { @@ -60179,7 +80325,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -60325,7 +80477,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -60615,7 +80773,7 @@ "_key": "401" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Forbidden, only available for administrators of commercial accounts.", "schema": { "type": "object", "required": [ @@ -60797,7 +80955,7 @@ "_key": "create" }, { - "description": "Delete the trusted certificate.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete a trusted certificate.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -60917,7 +81075,7 @@ "_key": "401" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Forbidden, only available for administrators of commercial accounts.", "schema": { "type": "object", "required": [ @@ -60990,7 +81148,7 @@ "_key": "403" }, { - "description": "Account or certificate with the given ID not found.", + "description": "An account or certificate with the given ID not found.", "schema": { "type": "object", "required": [ @@ -61064,7 +81222,7 @@ } ], "path": "/v3/accounts/{account_id}/trusted-certificates/{cert_id}", - "summary": "Delete trusted certificate by ID.", + "summary": "Delete a trusted certificate by ID.", "return_type": "subtenant_trusted_certificate", "return_info": { "self": true, @@ -61091,7 +81249,7 @@ "_key": "delete" }, { - "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", + "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", "field_renames": [], "fields": [ { @@ -61499,7 +81657,7 @@ "_key": "get_developer_certificate_info" }, { - "description": "Retrieve a trusted certificate by ID.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve a trusted certificate.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -61621,7 +81779,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -61838,7 +82002,7 @@ "_key": "401" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Forbidden, only available for administrators of commercial accounts.", "schema": { "type": "object", "required": [ @@ -61911,7 +82075,7 @@ "_key": "403" }, { - "description": "Account or certificate with the given ID not found.", + "description": "An account or certificate with the given ID not found.", "schema": { "type": "object", "required": [ @@ -61985,7 +82149,7 @@ } ], "path": "/v3/accounts/{account_id}/trusted-certificates/{cert_id}", - "summary": "Get trusted certificate by ID.", + "summary": "Get a trusted certificate.", "return_type": "subtenant_trusted_certificate", "return_info": { "self": true, @@ -62027,7 +82191,7 @@ "_key": "read" }, { - "description": "Update existing trusted certificates.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json' \\\n -d {\"description\": \"very important cert\"}\n ```", + "description": "Update a trusted certificate.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json' \\\n -d {\"description\": \"very important cert\"}\n ```", "field_renames": [], "fields": [ { @@ -62069,7 +82233,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -62227,7 +82397,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -62517,7 +82693,7 @@ "_key": "401" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Forbidden, only available for administrators of commercial accounts.", "schema": { "type": "object", "required": [ @@ -62768,7 +82944,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", "in": "body", @@ -62903,8 +83085,8 @@ ], "field_renames": [], "tags": [ - "Tenant device security - certificates", - "Device security - developer class certificates" + "Tenant security and identity - certificates", + "Security and identity - developer class certificates" ], "group_id": "Security", "_key": "subtenant_trusted_certificate" @@ -62919,7 +83101,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Create or invite a new user to the account. Only email address is used; other attributes are set in the second step.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", + "description": "Create or invite a new user to the account. Only email address is used; other attributes are set in the second step.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", "field_renames": [], "fields": [ { @@ -63031,6 +83213,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -63040,6 +83232,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -63050,6 +83243,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -63058,7 +83252,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -63162,6 +83356,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -63434,6 +83637,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -63443,6 +83656,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -63453,6 +83667,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -63461,7 +83676,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -63988,7 +84203,7 @@ "_key": "create" }, { - "description": "Delete a user.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete a user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -64343,7 +84558,7 @@ "_key": "delete" }, { - "description": "Retrieve user's groups.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of policy groups associated with a user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -64361,7 +84576,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -64413,7 +84628,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -64448,7 +84663,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -64486,8 +84701,21 @@ "format": "int32", "example": 0, "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, "_key": "apikey_count" }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" + }, { "type": "string", "format": "date-time", @@ -64583,7 +84811,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -64838,7 +85066,7 @@ } ], "path": "/v3/accounts/{account_id}/users/{user_id}/groups", - "summary": "Get user's groups.", + "summary": "Get policy groups for a user.", "return_type": "paginated_response(subtenant_policy_group)", "return_info": { "self": false, @@ -64870,7 +85098,7 @@ "_key": "policy_groups" }, { - "description": "Retrieve user details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve user details.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -64946,6 +85174,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -65218,6 +85455,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -65227,6 +85474,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -65237,6 +85485,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -65245,7 +85494,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -65635,7 +85884,7 @@ "_key": "read" }, { - "description": "Update user details.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"username\": \"myusername\"}'\n```", + "description": "Update user details.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"username\": \"myusername\"}'\n```", "field_renames": [], "fields": [ { @@ -65745,6 +85994,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -65754,6 +86013,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -65764,6 +86024,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -65772,7 +86033,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -65864,6 +86125,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -66136,6 +86406,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -66145,6 +86425,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -66155,6 +86436,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -66163,7 +86445,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -66691,7 +86973,7 @@ "_key": "update" }, { - "description": "Validate user email.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/validate-email \\\n-H 'Authorization: Bearer '\n```", + "description": "Validate user email.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/validate-email \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -67007,6 +87289,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -67278,6 +87569,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -67287,6 +87588,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -67297,6 +87599,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -67305,7 +87608,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -67427,7 +87730,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Invite a new or existing user.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accouns/{account_id}/user-invitations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", + "description": "Invite a new or existing user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/accouns/{account_id}/user-invitations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", "field_renames": [], "fields": [ { @@ -67479,6 +87782,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -67488,6 +87801,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -67498,6 +87812,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -67506,7 +87821,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -67641,6 +87956,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -67650,6 +87975,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -67660,6 +87986,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -67668,7 +87995,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -67974,7 +88301,7 @@ "_key": "create" }, { - "description": "Delete an active user invitation sent to a new or existing user.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete an active user invitation sent to a new or existing user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -68256,7 +88583,7 @@ "_key": "delete" }, { - "description": "Retrieve details of an active user invitation sent for a new or existing user.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve details of an active user invitation sent for a new or existing user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -68384,6 +88711,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -68393,6 +88730,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -68403,6 +88741,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -68411,7 +88750,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -68799,6 +89138,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -68808,6 +89157,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -68818,6 +89168,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -68826,7 +89177,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -68882,7 +89233,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Upload new trusted certificates.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"name\": \"myCert1\", \"description\": \"very important cert\", \"certificate\": \"certificate_data\", \"service\": \"lwm2m\"}\n```", + "description": "Upload new trusted certificates.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"name\": \"myCert1\", \"description\": \"very important cert\", \"certificate\": \"certificate_data\", \"service\": \"lwm2m\"}\n```", "field_renames": [], "fields": [ { @@ -68912,7 +89263,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -69052,7 +89409,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "_key": "enrollment_mode" @@ -69325,7 +89688,7 @@ "_key": "401" }, { - "description": "Forbidden, only available for admins of commercial accounts.", + "description": "Forbidden, only available for administrators of commercial accounts.", "schema": { "type": "object", "required": [ @@ -69508,7 +89871,7 @@ "_key": "create" }, { - "description": "Delete a trusted certificate.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete a trusted certificate.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -69689,7 +90052,7 @@ "_key": "403" }, { - "description": "Certificate not found.", + "description": "A certificate not found.", "schema": { "type": "object", "required": [ @@ -69790,7 +90153,7 @@ "_key": "delete" }, { - "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", + "description": "Return an existing developer certificate (a certificate that can be flashed to multiple devices to connect to bootstrap server).\n\n**Example:**\n```\ncurl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \\\n-H \"Authorization: Bearer \"\n```", "field_renames": [], "fields": [ { @@ -70198,13 +90561,13 @@ "_key": "get_developer_certificate_info" }, { - "description": "Retrieve trusted certificates in an array.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of trusted certificates.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -70255,7 +90618,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -70290,7 +90653,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -70359,7 +90722,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "_key": "enrollment_mode" }, { @@ -70701,6 +91070,9 @@ "subject": [ "like" ], + "certificate_fingerprint": [ + "eq" + ], "valid": [ "eq" ] @@ -70725,6 +91097,7 @@ "status__eq", "issuer__like", "subject__like", + "certificate_fingerprint__eq", "valid__eq" ], "foreign_key_priority": "self", @@ -70740,7 +91113,7 @@ "_key": "list" }, { - "description": "Retrieve a trusted certificate by ID.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve a trusted certificate.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -70844,7 +91217,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "_key": "enrollment_mode" @@ -71117,7 +91496,7 @@ "_key": "403" }, { - "description": "Certificate not found.", + "description": "A certificate not found.", "schema": { "type": "object", "required": [ @@ -71191,7 +91570,7 @@ } ], "path": "/v3/trusted-certificates/{cert_id}", - "summary": "Get trusted certificate by ID.", + "summary": "Get a trusted certificate.", "return_type": "trusted_certificate", "return_info": { "self": true, @@ -71234,7 +91613,7 @@ "_key": "read" }, { - "description": "Update existing trusted certificates.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"description\": \"very important cert\"}\n```", + "description": "Update existing trusted certificates.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"description\": \"very important cert\"}\n```", "field_renames": [], "fields": [ { @@ -71264,7 +91643,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "parameter_fieldname": "enrollment_mode", @@ -71416,7 +91801,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "entity_fieldname": "enrollment_mode", "_key": "enrollment_mode" @@ -71762,7 +92153,7 @@ "_key": "403" }, { - "description": "Certificate not found.", + "description": "A certificate not found.", "schema": { "type": "object", "required": [ @@ -72010,7 +92401,13 @@ { "type": "boolean", "example": false, - "description": "If true, signature is not required. Default value false.", + "description": "DEPRECATED: Certificate is used in enrollment mode. Default value is false.", + "x-deprecation": { + "issued_at": "2020-11-01T00:00:00+00:00", + "end_of_life_at": "2021-11-01T00:00:00+00:00", + "comment": "This field is deprecated, do not use it anymore.", + "links": [] + }, "api_fieldname": "enrollment_mode", "readOnly": false, "required": false, @@ -72135,8 +92532,8 @@ ], "field_renames": [], "tags": [ - "Device security - certificates", - "Device security - developer class certificates" + "Security and identity - certificates", + "Security and identity - developer class certificates" ], "group_id": "Security", "_key": "trusted_certificate" @@ -72152,7 +92549,7 @@ "primary_key_field": "id", "methods": [ { - "description": "This command will archive a campaign.", + "description": "Archive a campaign.\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc649000000000001001000b8/archive \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -72168,11 +92565,12 @@ "_key": "device_filter_helper" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "in": "path", "name": "campaign_id", "required": true, "type": "string", + "pattern": "[A-Fa-f0-9]{32}", "entity_fieldname": "id", "api_fieldname": "campaign_id", "external_param": false, @@ -72189,18 +92587,294 @@ }, { "description": "Unable to change the phase of the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "400" }, { "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "401" }, { "description": "Cannot find the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" }, { "description": "Cannot archive the campaign while in the current phase.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "409" } ], @@ -72232,14 +92906,64 @@ "_key": "archive" }, { - "description": "Create an update campaign.", + "description": "Create an update campaign.\n\nTo include a filter for targeted devices, refer to the filter using `` in the message body.\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\n-d '{\n \"campaign_strategy\": \"one-shot\",\n \"description\": \"Campaign is for ...\",\n \"device_filter\": \"\",\n \"name\": \"campaign\",\n \"root_manifest_id\": \"56780000000000a5b70000000000bd98\"\n}'\n```\n", "field_renames": [], "fields": [ { - "description": "An optional description of the campaign", + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "entity_fieldname": "approval_required", + "parameter_fieldname": "approval_required", + "in": "body", + "required": false, + "_key": "approval_required" + }, + { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "entity_fieldname": "autostop", + "parameter_fieldname": "autostop", + "in": "body", + "required": false, + "_key": "autostop" + }, + { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "entity_fieldname": "autostop_success_percent", + "parameter_fieldname": "autostop_success_percent", + "in": "body", + "required": false, + "_key": "autostop_success_percent" + }, + { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot", + "api_fieldname": "campaign_strategy", + "entity_fieldname": "campaign_strategy", + "parameter_fieldname": "campaign_strategy", + "in": "body", + "required": false, + "enum_reference": "update_campaign_strategy_enum", + "_key": "campaign_strategy" + }, + { + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "entity_fieldname": "description", "parameter_fieldname": "description", @@ -72248,9 +92972,9 @@ "_key": "description" }, { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "entity_fieldname": "device_filter", "parameter_fieldname": "device_filter", @@ -72271,7 +92995,7 @@ "_key": "device_filter_helper" }, { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", @@ -72283,8 +93007,9 @@ "_key": "name" }, { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "entity_fieldname": "root_manifest_id", "parameter_fieldname": "root_manifest_id", @@ -72310,7 +93035,7 @@ "mode": "create", "responses": [ { - "description": "Update campaign created", + "description": "Update campaign created.", "schema": [ { "group": "Device_Update", @@ -72318,52 +93043,109 @@ "_key": "foreign_key" }, { - "autostop_reason": { - "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "created_at": { "type": "string", - "example": "Insufficient billing credit.", - "api_fieldname": "autostop_reason", - "entity_fieldname": "autostop_reason" + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - "phase": { - "description": "The current phase of the campaign.", + "etag": { "type": "string", - "readOnly": true, - "api_fieldname": "phase", - "entity_fieldname": "phase" + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" }, - "created_at": { - "description": "The time the update campaign was created", + "updated_at": { "type": "string", "format": "date-time", + "description": "The time the entity was updated.", "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "campaign_strategy": { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot", + "api_fieldname": "campaign_strategy", + "entity_fieldname": "campaign_strategy" + }, + "object": { + "description": "Entity name: always 'update-campaign'.", + "type": "string", + "example": "update-campaign", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "active_at": { + "description": "The time the campaign entered the active state.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "active_at", + "entity_fieldname": "active_at" + }, + "approval_required": { + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "entity_fieldname": "approval_required" + }, + "archived_at": { + "description": "The time the campaign was archived.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "archived_at", + "entity_fieldname": "archived_at" + }, + "autostop": { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "entity_fieldname": "autostop" + }, + "autostop_success_percent": { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "entity_fieldname": "autostop_success_percent" + }, + "autostop_reason": { + "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "type": "string", + "example": "Insufficient billing credit.", + "api_fieldname": "autostop_reason", + "entity_fieldname": "autostop_reason" }, "description": { - "description": "An optional description of the campaign", + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "entity_fieldname": "description" }, "device_filter": { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "entity_fieldname": "device_filter" }, - "etag": { - "description": "The entity instance signature", - "type": "string", - "example": "2017-05-22T12:37:58.753425Z", - "api_fieldname": "etag", - "entity_fieldname": "etag" - }, "finished": { - "description": "The campaign finish timestamp", + "description": "The time the campaign finished.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", @@ -72371,48 +93153,87 @@ "entity_fieldname": "finished" }, "id": { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "entity_fieldname": "id" }, "name": { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", "api_fieldname": "name", "entity_fieldname": "name" }, - "object": { - "description": "The API resource entity", - "type": "string", - "example": "update-campaign", - "api_fieldname": "object", - "entity_fieldname": "object" - }, "root_manifest_id": { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "entity_fieldname": "root_manifest_id" }, "root_manifest_url": { + "description": "The URL for the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", + "example": "https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_url", "entity_fieldname": "root_manifest_url" }, + "starting_at": { + "description": "The time the campaign will be started.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "starting_at", + "entity_fieldname": "starting_at" + }, "started_at": { + "description": "The time the campaign was started.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "started_at", "entity_fieldname": "started_at" }, + "stopping_at": { + "description": "The time the campaign will be stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopping_at", + "entity_fieldname": "stopping_at" + }, + "stopped_at": { + "description": "The time the campaign was stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopped_at", + "entity_fieldname": "stopped_at" + }, + "phase": { + "description": "The phase of the campaign.", + "type": "string", + "enum": [ + "draft", + "awaiting_approval", + "timed", + "starting", + "active", + "stopping", + "stopped", + "deleted", + "archived" + ], + "api_fieldname": "phase", + "entity_fieldname": "phase" + }, "state": { - "description": "DEPRECATED: The state of the campaign (use phase instead).", + "description": "The state of the campaign.", + "type": "string", "enum": [ "draft", "scheduled", @@ -72434,48 +93255,250 @@ "userstopped", "conflict" ], - "type": "string", "x-deprecation": { "issued_at": "2019-03-18T14:55:20+00:00", "end_of_life_at": "2020-03-18T14:55:20+00:00", "comment": "Use phase instead", "links": [] }, - "api_fieldname": "state", - "entity_fieldname": "state" + "api_fieldname": "state", + "entity_fieldname": "state" + }, + "when": { + "description": "The scheduled start time for the campaign. The campaign will start within 1 minute when then start time has elapsed.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "x-nullable": true, + "api_fieldname": "when", + "entity_fieldname": "when" + }, + "_key": "properties" + } + ], + "_key": "201" + }, + { + "description": "Validation error: The data used to create the campaign did not validate.\n", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Conflict, a campaign with the same name already exists", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, - "when": { - "description": "The scheduled start time for the campaign. The campaign will start within 1 minute when then start time has elapsed.", + { "type": "string", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "x-nullable": true, - "api_fieldname": "when", - "entity_fieldname": "when" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, - "updated_at": { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", + { "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" }, - "_key": "properties" - } - ], - "_key": "201" - }, - { - "description": "Validation error: The data used to create the campaign did not validate\n", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "409" } ], - "path": "/v3/update-campaigns/", + "path": "/v3/update-campaigns", "summary": "Create a campaign", "return_type": "update_campaign", "return_info": { @@ -72491,14 +93514,19 @@ "type", "filter", "state", - "autostop_reason", - "phase", "created_at", + "updated_at", + "active_at", + "archived_at", + "autostop_reason", "finished", "id", "root_manifest_url", + "starting_at", "started_at", - "updated_at" + "stopping_at", + "stopped_at", + "phase" ], "group_id": "Device_Update", "parameter_map": { @@ -72511,7 +93539,7 @@ "_key": "create" }, { - "description": "Delete an update campaign.", + "description": "Delete an update campaign.\n
\n**Usage example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123457f9012ab567890120000789012 \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -72527,11 +93555,12 @@ "_key": "device_filter_helper" }, { - "description": "The ID of the update campaign", + "description": "The campaign ID.", "in": "path", "name": "campaign_id", "required": true, "type": "string", + "pattern": "[A-Fa-f0-9]{32}", "entity_fieldname": "id", "api_fieldname": "campaign_id", "external_param": false, @@ -72543,19 +93572,226 @@ "mode": "delete", "responses": [ { - "description": "Update campaign deleted", + "description": "Update campaign deleted.", "_key": "204" }, { - "description": "Validation error: The data used to update the campaign did not validate\n", + "description": "Validation error: The data used to update the campaign did not validate.\n", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "400" }, { - "description": "Not authenticated", + "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "401" }, { - "description": "Update campaign can't be found", + "description": "Update campaign can't be found.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" }, { @@ -72632,7 +93868,7 @@ "_key": "409" } ], - "path": "/v3/update-campaigns/{campaign_id}/", + "path": "/v3/update-campaigns/{campaign_id}", "summary": "Delete a campaign", "return_type": "update_campaign", "return_info": { @@ -72660,12 +93896,12 @@ "_key": "delete" }, { - "description": "Get campaign device metadata.", + "description": "Get metadata for all devices in a campaign.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56790120000789012/campaign-device-metadata \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { "type": "string", - "description": "The ID of the the item after which to retrieve the next page", + "description": "The ID of the item after which to retrieve the next page.", "example": "null", "api_fieldname": "after", "entity_fieldname": "after", @@ -72689,11 +93925,12 @@ "_key": "device_filter_helper" }, { - "description": "The update campaign ID", + "description": "The campaign ID.", "in": "path", "name": "campaign_id", "required": true, "type": "string", + "pattern": "[A-Fa-f0-9]{32}", "entity_fieldname": "id", "api_fieldname": "campaign_id", "external_param": false, @@ -72701,7 +93938,7 @@ "_key": "id" }, { - "description": "A comma-separated list of data fields to return. Currently supported: total_count", + "description": "A comma-separated list of data fields to return. Currently supported: total_count.", "in": "query", "name": "include", "type": "string", @@ -72733,7 +93970,7 @@ "ASC", "DESC" ], - "description": "ASC or DESC", + "description": "ASC or DESC.", "example": "ASC", "api_fieldname": "order", "entity_fieldname": "order", @@ -72750,13 +93987,13 @@ "mode": "device_metadata", "responses": [ { - "description": "Request successful", + "description": "Request successful.", "schema": { "type": "object", "properties": [ { "type": "string", - "description": "The entity ID to fetch after the given one", + "description": "The entity ID to fetch after the given one.", "example": "null", "api_fieldname": "after", "entity_fieldname": "after", @@ -72764,13 +94001,13 @@ }, { "type": "array", - "description": "A list of entities", + "description": "A list of entities.", "items": { "type": "object", "properties": [ { "type": "string", - "description": "The device's campaign ID", + "description": "The device's campaign ID.", "example": "015bf72fccda00000000000100100280", "api_fieldname": "campaign", "entity_fieldname": "campaign_id", @@ -72782,14 +94019,14 @@ { "type": "string", "format": "date-time", - "description": "The time the campaign was created", + "description": "The time the entity was created.", "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "created_at", "entity_fieldname": "created_at", "_key": "created_at" }, { - "description": "The state of the update campaign on the device", + "description": "The state of the update campaign on the device.", "enum": [ "pending", "updated_connector_channel", @@ -72806,15 +94043,15 @@ { "type": "string", "maxLength": 2000, - "description": "Description", - "example": "", + "description": "Description.", + "example": "a description", "api_fieldname": "description", "entity_fieldname": "description", "_key": "description" }, { "type": "string", - "description": "The device ID", + "description": "The device ID.", "example": "015c2fec9bba0000000000010010036f", "api_fieldname": "device_id", "entity_fieldname": "device_id", @@ -72822,7 +94059,7 @@ }, { "type": "string", - "description": "API resource entity version", + "description": "API resource entity version.", "example": "2017-05-22T12:37:58.753425Z", "api_fieldname": "etag", "entity_fieldname": "etag", @@ -72830,7 +94067,8 @@ }, { "type": "string", - "description": "The metadata record ID", + "description": "The metadata record ID.", + "pattern": "[A-Fa-f0-9]{32}", "example": "015c3029f6f7000000000001001000c3", "api_fieldname": "id", "entity_fieldname": "id", @@ -72841,7 +94079,7 @@ }, { "type": "string", - "description": "How the firmware is delivered (connector or direct)", + "description": "How the firmware is delivered (connector or direct).", "example": "connector", "api_fieldname": "mechanism", "entity_fieldname": "mechanism", @@ -72849,8 +94087,7 @@ }, { "type": "string", - "description": "The Device Management Connect URL", - "example": "", + "description": "The Device Management Connect URL.", "api_fieldname": "mechanism_url", "entity_fieldname": "mechanism_url", "_key": "mechanism_url" @@ -72858,15 +94095,15 @@ { "type": "string", "maxLength": 128, - "description": "The record name", - "example": "default_object_name", + "description": "The record name.", + "default": "default_object_name", "api_fieldname": "name", "entity_fieldname": "name", "_key": "name" }, { "type": "string", - "description": "The entity name: always 'update-campaign-device-metadata'", + "description": "The entity name: always 'update-campaign-device-metadata'.", "example": "update-campaign-device-metadata", "api_fieldname": "object", "entity_fieldname": "object", @@ -72875,8 +94112,8 @@ { "type": "string", "format": "date-time", - "description": "The record was modified in the database format: date-time", - "example": "2017-05-22T12:37:58.776736Z", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "updated_at", "entity_fieldname": "updated_at", "_key": "updated_at" @@ -72893,7 +94130,7 @@ }, { "type": "boolean", - "description": "A flag indicating whether there are more results", + "description": "A flag indicating whether there are more results.", "example": "false", "api_fieldname": "has_more", "entity_fieldname": "has_more", @@ -72911,7 +94148,7 @@ }, { "type": "string", - "description": "The entity name: always 'list'", + "description": "The entity name: always 'list'.", "example": "list", "api_fieldname": "object", "entity_fieldname": "object", @@ -72923,7 +94160,7 @@ "ASC", "DESC" ], - "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC", + "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC.", "example": "ASC", "api_fieldname": "order", "entity_fieldname": "order", @@ -72951,7 +94188,7 @@ "_key": "401" } ], - "path": "/v3/update-campaigns/{campaign_id}/campaign-device-metadata/", + "path": "/v3/update-campaigns/{campaign_id}/campaign-device-metadata", "summary": "List all campaign device metadata", "return_type": "paginated_response(campaign_device_metadata)", "return_info": { @@ -72986,7 +94223,7 @@ "_key": "device_metadata" }, { - "description": "Get update campaigns for devices specified by a filter.", + "description": "Get update campaigns for devices specified by a filter.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -72994,7 +94231,7 @@ "example": null, "api_fieldname": "after", "entity_fieldname": "after", - "description": "The ID of the the item after which to retrieve the next page", + "description": "The ID of the item after which to retrieve the next page.", "in": "query", "name": "after", "external_param": true, @@ -73015,7 +94252,7 @@ "_key": "device_filter_helper" }, { - "description": "A comma-separated list of data fields to return. Currently supported: total_count", + "description": "A comma-separated list of data fields to return. Currently supported: total_count.", "in": "query", "name": "include", "type": "string", @@ -73046,7 +94283,7 @@ "ASC", "DESC" ], - "description": "The order of the records. Acceptable values: ASC, DESC. Default: ASC", + "description": "The order of the records. Acceptable values: ASC, DESC. Default: ASC.", "example": "ASC", "api_fieldname": "order", "entity_fieldname": "order", @@ -73063,7 +94300,7 @@ "mode": "list", "responses": [ { - "description": "Request successful", + "description": "Request successful.", "schema": { "properties": [ { @@ -73074,6 +94311,7 @@ "_key": "after" }, { + "type": "array", "items": [ { "group": "Device_Update", @@ -73081,75 +94319,157 @@ "_key": "foreign_key" }, { - "autostop_reason": { - "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "created_at": { "type": "string", - "example": "Insufficient billing credit." + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - "phase": { - "description": "The current phase of the campaign.", + "etag": { "type": "string", - "readOnly": true + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" }, - "created_at": { - "description": "The time the update campaign was created", + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "campaign_strategy": { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot" + }, + "object": { + "description": "Entity name: always 'update-campaign'.", + "type": "string", + "example": "update-campaign" + }, + "active_at": { + "description": "The time the campaign entered the active state.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z" + }, + "approval_required": { + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false" + }, + "archived_at": { + "description": "The time the campaign was archived.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z" }, + "autostop": { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false" + }, + "autostop_success_percent": { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00" + }, + "autostop_reason": { + "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "type": "string", + "example": "Insufficient billing credit." + }, "description": { - "description": "An optional description of the campaign", + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "" + "example": "This campaign updates Class XX devices to version 1.34" }, "device_filter": { - "description": "The filter for the devices the campaign is targeting at", - "type": "string", - "example": "id__eq=00000000000000000000000000000000" - }, - "etag": { - "description": "The entity instance signature", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "2017-05-22T12:37:58.753425Z" + "example": "state__eq=registered" }, "finished": { - "description": "The campaign finish timestamp", + "description": "The time the campaign finished.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z" }, "id": { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000" + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5" }, "name": { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign" }, - "object": { - "description": "The API resource entity", - "type": "string", - "example": "update-campaign" - }, "root_manifest_id": { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000" + "example": "016e83dce36a00000000000100100102" }, "root_manifest_url": { + "description": "The URL for the manifest that will be sent to the device as part of the campaign.", + "type": "string", + "example": "https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102" + }, + "starting_at": { + "description": "The time the campaign will be started.", "type": "string", - "example": "http://example.com/00000000000000000000000000000000" + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z" }, "started_at": { + "description": "The time the campaign was started.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z" + }, + "stopping_at": { + "description": "The time the campaign will be stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z" + }, + "stopped_at": { + "description": "The time the campaign was stopped.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z" }, + "phase": { + "description": "The phase of the campaign.", + "type": "string", + "enum": [ + "draft", + "awaiting_approval", + "timed", + "starting", + "active", + "stopping", + "stopped", + "deleted", + "archived" + ] + }, "state": { - "description": "DEPRECATED: The state of the campaign (use phase instead).", + "description": "The state of the campaign.", + "type": "string", "enum": [ "draft", "scheduled", @@ -73171,7 +94491,6 @@ "userstopped", "conflict" ], - "type": "string", "x-deprecation": { "issued_at": "2019-03-18T14:55:20+00:00", "end_of_life_at": "2020-03-18T14:55:20+00:00", @@ -73186,81 +94505,281 @@ "example": "2017-05-22T12:37:55.576563Z", "x-nullable": true }, - "updated_at": { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string" + "_key": "properties" + } + ], + "api_fieldname": "data", + "entity_fieldname": "data", + "_key": "data" + }, + { + "type": "boolean", + "api_fieldname": "has_more", + "entity_fieldname": "has_more", + "_key": "has_more" + }, + { + "type": "integer", + "api_fieldname": "limit", + "entity_fieldname": "limit", + "_key": "limit" + }, + { + "description": "Entity name: always 'list'.", + "type": "string", + "example": "list", + "api_fieldname": "object", + "entity_fieldname": "object", + "_key": "object" + }, + { + "type": "string", + "enum": [ + "ASC", + "DESC" + ], + "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC.", + "example": "ASC", + "api_fieldname": "order", + "entity_fieldname": "order", + "_key": "order" + }, + { + "type": "integer", + "api_fieldname": "total_count", + "entity_fieldname": "total_count", + "_key": "total_count" + } + ], + "pagination": true, + "foreign_key": { + "group": "Device_Update", + "entity": "update_campaign" + } + }, + "_key": "200" + }, + { + "description": "Validation error: The data used to update the campaign did not validate.\n", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "400" + }, + { + "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" }, - "_key": "properties" - } + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" ], - "type": "array", - "example": "[]", - "api_fieldname": "data", - "entity_fieldname": "data", - "_key": "data" + "_key": "object" }, { - "type": "boolean", - "api_fieldname": "has_more", - "entity_fieldname": "has_more", - "_key": "has_more" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, + "_key": "401" + }, + { + "description": "Unable to find content.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ { "type": "integer", - "api_fieldname": "limit", - "entity_fieldname": "limit", - "_key": "limit" + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" }, { "type": "string", - "example": "list", - "api_fieldname": "object", - "entity_fieldname": "object", - "_key": "object" + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" }, { "type": "string", + "description": "Entity name, always `error`.", "enum": [ - "ASC", - "DESC" + "error" ], - "description": "The order of the records to return. Acceptable values: ASC, DESC. Default: ASC", - "example": "ASC", - "api_fieldname": "order", - "entity_fieldname": "order", - "_key": "order" + "_key": "object" }, { - "type": "integer", - "api_fieldname": "total_count", - "entity_fieldname": "total_count", - "_key": "total_count" + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" } - ], - "pagination": true, - "foreign_key": { - "group": "Device_Update", - "entity": "update_campaign" - } + ] }, - "_key": "200" - }, - { - "description": "Validation error: The data used to update the campaign did not validate\n", - "_key": "400" - }, - { - "description": "Not authenticated", - "_key": "401" - }, - { - "description": "Unable to find content", "_key": "404" } ], - "path": "/v3/update-campaigns/", + "path": "/v3/update-campaigns", "summary": "List all campaigns", "return_type": "paginated_response(update_campaign)", "return_info": { @@ -73407,7 +94926,7 @@ "_key": "list" }, { - "description": "Get an update campaign.", + "description": "Get an update campaign.\n
\n**Usage example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56890120000789012 \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -73423,9 +94942,10 @@ "_key": "device_filter_helper" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "entity_fieldname": "id", "parameter_fieldname": "campaign_id", @@ -73438,7 +94958,7 @@ "mode": "read", "responses": [ { - "description": "Retrieved result successfully", + "description": "Retrieved result successfully.", "schema": [ { "group": "Device_Update", @@ -73446,52 +94966,109 @@ "_key": "foreign_key" }, { - "autostop_reason": { - "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "created_at": { "type": "string", - "example": "Insufficient billing credit.", - "api_fieldname": "autostop_reason", - "entity_fieldname": "autostop_reason" + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - "phase": { - "description": "The current phase of the campaign.", + "etag": { "type": "string", - "readOnly": true, - "api_fieldname": "phase", - "entity_fieldname": "phase" + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" }, - "created_at": { - "description": "The time the update campaign was created", + "updated_at": { "type": "string", "format": "date-time", + "description": "The time the entity was updated.", "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "campaign_strategy": { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot", + "api_fieldname": "campaign_strategy", + "entity_fieldname": "campaign_strategy" + }, + "object": { + "description": "Entity name: always 'update-campaign'.", + "type": "string", + "example": "update-campaign", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "active_at": { + "description": "The time the campaign entered the active state.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "active_at", + "entity_fieldname": "active_at" + }, + "approval_required": { + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "entity_fieldname": "approval_required" + }, + "archived_at": { + "description": "The time the campaign was archived.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "archived_at", + "entity_fieldname": "archived_at" + }, + "autostop": { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "entity_fieldname": "autostop" + }, + "autostop_success_percent": { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "entity_fieldname": "autostop_success_percent" + }, + "autostop_reason": { + "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "type": "string", + "example": "Insufficient billing credit.", + "api_fieldname": "autostop_reason", + "entity_fieldname": "autostop_reason" }, "description": { - "description": "An optional description of the campaign", + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "entity_fieldname": "description" }, "device_filter": { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "entity_fieldname": "device_filter" }, - "etag": { - "description": "The entity instance signature", - "type": "string", - "example": "2017-05-22T12:37:58.753425Z", - "api_fieldname": "etag", - "entity_fieldname": "etag" - }, "finished": { - "description": "The campaign finish timestamp", + "description": "The time the campaign finished.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", @@ -73499,48 +95076,87 @@ "entity_fieldname": "finished" }, "id": { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "entity_fieldname": "id" }, "name": { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", "api_fieldname": "name", "entity_fieldname": "name" }, - "object": { - "description": "The API resource entity", - "type": "string", - "example": "update-campaign", - "api_fieldname": "object", - "entity_fieldname": "object" - }, "root_manifest_id": { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "entity_fieldname": "root_manifest_id" }, "root_manifest_url": { + "description": "The URL for the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", + "example": "https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_url", "entity_fieldname": "root_manifest_url" }, + "starting_at": { + "description": "The time the campaign will be started.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "starting_at", + "entity_fieldname": "starting_at" + }, "started_at": { + "description": "The time the campaign was started.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "started_at", "entity_fieldname": "started_at" }, + "stopping_at": { + "description": "The time the campaign will be stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopping_at", + "entity_fieldname": "stopping_at" + }, + "stopped_at": { + "description": "The time the campaign was stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopped_at", + "entity_fieldname": "stopped_at" + }, + "phase": { + "description": "The phase of the campaign.", + "type": "string", + "enum": [ + "draft", + "awaiting_approval", + "timed", + "starting", + "active", + "stopping", + "stopped", + "deleted", + "archived" + ], + "api_fieldname": "phase", + "entity_fieldname": "phase" + }, "state": { - "description": "DEPRECATED: The state of the campaign (use phase instead).", + "description": "The state of the campaign.", + "type": "string", "enum": [ "draft", "scheduled", @@ -73562,7 +95178,6 @@ "userstopped", "conflict" ], - "type": "string", "x-deprecation": { "issued_at": "2019-03-18T14:55:20+00:00", "end_of_life_at": "2020-03-18T14:55:20+00:00", @@ -73581,33 +95196,232 @@ "api_fieldname": "when", "entity_fieldname": "when" }, - "updated_at": { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" - }, "_key": "properties" } ], "_key": "200" }, { - "description": "Validation error: The data used to update the campaign did not validate\n", + "description": "Validation error: The data used to update the campaign did not validate.\n", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "400" }, { - "description": "Not authenticated", + "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "401" }, { - "description": "Unable to find campaign", + "description": "Unable to find campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" } ], - "path": "/v3/update-campaigns/{campaign_id}/", + "path": "/v3/update-campaigns/{campaign_id}", "summary": "Get a campaign.", "return_type": "update_campaign", "return_info": { @@ -73623,18 +95437,27 @@ "type", "filter", "state", - "autostop_reason", - "phase", "created_at", + "updated_at", + "campaign_strategy", + "active_at", + "approval_required", + "archived_at", + "autostop", + "autostop_success_percent", + "autostop_reason", "description", "device_filter", "finished", "name", "root_manifest_id", "root_manifest_url", + "starting_at", "started_at", - "when", - "updated_at" + "stopping_at", + "stopped_at", + "phase", + "when" ], "group_id": "Device_Update", "parameter_map": { @@ -73647,7 +95470,7 @@ "_key": "read" }, { - "description": "This command will begin the process of starting a campaign.", + "description": "Start a campaign.\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a8900002e655cd94fa8/start \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -73663,11 +95486,12 @@ "_key": "device_filter_helper" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "in": "path", "name": "campaign_id", "required": true, "type": "string", + "pattern": "[A-Fa-f0-9]{32}", "entity_fieldname": "id", "api_fieldname": "campaign_id", "external_param": false, @@ -73684,18 +95508,294 @@ }, { "description": "Unable to change the phase of the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "400" }, { "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "401" }, { "description": "Cannot find the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" }, { "description": "Cannot start the campaign while in the current phase.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "409" } ], @@ -73727,7 +95827,7 @@ "_key": "start" }, { - "description": "This command will begin the process of stopping a campaign.", + "description": "Stop a campaign. Stopping is a process that requires the campaign go through several [phases](https://www.pelion.com/docs/device-management/current/updating-firmware/device-management-update-using-the-apis.html).\n
\n**Usage example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc645000000000001001000b5/stop \\\n-H 'Authorization: Bearer '\n```\n", "field_renames": [], "fields": [ { @@ -73743,11 +95843,12 @@ "_key": "device_filter_helper" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "in": "path", "name": "campaign_id", "required": true, "type": "string", + "pattern": "[A-Fa-f0-9]{32}", "entity_fieldname": "id", "api_fieldname": "campaign_id", "external_param": false, @@ -73764,18 +95865,294 @@ }, { "description": "Unable to change the phase of the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "400" }, { "description": "Not authenticated.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "401" }, { "description": "Cannot find the campaign.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "404" }, { "description": "Cannot stop the campaign while in the current phase.", + "schema": { + "type": "object", + "required": [ + "code", + "message", + "object", + "request_id", + "type" + ], + "properties": [ + { + "type": "integer", + "format": "int32", + "description": "HTTP response code", + "example": 400, + "_key": "code" + }, + { + "type": "array", + "description": "Request fields which failed validation.", + "items": { + "type": "object", + "required": [ + "name", + "message" + ], + "properties": [ + { + "type": "string", + "description": "Message describing the error condition.", + "_key": "message" + }, + { + "type": "string", + "description": "Name of the field which caused the error.", + "_key": "name" + } + ] + }, + "_key": "fields" + }, + { + "type": "string", + "description": "A human readable informative explanation", + "example": "Validation error", + "_key": "message" + }, + { + "type": "string", + "description": "Entity name, always `error`.", + "enum": [ + "error" + ], + "_key": "object" + }, + { + "type": "string", + "description": "ID of the request.", + "example": "0161991d63150242ac12000600000000", + "_key": "request_id" + }, + { + "type": "string", + "description": "Error type used to categorise the error.", + "example": "validation_error", + "_key": "type" + } + ] + }, "_key": "409" } ], @@ -73807,14 +96184,48 @@ "_key": "stop" }, { - "description": "Modify an update campaign.", + "description": "Modify an update campaign.\n
\n**Usage example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123007f9012ab567890120000789012 \\\n-H 'Authorization: Bearer ' \\\nd '{\n \"description\": \"Campaign is for ...\",\n \"device_filter\": \"123400000000000000000000000ae45\",\n \"name\": \"campaign\",\n \"root_manifest_id\": \"5678000000000000000000000000bd98\",\n}'\n```\n", "field_renames": [], "fields": [ { - "description": "An optional description of the campaign", + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "entity_fieldname": "approval_required", + "parameter_fieldname": "approval_required", + "in": "body", + "required": false, + "_key": "approval_required" + }, + { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "entity_fieldname": "autostop", + "parameter_fieldname": "autostop", + "in": "body", + "required": false, + "_key": "autostop" + }, + { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "entity_fieldname": "autostop_success_percent", + "parameter_fieldname": "autostop_success_percent", + "in": "body", + "required": false, + "_key": "autostop_success_percent" + }, + { + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "entity_fieldname": "description", "parameter_fieldname": "description", @@ -73823,9 +96234,9 @@ "_key": "description" }, { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "entity_fieldname": "device_filter", "parameter_fieldname": "device_filter", @@ -73846,9 +96257,10 @@ "_key": "device_filter_helper" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "entity_fieldname": "id", "parameter_fieldname": "campaign_id", @@ -73857,7 +96269,7 @@ "_key": "id" }, { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", @@ -73869,8 +96281,9 @@ "_key": "name" }, { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "entity_fieldname": "root_manifest_id", "parameter_fieldname": "root_manifest_id", @@ -73896,7 +96309,7 @@ "mode": "update", "responses": [ { - "description": "Update campaign updated", + "description": "Update campaign updated.", "schema": [ { "group": "Device_Update", @@ -73904,52 +96317,109 @@ "_key": "foreign_key" }, { - "autostop_reason": { - "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "created_at": { "type": "string", - "example": "Insufficient billing credit.", - "api_fieldname": "autostop_reason", - "entity_fieldname": "autostop_reason" + "format": "date-time", + "description": "The time the entity was created.", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "created_at", + "entity_fieldname": "created_at" }, - "phase": { - "description": "The current phase of the campaign.", + "etag": { "type": "string", - "readOnly": true, - "api_fieldname": "phase", - "entity_fieldname": "phase" + "description": "API resource entity version.", + "example": "2017-05-22T12:37:58.753425Z", + "api_fieldname": "etag", + "entity_fieldname": "etag" }, - "created_at": { - "description": "The time the update campaign was created", + "updated_at": { "type": "string", "format": "date-time", + "description": "The time the entity was updated.", "example": "2017-05-22T12:37:55.576563Z", - "api_fieldname": "created_at", - "entity_fieldname": "created_at" + "api_fieldname": "updated_at", + "entity_fieldname": "updated_at" + }, + "campaign_strategy": { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot", + "api_fieldname": "campaign_strategy", + "entity_fieldname": "campaign_strategy" + }, + "object": { + "description": "Entity name: always 'update-campaign'.", + "type": "string", + "example": "update-campaign", + "api_fieldname": "object", + "entity_fieldname": "object" + }, + "active_at": { + "description": "The time the campaign entered the active state.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "active_at", + "entity_fieldname": "active_at" + }, + "approval_required": { + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "entity_fieldname": "approval_required" + }, + "archived_at": { + "description": "The time the campaign was archived.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "archived_at", + "entity_fieldname": "archived_at" + }, + "autostop": { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "entity_fieldname": "autostop" + }, + "autostop_success_percent": { + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "entity_fieldname": "autostop_success_percent" + }, + "autostop_reason": { + "description": "Text description of why a campaign failed to start or why a campaign stopped.", + "type": "string", + "example": "Insufficient billing credit.", + "api_fieldname": "autostop_reason", + "entity_fieldname": "autostop_reason" }, "description": { - "description": "An optional description of the campaign", + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "entity_fieldname": "description" }, "device_filter": { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "entity_fieldname": "device_filter" }, - "etag": { - "description": "The entity instance signature", - "type": "string", - "example": "2017-05-22T12:37:58.753425Z", - "api_fieldname": "etag", - "entity_fieldname": "etag" - }, "finished": { - "description": "The campaign finish timestamp", + "description": "The time the campaign finished.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", @@ -73957,48 +96427,87 @@ "entity_fieldname": "finished" }, "id": { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "entity_fieldname": "id" }, "name": { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", "api_fieldname": "name", "entity_fieldname": "name" }, - "object": { - "description": "The API resource entity", - "type": "string", - "example": "update-campaign", - "api_fieldname": "object", - "entity_fieldname": "object" - }, "root_manifest_id": { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "entity_fieldname": "root_manifest_id" }, "root_manifest_url": { + "description": "The URL for the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", + "example": "https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_url", "entity_fieldname": "root_manifest_url" }, + "starting_at": { + "description": "The time the campaign will be started.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "starting_at", + "entity_fieldname": "starting_at" + }, "started_at": { + "description": "The time the campaign was started.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "started_at", "entity_fieldname": "started_at" }, + "stopping_at": { + "description": "The time the campaign will be stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopping_at", + "entity_fieldname": "stopping_at" + }, + "stopped_at": { + "description": "The time the campaign was stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopped_at", + "entity_fieldname": "stopped_at" + }, + "phase": { + "description": "The phase of the campaign.", + "type": "string", + "enum": [ + "draft", + "awaiting_approval", + "timed", + "starting", + "active", + "stopping", + "stopped", + "deleted", + "archived" + ], + "api_fieldname": "phase", + "entity_fieldname": "phase" + }, "state": { - "description": "DEPRECATED: The state of the campaign (use phase instead).", + "description": "The state of the campaign.", + "type": "string", "enum": [ "draft", "scheduled", @@ -74020,7 +96529,6 @@ "userstopped", "conflict" ], - "type": "string", "x-deprecation": { "issued_at": "2019-03-18T14:55:20+00:00", "end_of_life_at": "2020-03-18T14:55:20+00:00", @@ -74039,25 +96547,17 @@ "api_fieldname": "when", "entity_fieldname": "when" }, - "updated_at": { - "description": "The time the object was updated", - "format": "date-time", - "example": "2017-05-22T12:37:55.576563Z", - "type": "string", - "api_fieldname": "updated_at", - "entity_fieldname": "updated_at" - }, "_key": "properties" } ], "_key": "200" }, { - "description": "Validation error: The data used to update the campaign did not validate\n", + "description": "Validation error: The data used to update the campaign did not validate.\n", "_key": "400" }, { - "description": "Not authenticated", + "description": "Not authenticated.", "_key": "401" }, { @@ -74065,11 +96565,11 @@ "_key": "403" }, { - "description": "Update campaign can't be found", + "description": "Update campaign can't be found.", "_key": "404" } ], - "path": "/v3/update-campaigns/{campaign_id}/", + "path": "/v3/update-campaigns/{campaign_id}", "summary": "Modify a campaign", "return_type": "update_campaign", "return_info": { @@ -74085,13 +96585,19 @@ "type", "filter", "state", - "autostop_reason", - "phase", "created_at", + "updated_at", + "campaign_strategy", + "active_at", + "archived_at", + "autostop_reason", "finished", "root_manifest_url", + "starting_at", "started_at", - "updated_at" + "stopping_at", + "stopped_at", + "phase" ], "group_id": "Device_Update", "parameter_map": { @@ -74105,6 +96611,44 @@ } ], "fields": [ + { + "description": "The time the campaign entered the active state.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "active_at", + "readOnly": true, + "required": false, + "_key": "active_at" + }, + { + "type": "boolean", + "description": "Flag indicating whether approval is needed to start the campaign.", + "example": "false", + "api_fieldname": "approval_required", + "readOnly": false, + "required": false, + "_key": "approval_required" + }, + { + "description": "The time the campaign was archived.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "archived_at", + "readOnly": true, + "required": false, + "_key": "archived_at" + }, + { + "type": "boolean", + "description": "Flag indicating whether the campaign should be auto-stopped on reaching a threshold.", + "example": "false", + "api_fieldname": "autostop", + "readOnly": false, + "required": false, + "_key": "autostop" + }, { "description": "Text description of why a campaign failed to start or why a campaign stopped.", "type": "string", @@ -74115,9 +96659,33 @@ "_key": "autostop_reason" }, { - "description": "The time the update campaign was created", + "description": "Percent of successful device updates to auto stop the campaign.", + "type": "number", + "format": "double", + "example": "85.00", + "api_fieldname": "autostop_success_percent", + "readOnly": false, + "required": false, + "_key": "autostop_success_percent" + }, + { + "description": "How the campaign adds devices. A `one-shot` campaign does not add new devices after it has started. A `continuous` campaign means that devices may be added to the campaign after it has started. The default is `one-shot`.", + "type": "string", + "enum": [ + "one-shot", + "continuous" + ], + "default": "one-shot", + "api_fieldname": "campaign_strategy", + "readOnly": false, + "required": false, + "enum_reference": "update_campaign_strategy_enum", + "_key": "campaign_strategy" + }, + { "type": "string", "format": "date-time", + "description": "The time the entity was created.", "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "created_at", "readOnly": true, @@ -74125,19 +96693,19 @@ "_key": "created_at" }, { - "description": "An optional description of the campaign", + "description": "An optional description of the campaign.", "type": "string", "maxLength": 2000, - "example": "", + "example": "This campaign updates Class XX devices to version 1.34", "api_fieldname": "description", "readOnly": false, "required": false, "_key": "description" }, { - "description": "The filter for the devices the campaign is targeting at", + "description": "The filter for the devices the campaign targets. Refer to this using the filter ID.", "type": "string", - "example": "id__eq=00000000000000000000000000000000", + "example": "state__eq=registered", "api_fieldname": "device_filter", "readOnly": false, "required": true, @@ -74157,7 +96725,7 @@ "_key": "device_filter_helper" }, { - "description": "The campaign finish timestamp", + "description": "The time the campaign finished.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", @@ -74167,16 +96735,17 @@ "_key": "finished" }, { - "description": "The campaign ID", + "description": "The campaign ID.", "type": "string", - "example": "00000000000000000000000000000000", + "pattern": "[A-Fa-f0-9]{32}", + "example": "016e83ddc648000000000001001000f5", "api_fieldname": "id", "readOnly": false, "required": true, "_key": "id" }, { - "description": "The campaign name", + "description": "The campaign name.", "type": "string", "maxLength": 128, "example": "campaign", @@ -74186,30 +96755,45 @@ "_key": "name" }, { - "description": "The current phase of the campaign.", + "description": "The phase of the campaign.", "type": "string", - "readOnly": true, + "enum": [ + "draft", + "awaiting_approval", + "timed", + "starting", + "active", + "stopping", + "stopped", + "deleted", + "archived" + ], "api_fieldname": "phase", + "readOnly": true, "required": false, + "enum_reference": "update_campaign_phase_enum", "_key": "phase" }, { + "description": "The ID of the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "00000000000000000000000000000000", + "example": "016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_id", "readOnly": false, "required": false, "_key": "root_manifest_id" }, { + "description": "The URL for the manifest that will be sent to the device as part of the campaign.", "type": "string", - "example": "http://example.com/00000000000000000000000000000000", + "example": "https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102", "api_fieldname": "root_manifest_url", "readOnly": true, "required": false, "_key": "root_manifest_url" }, { + "description": "The time the campaign was started.", "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", @@ -74219,10 +96803,40 @@ "_key": "started_at" }, { - "description": "The time the object was updated", + "description": "The time the campaign will be started.", + "type": "string", "format": "date-time", "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "starting_at", + "readOnly": true, + "required": false, + "_key": "starting_at" + }, + { + "description": "The time the campaign was stopped.", "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopped_at", + "readOnly": true, + "required": false, + "_key": "stopped_at" + }, + { + "description": "The time the campaign will be stopped.", + "type": "string", + "format": "date-time", + "example": "2017-05-22T12:37:55.576563Z", + "api_fieldname": "stopping_at", + "readOnly": true, + "required": false, + "_key": "stopping_at" + }, + { + "type": "string", + "format": "date-time", + "description": "The time the entity was updated.", + "example": "2017-05-22T12:37:55.576563Z", "api_fieldname": "updated_at", "readOnly": true, "required": false, @@ -74241,7 +96855,9 @@ } ], "field_renames": [], - "tags": [], + "tags": [ + "Device update - campaigns" + ], "group_id": "Device_Update", "_key": "update_campaign" }, @@ -74256,7 +96872,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Create or invite a new user to the account. Only email address is used; other attributes are set in the second step.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/users?action=invite \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", + "description": "Create or invite a new user to the account. The invited user has to accept the invitation by clicking the link in the invitation email.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/users?action=invite \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", "field_renames": [], "fields": [ { @@ -74356,6 +96972,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -74365,6 +96991,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -74375,6 +97002,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -74383,7 +97011,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -74487,6 +97115,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -74735,6 +97372,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -74744,6 +97391,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -74754,6 +97402,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -74762,7 +97411,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -75202,7 +97851,7 @@ "_key": "create" }, { - "description": "Delete a user.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete a user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -75545,13 +98194,13 @@ "_key": "delete" }, { - "description": "Retrieve the details of all users.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of users.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -75591,7 +98240,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -75626,7 +98275,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -75676,6 +98325,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -75892,6 +98550,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -75901,6 +98569,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -75911,6 +98580,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -75919,7 +98589,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -76213,7 +98883,7 @@ } ], "path": "/v3/users", - "summary": "Get the details of all users.", + "summary": "Get users.", "return_type": "paginated_response(user)", "return_info": { "self": true, @@ -76264,13 +98934,13 @@ "_key": "list" }, { - "description": "Retrieve groups of the user.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of policy groups associated with a user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -76322,7 +98992,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -76357,7 +99027,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -76390,8 +99060,21 @@ "format": "int32", "example": 0, "description": "The number of API keys in this group.", + "x-deprecation": { + "issued_at": "2020-08-01T00:00:00+00:00", + "end_of_life_at": "2021-08-01T00:00:00+00:00", + "comment": "This property is deprecated. See 'application_count' property.", + "links": [] + }, "_key": "apikey_count" }, + { + "type": "integer", + "format": "int32", + "example": 0, + "description": "The number of applications in this group.", + "_key": "application_count" + }, { "type": "string", "format": "date-time", @@ -76729,7 +99412,7 @@ } ], "path": "/v3/users/{user_id}/groups", - "summary": "Get groups of the user.", + "summary": "Get policy groups for a user.", "return_type": "paginated_response(policy_group)", "return_info": { "self": false, @@ -76761,7 +99444,7 @@ "_key": "policy_groups" }, { - "description": "Retrieve the details of a user.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve the details of a user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -76825,6 +99508,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -77073,6 +99765,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -77082,6 +99784,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -77092,6 +99795,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -77100,7 +99804,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -77476,7 +100180,7 @@ "_key": "read" }, { - "description": "Update user details\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"username\": \"myusername\"}'\n```", + "description": "Update user details.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d '{\"username\": \"myusername\"}'\n```", "field_renames": [], "fields": [ { @@ -77574,6 +100278,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -77583,6 +100297,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -77593,6 +100308,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -77601,7 +100317,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -77693,6 +100409,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -77941,6 +100666,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -77950,6 +100685,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -77960,6 +100696,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -77968,7 +100705,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -78516,6 +101253,15 @@ "entity_fieldname": "account_id", "_key": "account_id" }, + { + "type": "string", + "format": "date-time", + "example": "2018-02-13T09:35:20Z", + "description": "Creation UTC time RFC3339.", + "api_fieldname": "created_at", + "entity_fieldname": "created_at", + "_key": "created_at" + }, { "type": "string", "example": "127.0.0.1", @@ -78771,6 +101517,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -78780,6 +101536,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -78790,6 +101547,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -78798,7 +101556,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -78911,7 +101669,7 @@ "primary_key_field": "id", "methods": [ { - "description": "Invite a new or existing user.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/user-invitations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", + "description": "Invite a new or existing user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/user-invitations \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json' \\\n-d {\"email\": \"myemail@company.com\"}\n```", "field_renames": [], "fields": [ { @@ -78951,6 +101709,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -78960,6 +101728,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -78970,6 +101739,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -78978,7 +101748,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -79104,6 +101874,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -79113,6 +101893,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -79123,6 +101904,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -79131,7 +101913,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -79435,7 +102217,7 @@ "_key": "create" }, { - "description": "Delete an active user invitation sent to a new or existing user.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Delete an active user invitation sent to a new or existing user.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X DELETE https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -79705,13 +102487,13 @@ "_key": "delete" }, { - "description": "Retrieve details for all the active user invitations.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve an array of active user invitations sent by email.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -79739,7 +102521,7 @@ }, { "type": "string", - "description": "Record order based on creation time. Acceptable values: ASC, DESC. Default: ASC.", + "description": "Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.", "enum": [ "ASC", "DESC" @@ -79774,7 +102556,7 @@ { "type": "string", "example": "01619571f3c00242ac12000600000000", - "description": "The entity ID to fetch after the given one.", + "description": "The entity ID to retrieve after the given one.", "pattern": "[a-f0-9]{32}", "api_fieldname": "after", "entity_fieldname": "after", @@ -79855,6 +102637,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -79864,6 +102656,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -79874,6 +102667,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -79882,7 +102676,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -80131,7 +102925,7 @@ } ], "path": "/v3/user-invitations", - "summary": "Get the details of all user invitations.", + "summary": "Get user invitations.", "return_type": "paginated_response(user_invitation)", "return_info": { "self": true, @@ -80170,7 +102964,7 @@ "_key": "list" }, { - "description": "Retrieve the details of an active user invitation.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", + "description": "Retrieve the details of an active user invitation.\nNote: This endpoint is restricted to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \\\n-H 'Authorization: Bearer '\n```", "field_renames": [], "fields": [ { @@ -80277,6 +103071,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -80286,6 +103090,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -80296,6 +103101,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -80304,7 +103110,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -80684,6 +103490,16 @@ "properties": [ { "type": "string", + "example": "fed/user_007", + "description": "The ID of the user in the identity provider's service.", + "readOnly": true, + "api_fieldname": "foreign_id", + "entity_fieldname": "foreign_id", + "_key": "foreign_id" + }, + { + "type": "string", + "example": "01619571f3c00242ac12000600000000", "description": "ID of the identity provider.", "readOnly": false, "_override": true, @@ -80693,6 +103509,7 @@ }, { "type": "string", + "example": "Pelion", "readOnly": false, "description": "Name of the identity provider.", "_override": true, @@ -80703,6 +103520,7 @@ { "type": "string", "description": "Identity provider type.", + "example": "NATIVE", "readOnly": true, "enum": [ "NATIVE", @@ -80711,7 +103529,7 @@ "OIDC" ], "api_fieldname": "type", - "entity_fieldname": "type", + "entity_fieldname": "login_profile_type", "_key": "type" } ], @@ -80763,8 +103581,8 @@ "fields": [ { "type": "string", - "description": "Provides details in case of failure.\n", - "example": "message describing the verification failure", + "description": "Provides details in case of failure.", + "example": "Message describing the verification failure", "api_fieldname": "message", "readOnly": true, "required": false, @@ -80772,7 +103590,7 @@ }, { "type": "boolean", - "description": "Indicates whether the certificate issuer was verified successfully.\n", + "description": "Indicates whether the certificate issuer was verified successfully.", "example": false, "api_fieldname": "successful", "readOnly": true, diff --git a/api_specifications/public/sdk_foundation_definition.yaml b/api_specifications/public/sdk_foundation_definition.yaml index 47b3a1872..5cd6e776c 100644 --- a/api_specifications/public/sdk_foundation_definition.yaml +++ b/api_specifications/public/sdk_foundation_definition.yaml @@ -42,7 +42,8 @@ entities: x-nullable: true - _key: admin_id api_fieldname: admin_id - description: The ID of the admin user created for this account. + description: The ID of the admin user created for this account. Present only in + the response for the account creation. example: 01619571e2e89242ac12000600000000 pattern: '[a-f0-9]{32}' readOnly: true @@ -57,6 +58,11 @@ entities: readOnly: true required: false type: string + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-09-01T00:00:00+00:00' + issued_at: '2020-09-01T00:00:00+00:00' + links: [] x-nullable: true - _key: admin_name api_fieldname: admin_name @@ -79,7 +85,8 @@ entities: x-nullable: true - _key: aliases api_fieldname: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases must be + globally unique. items: pattern: '[\w\-._]{8,100}' type: string @@ -87,6 +94,41 @@ entities: readOnly: false required: false type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + enum_reference: account_business_model_enum + example: api_calls_1_business_model + readOnly: false + required: false + type: string + - _key: business_model_history + api_fieldname: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin + only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + readOnly: true + required: false + type: array - _key: city api_fieldname: city description: The city part of the postal address. @@ -98,7 +140,7 @@ entities: x-nullable: true - _key: company api_fieldname: company - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 readOnly: false @@ -158,7 +200,7 @@ entities: x-nullable: true - _key: display_name api_fieldname: display_name - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 readOnly: false @@ -218,14 +260,100 @@ entities: required: false type: integer x-nullable: true + - _key: limitations + api_fieldname: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation is inherited + from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + readOnly: true + required: false + type: array - _key: limits additionalProperties: type: string api_fieldname: limits - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' readOnly: true required: false type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status api_fieldname: mfa_status @@ -469,6 +597,25 @@ entities: readOnly: true required: false type: string + - _key: tier_history + api_fieldname: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + readOnly: true + required: false + type: array - _key: updated_at api_fieldname: updated_at description: Last update UTC time RFC3339. @@ -488,7 +635,9 @@ entities: group_id: Accounts methods: - _key: api_keys - description: 'Retrieve API keys in an array, optionally filtered by the owner. + description: 'Retrieve an array of API keys, optionally filtered by the owner. + + Note: This endpoint is restricted to administrators. **Example:** @@ -498,7 +647,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -516,7 +665,7 @@ entities: fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -563,7 +712,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -600,7 +749,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -723,8 +872,8 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC @@ -900,7 +1049,11 @@ entities: type: subtenant_api_key return_type: paginated_response(subtenant_api_key) summary: Get all API keys. - x_deprecation: null + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: key: - eq @@ -909,6 +1062,8 @@ entities: - _key: create description: 'Create a new account. + Note: This endpoint is restricted to administrators. + **Example:** @@ -916,14 +1071,14 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{"display_name": "MyAccount1", "admin_name": "accountAdmin1", "email": - "example_admin@myaccount.info", "country": "United Kingdom", "end_market": "Smart - City", "address_line1": "110 Fulbourn Rd", "city": "Cambridge", "contact": "J. - Doe", "company": "Arm"}'' + -d ''{"display_name": "MyAccount1", "aliases": [ "my-account" ], "admin_name": + "accountAdmin1", "email": "example_admin@myaccount.info", "country": "United + Kingdom", "end_market": "Smart City", "address_line1": "110 Fulbourn Rd", "city": + "Cambridge", "contact": "J. Doe", "company": "Arm"}'' ```' drop_fields: @@ -955,7 +1110,10 @@ entities: - expiration - admin_id - admin_key + - limitations - password_recovery_expiration + - business_model_history + - tier_history field_renames: [] fields: - _key: action @@ -1051,7 +1209,8 @@ entities: x-nullable: true - _key: aliases api_fieldname: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. entity_fieldname: aliases in: body items: @@ -1061,6 +1220,20 @@ entities: parameter_fieldname: aliases required: false type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + enum_reference: account_business_model_enum + example: api_calls_1_business_model + in: body + parameter_fieldname: business_model + required: false + type: string - _key: city api_fieldname: city description: The city part of the postal address. @@ -1074,7 +1247,7 @@ entities: x-nullable: true - _key: company api_fieldname: company - description: The name of the company. + description: The name of the company used in billing. entity_fieldname: company example: ARM Holdings Plc in: body @@ -1127,7 +1300,7 @@ entities: x-nullable: true - _key: display_name api_fieldname: display_name - description: The display name for the account. + description: The display name for the tenant account. entity_fieldname: display_name example: ARM in: body @@ -1154,7 +1327,7 @@ entities: example: IT in: body parameter_fieldname: end_market - required: false + required: true type: string - _key: phone_number api_fieldname: phone_number @@ -1204,6 +1377,9 @@ entities: description: Successful operation. schema: description: Represents an account in requests and responses. + foreign_key: + entity: account + group: Accounts properties: - _key: address_line1 api_fieldname: address_line1 @@ -1241,7 +1417,8 @@ entities: x-nullable: true - _key: admin_id api_fieldname: admin_id - description: The ID of the admin user created for this account. + description: The ID of the admin user created for this account. Present + only in the response for the account creation. entity_fieldname: admin_id example: 01619571e2e89242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -1255,6 +1432,11 @@ entities: example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT readOnly: true type: string + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-09-01T00:00:00+00:00' + issued_at: '2020-09-01T00:00:00+00:00' + links: [] x-nullable: true - _key: admin_name api_fieldname: admin_name @@ -1275,13 +1457,47 @@ entities: x-nullable: true - _key: aliases api_fieldname: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. entity_fieldname: aliases items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin + only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + api_fieldname: business_model_history + description: Business model history for this account. + entity_fieldname: business_model_history + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city api_fieldname: city description: The city part of the postal address. @@ -1292,7 +1508,7 @@ entities: x-nullable: true - _key: company api_fieldname: company - description: The name of the company. + description: The name of the company used in billing. entity_fieldname: company example: ARM Holdings Plc maxLength: 100 @@ -1345,7 +1561,7 @@ entities: x-nullable: true - _key: display_name api_fieldname: display_name - description: The display name for the account. + description: The display name for the tenant account. entity_fieldname: display_name example: ARM maxLength: 100 @@ -1404,13 +1620,98 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + api_fieldname: limitations + description: List of account limitation objects. + entity_fieldname: limitations + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation is + inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string api_fieldname: limits - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' entity_fieldname: limits type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status api_fieldname: mfa_status @@ -1651,53 +1952,43 @@ entities: maxLength: 100 type: string x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present only - in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - _key: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city description: The city part of the postal address. example: Cambridge @@ -1705,7 +1996,7 @@ entities: type: string x-nullable: true - _key: company - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string @@ -1744,7 +2035,7 @@ entities: type: string x-nullable: true - _key: display_name - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -1789,11 +2080,94 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status description: The enforcement status of multi-factor authentication, @@ -1988,389 +2362,629 @@ entities: type: string - _key: sub_accounts description: List of sub accounts. Not available for developer users. - items: [] - type: array - x-nullable: true - - _key: template_id - description: Account template ID. - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - example: '1' - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: upgraded_at - description: Time when upgraded to commercial account in UTC format - RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - required: - - end_market - - etag - - id - - object - - status - - tier - type: object - type: array - x-nullable: true - - _key: template_id - api_fieldname: template_id - description: Account template ID. - entity_fieldname: template_id - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: tier - api_fieldname: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - entity_fieldname: tier - example: '1' - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: upgraded_at - api_fieldname: upgraded_at - description: Time when upgraded to commercial account in UTC format RFC3339. - entity_fieldname: upgraded_at - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - required: - - end_market - - etag - - id - - object - - status - - tier - type: object - - _key: '400' - description: Error in input data, for example, invalid username. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: account - return_type: account - summary: Create a new account. - x_deprecation: null - x_filter: {} - - _key: dark_theme_branding_colors - description: 'Retrieve dark theme branding colors for an account. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - sub_accounts - - limit - - after - - order - - total_count - - has_more - - data - field_renames: [] - fields: - - _key: id - api_fieldname: account_id - description: Account ID. - entity_fieldname: id - external_param: false - in: path - name: account_id - parameter_fieldname: account_id - required: true - type: string - foreign_key: - entity: subtenant_dark_theme_color - group_id: Accounts - method: get - mode: dark_theme_branding_colors - notes: This lists the dark theme banding colors of the subtenant account. - operation_id: getAccountDarkColors - pagination: true - parameter_map: - account_id: id - path: /v3/accounts/{account_id}/branding-colors/dark - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: dark_theme_color - group: Branding - pagination: true - properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - foreign_key: - entity: dark_theme_color - group: Branding - properties: - - _key: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - type: string + items: + description: Represents an account in requests and responses. + properties: + - _key: address_line1 + description: Postal address line 1. + example: 110 Fulbourn Rd + maxLength: 100 + type: string + x-nullable: true + - _key: address_line2 + description: Postal address line 2. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: aliases + description: An array of aliases for the tenant account ID. The + aliases must be globally unique. + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by + the root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: city + description: The city part of the postal address. + example: Cambridge + maxLength: 100 + type: string + x-nullable: true + - _key: company + description: The name of the company used in billing. + example: ARM Holdings Plc + maxLength: 100 + type: string + x-nullable: true + - _key: contact + description: The name of the contact person for this account. + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + - _key: contract_number + description: Contract number of the customer. + example: 1NX25_0001 + type: string + x-nullable: true + - _key: country + description: The country part of the postal address. + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: custom_fields + additionalProperties: + type: string + description: Account's custom properties as key-value pairs. + type: object + x-nullable: true + - _key: customer_number + description: Customer number of the customer. + example: 1NC25_0001 + type: string + x-nullable: true + - _key: display_name + description: The display name for the tenant account. + example: ARM + maxLength: 100 + type: string + x-nullable: true + - _key: email + description: The company email address for this account. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: end_market + description: Account end market. + example: IT + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: expiration + description: Expiration time of the account, as UTC time RFC3339. + format: date-time + type: string + x-nullable: true + - _key: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration + a notification email is sent. + example: '180' + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + - _key: id + description: Account ID. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: idle_timeout + description: The reference token expiration time, in minutes, for + this account. + example: '30' + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: limits + additionalProperties: + type: string + description: 'DEPRECATED: Replaced by the limitations parameter.' + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true + - _key: mfa_status + description: The enforcement status of multi-factor authentication, + either `enforced` or `optional`. + enum: + - enforced + - optional + type: string + x-nullable: true + - _key: notification_emails + description: A list of notification email addresses. + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + - _key: object + description: 'Entity name: always `account`.' + enum: + - account + type: string + - _key: parent_account + description: Represents parent account contact details in responses. + foreign_key: + entity: parent_account + group: Accounts + properties: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact + person of the parent account. + entity_fieldname: admin_email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person + of the parent account. + entity_fieldname: admin_name + example: J. Doe + maxLength: 100 + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + entity_fieldname: id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + type: object + x-nullable: true + - _key: parent_id + description: The ID of the parent account, if any. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: password_policy + description: The password policy for this account. + foreign_key: + entity: password_policy + group: Accounts + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: + - minimum_length + type: object + x-nullable: true + - _key: password_recovery_expiration + description: Indicates for how many minutes a password recovery + email is valid. + format: int32 + maximum: 45 + minimum: 1 + type: integer + - _key: phone_number + description: The phone number of a company representative. + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: policies + description: List of policies if requested. + items: + description: Represents a feature policy. Either the feature or + the resource must be specified. + foreign_key: + entity: policy + group: Accounts + properties: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents + all actions. + entity_fieldname: action + example: GET + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is + allowed or not. + entity_fieldname: allow + example: true + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + entity_fieldname: feature + example: update-campaigns + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited + or overwritten specifically. + entity_fieldname: inherited + example: false + readOnly: true + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited + from. + entity_fieldname: inherited_from + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited + from. + entity_fieldname: inherited_type + enum: + - account + - template + - tier_template + example: account + readOnly: true + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + entity_fieldname: resource + example: /v3/update-campaign + type: string + type: object + type: array + x-nullable: true + - _key: postal_code + description: The postal code part of the postal address. + example: CB1 9NJ + maxLength: 100 + type: string + x-nullable: true + - _key: reason + description: A note with the reason for account status update. + example: Subscription paid. + type: string + x-nullable: true + - _key: reference_note + description: A reference note for updating the status of the account. + example: ARM-INT-0001 + type: string + x-nullable: true + - _key: sales_contact + description: Email address of the sales contact. + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: state + description: The state part of the postal address. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: status + description: The status of the account. + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + type: string + - _key: sub_accounts + description: List of sub accounts. Not available for developer users. + items: [] + type: array + x-nullable: true + - _key: template_id + description: Account template ID. + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, + `1`: commercial account, `2`: partner tier. Other values are + reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + description: Time when upgraded to commercial account in UTC format + RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + type: array x-nullable: true - - _key: object - description: 'Entity name: always ''branding_color''' - enum: - - branding_color - readOnly: true + - _key: template_id + description: Account template ID. + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: reference - _override: true - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - is_primary_key: true + x-nullable: true + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + description: Time when upgraded to commercial account in UTC format + RFC3339. example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + required: + - end_market + - etag + - id + - object + - status + - tier type: object type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: The number of results to return, or equal to `total_count`. - entity_fieldname: limit - example: 50 - format: int32 - type: integer - - _key: object - api_fieldname: object - description: 'Entity name: always `list`.' - entity_fieldname: object - enum: - - list + x-nullable: true + - _key: template_id + api_fieldname: template_id + description: Account template ID. + entity_fieldname: template_id + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' - entity_fieldname: order - enum: - - ASC - - DESC + x-nullable: true + - _key: tier + api_fieldname: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + entity_fieldname: tier + example: '1' type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit + - _key: tier_history + api_fieldname: tier_history + description: Tier history for this account. + entity_fieldname: tier_history + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + api_fieldname: upgraded_at + description: Time when upgraded to commercial account in UTC format RFC3339. + entity_fieldname: upgraded_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + - _key: '400' + description: Error in input data, for example, invalid username. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message - object - - total_count + - request_id + - type type: object - _key: '401' description: Authentication failure. @@ -2468,8 +3082,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Account not found. + - _key: '409' + description: Account with the specified alias exists already. schema: properties: - _key: code @@ -2518,24 +3132,26 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_dark_theme_color - return_type: paginated_response(subtenant_dark_theme_color) - summary: Get dark theme branding colors. + self: true + type: account + return_type: account + summary: Create a new account. x_deprecation: null x_filter: {} - - _key: dark_theme_branding_images - description: 'Retrieve the metadata of all dark theme branding images. + - _key: dark_theme_branding_colors + description: 'Retrieve dark theme branding colors for an account. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -2554,7 +3170,7 @@ entities: fields: - _key: id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: id external_param: false in: path @@ -2563,16 +3179,16 @@ entities: required: true type: string foreign_key: - entity: subtenant_dark_theme_image + entity: subtenant_dark_theme_color group_id: Accounts method: get - mode: dark_theme_branding_images - notes: This lists the dark theme banding images of the subtenant account. - operation_id: getAllAccountDarkImageData + mode: dark_theme_branding_colors + notes: This lists the dark theme banding colors of the subtenant account. + operation_id: getAccountDarkColors pagination: true parameter_map: account_id: id - path: /v3/accounts/{account_id}/branding-images/dark + path: /v3/accounts/{account_id}/branding-colors/dark request_body: json request_content_type: application/json responses: @@ -2580,13 +3196,13 @@ entities: description: Successful operation. schema: foreign_key: - entity: dark_theme_image + entity: dark_theme_color group: Branding pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -2597,64 +3213,42 @@ entities: entity_fieldname: data items: foreign_key: - entity: dark_theme_image + entity: dark_theme_color group: Branding properties: + - _key: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' + type: string + x-nullable: true - _key: object - description: 'Entity name: always ''branding_image''' + description: 'Entity name: always ''branding_color''' enum: - - branding_image + - branding_color readOnly: true type: string - _key: reference _override: true - description: Name of the image. + description: Color name. enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color is_primary_key: true type: string - - _key: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true - type: string - _key: updated_at description: Last update time in UTC. example: '2018-02-14T15:24:14Z' @@ -2853,23 +3447,25 @@ entities: return_info: custom: false self: false - type: subtenant_dark_theme_image - return_type: paginated_response(subtenant_dark_theme_image) - summary: Get metadata of all dark theme images. + type: subtenant_dark_theme_color + return_type: paginated_response(subtenant_dark_theme_color) + summary: Get dark theme branding colors. x_deprecation: null x_filter: {} - - _key: light_theme_branding_colors - description: 'Retrieve light theme branding colors for an account. + - _key: dark_theme_branding_images + description: 'Retrieve the metadata of all dark theme branding images. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -2888,7 +3484,7 @@ entities: fields: - _key: id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: id external_param: false in: path @@ -2897,16 +3493,16 @@ entities: required: true type: string foreign_key: - entity: subtenant_light_theme_color + entity: subtenant_dark_theme_image group_id: Accounts method: get - mode: light_theme_branding_colors - notes: This lists the light theme banding colors of the subtenant account. - operation_id: getAccountLightColors + mode: dark_theme_branding_images + notes: This lists the dark theme banding images of the subtenant account. + operation_id: getAllAccountDarkImageData pagination: true parameter_map: account_id: id - path: /v3/accounts/{account_id}/branding-colors/light + path: /v3/accounts/{account_id}/branding-images/dark request_body: json request_content_type: application/json responses: @@ -2914,13 +3510,13 @@ entities: description: Successful operation. schema: foreign_key: - entity: dark_theme_color + entity: dark_theme_image group: Branding pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -2931,40 +3527,376 @@ entities: entity_fieldname: data items: foreign_key: - entity: dark_theme_color + entity: dark_theme_image group: Branding properties: - - _key: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - type: string - x-nullable: true - _key: object - description: 'Entity name: always ''branding_color''' + description: 'Entity name: always ''branding_image''' enum: - - branding_color + - branding_image readOnly: true type: string - _key: reference _override: true - description: Color name. + description: Name of the image. enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + is_primary_key: true + type: string + - _key: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return, or equal to `total_count`. + entity_fieldname: limit + example: 50 + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Account not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: subtenant_dark_theme_image + return_type: paginated_response(subtenant_dark_theme_image) + summary: Get metadata of all dark theme images. + x_deprecation: null + x_filter: {} + - _key: light_theme_branding_colors + description: 'Retrieve light theme branding colors for an account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - limit + - after + - order + - total_count + - has_more + - data + field_renames: [] + fields: + - _key: id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + foreign_key: + entity: subtenant_light_theme_color + group_id: Accounts + method: get + mode: light_theme_branding_colors + notes: This lists the light theme banding colors of the subtenant account. + operation_id: getAccountLightColors + pagination: true + parameter_map: + account_id: id + path: /v3/accounts/{account_id}/branding-colors/light + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: dark_theme_color + group: Branding + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + foreign_key: + entity: dark_theme_color + group: Branding + properties: + - _key: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' + type: string + x-nullable: true + - _key: object + description: 'Entity name: always ''branding_color''' + enum: + - branding_color + readOnly: true + type: string + - _key: reference + _override: true + description: Color name. + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color is_primary_key: true type: string - _key: updated_at @@ -3173,6 +4105,8 @@ entities: - _key: light_theme_branding_images description: 'Retrieve the metadata of all light theme branding images. + Note: This endpoint is restricted to administrators. + **Example:** @@ -3181,7 +4115,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -3200,7 +4134,7 @@ entities: fields: - _key: id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: id external_param: false in: path @@ -3232,7 +4166,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -3505,9 +4439,11 @@ entities: x_deprecation: null x_filter: {} - _key: list - description: 'Returns an array of account objects, optionally filtered by status + description: 'Retrieve an array of tenant accounts, optionally filtered by status and tier level. + Note: This endpoint is restricted to administrators. + **Example:** @@ -3515,7 +4451,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -3538,7 +4474,7 @@ entities: fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -3561,7 +4497,7 @@ entities: - _key: include api_fieldname: include description: 'Comma-separated additional data to return. Currently supported: - limits, policies, sub_accounts.' + limits, policies, sub_accounts, history.' entity_fieldname: include external_param: true in: query @@ -3632,7 +4568,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -3656,53 +4592,43 @@ entities: maxLength: 100 type: string x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present only - in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - _key: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city description: The city part of the postal address. example: Cambridge @@ -3710,7 +4636,7 @@ entities: type: string x-nullable: true - _key: company - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string @@ -3749,7 +4675,7 @@ entities: type: string x-nullable: true - _key: display_name - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -3794,11 +4720,94 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status description: The enforcement status of multi-factor authentication, @@ -4008,53 +5017,43 @@ entities: maxLength: 100 type: string x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this - account. Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present - only in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - _key: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The + aliases must be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by + the root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city description: The city part of the postal address. example: Cambridge @@ -4062,7 +5061,7 @@ entities: type: string x-nullable: true - _key: company - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string @@ -4101,7 +5100,7 @@ entities: type: string x-nullable: true - _key: display_name - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -4146,11 +5145,94 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status description: The enforcement status of multi-factor authentication, @@ -4361,6 +5443,23 @@ entities: for the future.' example: '1' type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, + `1`: commercial account, `2`: partner tier. Other values are + reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: updated_at description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' @@ -4393,6 +5492,23 @@ entities: account, `2`: partner tier. Other values are reserved for the future.' example: '1' type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: updated_at description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' @@ -4573,7 +5689,7 @@ entities: tier: - eq - _key: me - description: 'Retrieve detailed information about the account. + description: 'Retrieve information about the account. **Example:** @@ -4583,7 +5699,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/me?include=policies \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -4628,13 +5744,11 @@ entities: - customer_number - parent_account - expiration - - admin_id - - admin_name - - admin_email - - admin_key - - admin_password - - admin_full_name + - limitations - password_recovery_expiration + - business_model + - business_model_history + - tier_history field_renames: [] fields: - _key: include @@ -4692,67 +5806,49 @@ entities: maxLength: 100 type: string x-nullable: true - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - entity_fieldname: admin_email - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - api_fieldname: admin_full_name - description: The full name of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_full_name - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - api_fieldname: admin_id - description: The ID of the admin user created for this account. - entity_fieldname: admin_id - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - api_fieldname: admin_key - description: The admin API key created for this account. Present only in - the response for account creation. - entity_fieldname: admin_key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - api_fieldname: admin_name - description: The username of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_name - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - api_fieldname: admin_password - description: The password of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_password - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - _key: aliases api_fieldname: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. entity_fieldname: aliases items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin + only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + api_fieldname: business_model_history + description: Business model history for this account. + entity_fieldname: business_model_history + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city api_fieldname: city description: The city part of the postal address. @@ -4763,7 +5859,7 @@ entities: x-nullable: true - _key: company api_fieldname: company - description: The name of the company. + description: The name of the company used in billing. entity_fieldname: company example: ARM Holdings Plc maxLength: 100 @@ -4816,7 +5912,7 @@ entities: x-nullable: true - _key: display_name api_fieldname: display_name - description: The display name for the account. + description: The display name for the tenant account. entity_fieldname: display_name example: ARM maxLength: 100 @@ -4875,13 +5971,98 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + api_fieldname: limitations + description: List of account limitation objects. + entity_fieldname: limitations + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation is + inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string api_fieldname: limits - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' entity_fieldname: limits type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status api_fieldname: mfa_status @@ -5122,53 +6303,43 @@ entities: maxLength: 100 type: string x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present only - in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - _key: aliases - description: An array of aliases. + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. items: pattern: '[\w\-._]{8,100}' type: string maxItems: 10 type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: city description: The city part of the postal address. example: Cambridge @@ -5176,7 +6347,7 @@ entities: type: string x-nullable: true - _key: company - description: The name of the company. + description: The name of the company used in billing. example: ARM Holdings Plc maxLength: 100 type: string @@ -5215,7 +6386,7 @@ entities: type: string x-nullable: true - _key: display_name - description: The display name for the account. + description: The display name for the tenant account. example: ARM maxLength: 100 type: string @@ -5260,11 +6431,94 @@ entities: minimum: 1 type: integer x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array - _key: limits additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'DEPRECATED: Replaced by the limitations parameter.' type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' x-nullable: true - _key: mfa_status description: The enforcement status of multi-factor authentication, @@ -5473,107 +6727,9636 @@ entities: account, `2`: partner tier. Other values are reserved for the future.' example: '1' type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + description: Time when upgraded to commercial account in UTC format + RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + type: array + x-nullable: true + - _key: template_id + api_fieldname: template_id + description: Account template ID. + entity_fieldname: template_id + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + api_fieldname: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + entity_fieldname: tier + example: '1' + type: string + - _key: tier_history + api_fieldname: tier_history + description: Tier history for this account. + entity_fieldname: tier_history + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + api_fieldname: upgraded_at + description: Time when upgraded to commercial account in UTC format RFC3339. + entity_fieldname: upgraded_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: account + return_type: account + summary: Get account information. + x_deprecation: null + x_filter: {} + - _key: read + description: 'Retrieve detailed information about an account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - created_at + - updated_at + - parent_id + - display_name + - company + - country + - address_line1 + - address_line2 + - city + - state + - postal_code + - contact + - email + - phone_number + - aliases + - tier + - status + - upgraded_at + - limits + - policies + - template_id + - reason + - end_market + - idle_timeout + - password_policy + - reference_note + - custom_fields + - mfa_status + - notification_emails + - sales_contact + - expiration_warning_threshold + - contract_number + - customer_number + - parent_account + - expiration + - limitations + - password_recovery_expiration + - business_model + - business_model_history + - tier_history + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: Account ID. + entity_fieldname: id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + limits, policies, sub_accounts, history.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: properties + api_fieldname: properties + description: Property name to return from account-specific properties. + entity_fieldname: properties + external_param: true + in: query + name: properties + parameter_fieldname: properties + required: false + type: string + group_id: Accounts + method: get + mode: read + operation_id: getAccountInfo + pagination: false + parameter_map: + account_id: id + path: /v3/accounts/{account_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: Represents an account in requests and responses. + properties: + - _key: address_line1 + api_fieldname: address_line1 + description: Postal address line 1. + entity_fieldname: address_line1 + example: 110 Fulbourn Rd + maxLength: 100 + type: string + x-nullable: true + - _key: address_line2 + api_fieldname: address_line2 + description: Postal address line 2. + entity_fieldname: address_line2 + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: aliases + api_fieldname: aliases + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. + entity_fieldname: aliases + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin + only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + api_fieldname: business_model_history + description: Business model history for this account. + entity_fieldname: business_model_history + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: city + api_fieldname: city + description: The city part of the postal address. + entity_fieldname: city + example: Cambridge + maxLength: 100 + type: string + x-nullable: true + - _key: company + api_fieldname: company + description: The name of the company used in billing. + entity_fieldname: company + example: ARM Holdings Plc + maxLength: 100 + type: string + x-nullable: true + - _key: contact + api_fieldname: contact + description: The name of the contact person for this account. + entity_fieldname: contact + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + - _key: contract_number + api_fieldname: contract_number + description: Contract number of the customer. + entity_fieldname: contract_number + example: 1NX25_0001 + type: string + x-nullable: true + - _key: country + api_fieldname: country + description: The country part of the postal address. + entity_fieldname: country + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: custom_fields + additionalProperties: + type: string + api_fieldname: custom_fields + description: Account's custom properties as key-value pairs. + entity_fieldname: custom_fields + type: object + x-nullable: true + - _key: customer_number + api_fieldname: customer_number + description: Customer number of the customer. + entity_fieldname: customer_number + example: 1NC25_0001 + type: string + x-nullable: true + - _key: display_name + api_fieldname: display_name + description: The display name for the tenant account. + entity_fieldname: display_name + example: ARM + maxLength: 100 + type: string + x-nullable: true + - _key: email + api_fieldname: email + description: The company email address for this account. + entity_fieldname: email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: end_market + api_fieldname: end_market + description: Account end market. + entity_fieldname: end_market + example: IT + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: expiration + api_fieldname: expiration + description: Expiration time of the account, as UTC time RFC3339. + entity_fieldname: expiration + format: date-time + type: string + x-nullable: true + - _key: expiration_warning_threshold + api_fieldname: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration a + notification email is sent. + entity_fieldname: expiration_warning_threshold + example: '180' + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + - _key: id + api_fieldname: id + description: Account ID. + entity_fieldname: id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: idle_timeout + api_fieldname: idle_timeout + description: The reference token expiration time, in minutes, for this account. + entity_fieldname: idle_timeout + example: '30' + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + - _key: limitations + api_fieldname: limitations + description: List of account limitation objects. + entity_fieldname: limitations + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation is + inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer - _key: updated_at description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' format: date-time type: string - - _key: upgraded_at - description: Time when upgraded to commercial account in UTC format - RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + type: object + type: array + - _key: limits + additionalProperties: + type: string + api_fieldname: limits + description: 'DEPRECATED: Replaced by the limitations parameter.' + entity_fieldname: limits + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true + - _key: mfa_status + api_fieldname: mfa_status + description: The enforcement status of multi-factor authentication, either + `enforced` or `optional`. + entity_fieldname: mfa_status + enum: + - enforced + - optional + type: string + x-nullable: true + - _key: notification_emails + api_fieldname: notification_emails + description: A list of notification email addresses. + entity_fieldname: notification_emails + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always `account`.' + entity_fieldname: object + enum: + - account + type: string + - _key: parent_account + api_fieldname: parent_account + description: Represents parent account contact details in responses. + entity_fieldname: parent_account + foreign_key: + entity: parent_account + group: Accounts + properties: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact person + of the parent account. + entity_fieldname: admin_email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person of the + parent account. + entity_fieldname: admin_name + example: J. Doe + maxLength: 100 + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + entity_fieldname: id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + type: object + x-nullable: true + - _key: parent_id + api_fieldname: parent_id + description: The ID of the parent account, if any. + entity_fieldname: parent_id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: password_policy + api_fieldname: password_policy + description: The password policy for this account. + entity_fieldname: password_policy + foreign_key: + entity: password_policy + group: Accounts + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: + - minimum_length + type: object + x-nullable: true + - _key: password_recovery_expiration + api_fieldname: password_recovery_expiration + description: Indicates for how many minutes a password recovery email is + valid. + entity_fieldname: password_recovery_expiration + format: int32 + maximum: 45 + minimum: 1 + type: integer + - _key: phone_number + api_fieldname: phone_number + description: The phone number of a company representative. + entity_fieldname: phone_number + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: policies + api_fieldname: policies + description: List of policies if requested. + entity_fieldname: policies + items: + description: Represents a feature policy. Either the feature or the resource + must be specified. + foreign_key: + entity: policy + group: Accounts + properties: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents + all actions. + entity_fieldname: action + example: GET + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is allowed + or not. + entity_fieldname: allow + example: true + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + entity_fieldname: feature + example: update-campaigns + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited or overwritten + specifically. + entity_fieldname: inherited + example: false + readOnly: true + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited from. + entity_fieldname: inherited_from + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited from. + entity_fieldname: inherited_type + enum: + - account + - template + - tier_template + example: account + readOnly: true + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + entity_fieldname: resource + example: /v3/update-campaign + type: string + type: object + type: array + x-nullable: true + - _key: postal_code + api_fieldname: postal_code + description: The postal code part of the postal address. + entity_fieldname: postal_code + example: CB1 9NJ + maxLength: 100 + type: string + x-nullable: true + - _key: reason + api_fieldname: reason + description: A note with the reason for account status update. + entity_fieldname: reason + example: Subscription paid. + type: string + x-nullable: true + - _key: reference_note + api_fieldname: reference_note + description: A reference note for updating the status of the account. + entity_fieldname: reference_note + example: ARM-INT-0001 + type: string + x-nullable: true + - _key: sales_contact + api_fieldname: sales_contact + description: Email address of the sales contact. + entity_fieldname: sales_contact + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: state + api_fieldname: state + description: The state part of the postal address. + entity_fieldname: state + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: status + api_fieldname: status + description: The status of the account. + entity_fieldname: status + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + type: string + - _key: sub_accounts + api_fieldname: sub_accounts + description: List of sub accounts. Not available for developer users. + entity_fieldname: sub_accounts + items: + description: Represents an account in requests and responses. + properties: + - _key: address_line1 + description: Postal address line 1. + example: 110 Fulbourn Rd + maxLength: 100 + type: string + x-nullable: true + - _key: address_line2 + description: Postal address line 2. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: aliases + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: city + description: The city part of the postal address. + example: Cambridge + maxLength: 100 + type: string + x-nullable: true + - _key: company + description: The name of the company used in billing. + example: ARM Holdings Plc + maxLength: 100 + type: string + x-nullable: true + - _key: contact + description: The name of the contact person for this account. + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + - _key: contract_number + description: Contract number of the customer. + example: 1NX25_0001 + type: string + x-nullable: true + - _key: country + description: The country part of the postal address. + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: custom_fields + additionalProperties: + type: string + description: Account's custom properties as key-value pairs. + type: object + x-nullable: true + - _key: customer_number + description: Customer number of the customer. + example: 1NC25_0001 + type: string + x-nullable: true + - _key: display_name + description: The display name for the tenant account. + example: ARM + maxLength: 100 + type: string + x-nullable: true + - _key: email + description: The company email address for this account. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: end_market + description: Account end market. + example: IT + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: expiration + description: Expiration time of the account, as UTC time RFC3339. + format: date-time + type: string + x-nullable: true + - _key: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration + a notification email is sent. + example: '180' + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + - _key: id + description: Account ID. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: idle_timeout + description: The reference token expiration time, in minutes, for this + account. + example: '30' + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: limits + additionalProperties: + type: string + description: 'DEPRECATED: Replaced by the limitations parameter.' + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true + - _key: mfa_status + description: The enforcement status of multi-factor authentication, + either `enforced` or `optional`. + enum: + - enforced + - optional + type: string + x-nullable: true + - _key: notification_emails + description: A list of notification email addresses. + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + - _key: object + description: 'Entity name: always `account`.' + enum: + - account + type: string + - _key: parent_account + description: Represents parent account contact details in responses. + foreign_key: + entity: parent_account + group: Accounts + properties: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact + person of the parent account. + entity_fieldname: admin_email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person + of the parent account. + entity_fieldname: admin_name + example: J. Doe + maxLength: 100 + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + entity_fieldname: id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + type: object + x-nullable: true + - _key: parent_id + description: The ID of the parent account, if any. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: password_policy + description: The password policy for this account. + foreign_key: + entity: password_policy + group: Accounts + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: + - minimum_length + type: object + x-nullable: true + - _key: password_recovery_expiration + description: Indicates for how many minutes a password recovery email + is valid. + format: int32 + maximum: 45 + minimum: 1 + type: integer + - _key: phone_number + description: The phone number of a company representative. + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: policies + description: List of policies if requested. + items: + description: Represents a feature policy. Either the feature or the + resource must be specified. + foreign_key: + entity: policy + group: Accounts + properties: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents + all actions. + entity_fieldname: action + example: GET + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is allowed + or not. + entity_fieldname: allow + example: true + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + entity_fieldname: feature + example: update-campaigns + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited or + overwritten specifically. + entity_fieldname: inherited + example: false + readOnly: true + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited from. + entity_fieldname: inherited_from + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited + from. + entity_fieldname: inherited_type + enum: + - account + - template + - tier_template + example: account + readOnly: true + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + entity_fieldname: resource + example: /v3/update-campaign + type: string + type: object + type: array + x-nullable: true + - _key: postal_code + description: The postal code part of the postal address. + example: CB1 9NJ + maxLength: 100 + type: string + x-nullable: true + - _key: reason + description: A note with the reason for account status update. + example: Subscription paid. + type: string + x-nullable: true + - _key: reference_note + description: A reference note for updating the status of the account. + example: ARM-INT-0001 + type: string + x-nullable: true + - _key: sales_contact + description: Email address of the sales contact. + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: state + description: The state part of the postal address. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: status + description: The status of the account. + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + type: string + - _key: sub_accounts + description: List of sub accounts. Not available for developer users. + items: [] + type: array + x-nullable: true + - _key: template_id + description: Account template ID. + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + description: Time when upgraded to commercial account in UTC format + RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + type: array + x-nullable: true + - _key: template_id + api_fieldname: template_id + description: Account template ID. + entity_fieldname: template_id + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + api_fieldname: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + entity_fieldname: tier + example: '1' + type: string + - _key: tier_history + api_fieldname: tier_history + description: Tier history for this account. + entity_fieldname: tier_history + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + api_fieldname: upgraded_at + description: Time when upgraded to commercial account in UTC format RFC3339. + entity_fieldname: upgraded_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Account with the given ID not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: account + return_type: account + summary: Get account information. + x_deprecation: null + x_filter: {} + - _key: trusted_certificates + description: 'Retrieve an array of trusted certificates. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - total_count + - has_more + - data + - name__eq + - service__eq + - expire__eq + - device_execution_mode__eq + - device_execution_mode__neq + - owner__eq + - enrollment_mode__eq + - status__eq + - issuer__like + - subject__like + - certificate_fingerprint__eq + - valid__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: id + api_fieldname: account_id + description: Account ID. + entity_fieldname: id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: account_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: subtenant_trusted_certificate + group_id: Accounts + method: get + mode: trusted_certificates + notes: This lists the trusted certificates of the subtenant account. + operation_id: getAllAccountCertificates + pagination: true + parameter_map: + account_id: id + path: /v3/accounts/{account_id}/trusted-certificates + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: trusted_certificate + group: Security + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + description: Represents a trusted certificate in responses. + foreign_key: + entity: trusted_certificate + group: Security + properties: + - _key: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: certificate + description: X509.v3 trusted certificate in PEM format. + example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' + type: string + - _key: certificate_fingerprint + description: A SHA-256 fingerprint of the certificate. + example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 + type: string + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Human readable description of this certificate. + example: Certificate created by me. + maxLength: 500 + type: string + x-nullable: true + - _key: device_execution_mode + description: Device execution mode where 1 means a developer certificate. + example: 1 + format: int32 + type: integer + - _key: enrollment_mode + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' + example: false + type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: issuer + description: Issuer of the certificate. + example: CN=issuer + type: string + - _key: name + description: Certificate name. + example: My certificate + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always ''trusted-cert''' + enum: + - trusted-cert + type: string + - _key: owner_id + description: The ID of the owner. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: service + description: Service name where the certificate is used. + enum: + - lwm2m + - bootstrap + type: string + - _key: status + description: Status of the certificate. + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: subject + description: Subject of the certificate. + example: CN=subject + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: valid + description: This read-only flag indicates whether the certificate is + valid or not. + example: true + readOnly: true + type: boolean + - _key: validity + description: Expiration time in UTC formatted as RFC3339. + example: '2038-02-14T15:24:14Z' + format: date-time + type: string + required: + - account_id + - certificate + - certificate_fingerprint + - etag + - id + - issuer + - name + - object + - service + - subject + - validity + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: trusted_certificate_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden, only available for administrators of commercial accounts. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An account with the given ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: subtenant_trusted_certificate + return_type: paginated_response(subtenant_trusted_certificate) + summary: Get trusted certificates. + x_deprecation: null + x_filter: + certificate_fingerprint: + - eq + device_execution_mode: + - eq + - neq + enrollment_mode: + - eq + expire: + - eq + issuer: + - like + name: + - eq + owner: + - eq + service: + - eq + status: + - eq + subject: + - like + valid: + - eq + - _key: update + additional_operations: + - notes: After retrieving the resource using the `me` method, it can modified + using using this SDK method. + operation_id: updateMyAccount + description: 'Update an account. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"phone_number": "12345678"}'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - created_at + - updated_at + - parent_id + - tier + - status + - upgraded_at + - limits + - policies + - template_id + - reason + - reference_note + - parent_account + - expiration + - limitations + - business_model_history + - tier_history + field_renames: [] + fields: + - _key: address_line1 + api_fieldname: address_line1 + description: Postal address line 1. + entity_fieldname: address_line1 + example: 110 Fulbourn Rd + in: body + maxLength: 100 + parameter_fieldname: address_line1 + required: false + type: string + x-nullable: true + - _key: address_line2 + api_fieldname: address_line2 + description: Postal address line 2. + entity_fieldname: address_line2 + example: ' ' + in: body + maxLength: 100 + parameter_fieldname: address_line2 + required: false + type: string + x-nullable: true + - _key: aliases + api_fieldname: aliases + description: An array of aliases for the tenant account ID. The aliases must + be globally unique. + entity_fieldname: aliases + in: body + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + parameter_fieldname: aliases + required: false + type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + enum_reference: account_business_model_enum + example: api_calls_1_business_model + in: body + parameter_fieldname: business_model + required: false + type: string + - _key: city + api_fieldname: city + description: The city part of the postal address. + entity_fieldname: city + example: Cambridge + in: body + maxLength: 100 + parameter_fieldname: city + required: false + type: string + x-nullable: true + - _key: company + api_fieldname: company + description: The name of the company used in billing. + entity_fieldname: company + example: ARM Holdings Plc + in: body + maxLength: 100 + parameter_fieldname: company + required: false + type: string + x-nullable: true + - _key: contact + api_fieldname: contact + description: The name of the contact person for this account. + entity_fieldname: contact + example: J. Doe + in: body + maxLength: 100 + parameter_fieldname: contact + required: false + type: string + x-nullable: true + - _key: contract_number + api_fieldname: contract_number + description: Contract number of the customer. + entity_fieldname: contract_number + example: 1NX25_0001 + in: body + parameter_fieldname: contract_number + required: false + type: string + x-nullable: true + - _key: country + api_fieldname: country + description: The country part of the postal address. + entity_fieldname: country + example: United Kingdom + in: body + maxLength: 100 + parameter_fieldname: country + required: false + type: string + x-nullable: true + - _key: custom_fields + additionalProperties: + type: string + api_fieldname: custom_fields + description: Account's custom properties as key-value pairs. + entity_fieldname: custom_fields + in: body + parameter_fieldname: custom_fields + required: false + type: object + x-nullable: true + - _key: customer_number + api_fieldname: customer_number + description: Customer number of the customer. + entity_fieldname: customer_number + example: 1NC25_0001 + in: body + parameter_fieldname: customer_number + required: false + type: string + x-nullable: true + - _key: display_name + api_fieldname: display_name + description: The display name for the tenant account. + entity_fieldname: display_name + example: ARM + in: body + maxLength: 100 + parameter_fieldname: display_name + required: false + type: string + x-nullable: true + - _key: email + api_fieldname: email + description: The company email address for this account. + entity_fieldname: email + example: info@arm.com + in: body + parameter_fieldname: email + pattern: ^(?=.{3,254}$).+\@.+ + required: false + type: string + x-nullable: true + - _key: end_market + api_fieldname: end_market + description: Account end market. + entity_fieldname: end_market + example: IT + in: body + parameter_fieldname: end_market + required: false + type: string + - _key: expiration_warning_threshold + api_fieldname: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration a notification + email is sent. + entity_fieldname: expiration_warning_threshold + example: '180' + in: body + maximum: 180 + minimum: 1 + parameter_fieldname: expiration_warning_threshold + required: false + type: integer + x-nullable: true + - _key: id + api_fieldname: id + description: Account ID. + entity_fieldname: id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: idle_timeout + api_fieldname: idle_timeout + description: The reference token expiration time, in minutes, for this account. + entity_fieldname: idle_timeout + example: '30' + in: body + maximum: 120 + minimum: 1 + parameter_fieldname: idle_timeout + required: false + type: integer + x-nullable: true + - _key: mfa_status + api_fieldname: mfa_status + description: The enforcement status of multi-factor authentication, either `enforced` + or `optional`. + entity_fieldname: mfa_status + enum: + - enforced + - optional + enum_reference: account_mfa_status_enum + in: body + parameter_fieldname: mfa_status + required: false + type: string + x-nullable: true + - _key: notification_emails + api_fieldname: notification_emails + description: A list of notification email addresses. + entity_fieldname: notification_emails + in: body + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + parameter_fieldname: notification_emails + required: false + type: array + x-nullable: true + - _key: password_policy + api_fieldname: password_policy + description: The password policy for this account. + entity_fieldname: password_policy + foreign_key: + entity: password_policy + group: Accounts + in: body + parameter_fieldname: password_policy + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: false + type: object + x-nullable: true + - _key: password_recovery_expiration + api_fieldname: password_recovery_expiration + description: Indicates for how many minutes a password recovery email is valid. + entity_fieldname: password_recovery_expiration + format: int32 + in: body + maximum: 45 + minimum: 1 + parameter_fieldname: password_recovery_expiration + required: false + type: integer + - _key: phone_number + api_fieldname: phone_number + description: The phone number of a company representative. + entity_fieldname: phone_number + example: +44 (1223) 400 400 + in: body + maxLength: 100 + parameter_fieldname: phone_number + required: false + type: string + x-nullable: true + - _key: postal_code + api_fieldname: postal_code + description: The postal code part of the postal address. + entity_fieldname: postal_code + example: CB1 9NJ + in: body + maxLength: 100 + parameter_fieldname: postal_code + required: false + type: string + x-nullable: true + - _key: sales_contact + api_fieldname: sales_contact + description: Email address of the sales contact. + entity_fieldname: sales_contact + example: sales@arm.com + in: body + parameter_fieldname: sales_contact + pattern: ^(?=.{3,254}$).+\@.+ + required: false + type: string + x-nullable: true + - _key: state + api_fieldname: state + description: The state part of the postal address. + entity_fieldname: state + example: ' ' + in: body + maxLength: 100 + parameter_fieldname: state + required: false + type: string + x-nullable: true + group_id: Accounts + method: put + mode: update + operation_id: updateAccount + pagination: false + parameter_map: + account_id: id + path: /v3/accounts/{account_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: Represents an account in requests and responses. + properties: + - _key: address_line1 + api_fieldname: address_line1 + description: Postal address line 1. + entity_fieldname: address_line1 + example: 110 Fulbourn Rd + maxLength: 100 + type: string + x-nullable: true + - _key: address_line2 + api_fieldname: address_line2 + description: Postal address line 2. + entity_fieldname: address_line2 + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: aliases + api_fieldname: aliases + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. + entity_fieldname: aliases + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + - _key: business_model + api_fieldname: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root admin + only. + entity_fieldname: business_model + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + api_fieldname: business_model_history + description: Business model history for this account. + entity_fieldname: business_model_history + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: city + api_fieldname: city + description: The city part of the postal address. + entity_fieldname: city + example: Cambridge + maxLength: 100 + type: string + x-nullable: true + - _key: company + api_fieldname: company + description: The name of the company used in billing. + entity_fieldname: company + example: ARM Holdings Plc + maxLength: 100 + type: string + x-nullable: true + - _key: contact + api_fieldname: contact + description: The name of the contact person for this account. + entity_fieldname: contact + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + - _key: contract_number + api_fieldname: contract_number + description: Contract number of the customer. + entity_fieldname: contract_number + example: 1NX25_0001 + type: string + x-nullable: true + - _key: country + api_fieldname: country + description: The country part of the postal address. + entity_fieldname: country + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: custom_fields + additionalProperties: + type: string + api_fieldname: custom_fields + description: Account's custom properties as key-value pairs. + entity_fieldname: custom_fields + type: object + x-nullable: true + - _key: customer_number + api_fieldname: customer_number + description: Customer number of the customer. + entity_fieldname: customer_number + example: 1NC25_0001 + type: string + x-nullable: true + - _key: display_name + api_fieldname: display_name + description: The display name for the tenant account. + entity_fieldname: display_name + example: ARM + maxLength: 100 + type: string + x-nullable: true + - _key: email + api_fieldname: email + description: The company email address for this account. + entity_fieldname: email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: end_market + api_fieldname: end_market + description: Account end market. + entity_fieldname: end_market + example: IT + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: expiration + api_fieldname: expiration + description: Expiration time of the account, as UTC time RFC3339. + entity_fieldname: expiration + format: date-time + type: string + x-nullable: true + - _key: expiration_warning_threshold + api_fieldname: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration a + notification email is sent. + entity_fieldname: expiration_warning_threshold + example: '180' + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + - _key: id + api_fieldname: id + description: Account ID. + entity_fieldname: id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: idle_timeout + api_fieldname: idle_timeout + description: The reference token expiration time, in minutes, for this account. + entity_fieldname: idle_timeout + example: '30' + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + - _key: limitations + api_fieldname: limitations + description: List of account limitation objects. + entity_fieldname: limitations + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation is + inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: limits + additionalProperties: + type: string + api_fieldname: limits + description: 'DEPRECATED: Replaced by the limitations parameter.' + entity_fieldname: limits + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true + - _key: mfa_status + api_fieldname: mfa_status + description: The enforcement status of multi-factor authentication, either + `enforced` or `optional`. + entity_fieldname: mfa_status + enum: + - enforced + - optional + type: string + x-nullable: true + - _key: notification_emails + api_fieldname: notification_emails + description: A list of notification email addresses. + entity_fieldname: notification_emails + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always `account`.' + entity_fieldname: object + enum: + - account + type: string + - _key: parent_account + api_fieldname: parent_account + description: Represents parent account contact details in responses. + entity_fieldname: parent_account + foreign_key: + entity: parent_account + group: Accounts + properties: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact person + of the parent account. + entity_fieldname: admin_email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person of the + parent account. + entity_fieldname: admin_name + example: J. Doe + maxLength: 100 + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + entity_fieldname: id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + type: object + x-nullable: true + - _key: parent_id + api_fieldname: parent_id + description: The ID of the parent account, if any. + entity_fieldname: parent_id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: password_policy + api_fieldname: password_policy + description: The password policy for this account. + entity_fieldname: password_policy + foreign_key: + entity: password_policy + group: Accounts + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: + - minimum_length + type: object + x-nullable: true + - _key: password_recovery_expiration + api_fieldname: password_recovery_expiration + description: Indicates for how many minutes a password recovery email is + valid. + entity_fieldname: password_recovery_expiration + format: int32 + maximum: 45 + minimum: 1 + type: integer + - _key: phone_number + api_fieldname: phone_number + description: The phone number of a company representative. + entity_fieldname: phone_number + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: policies + api_fieldname: policies + description: List of policies if requested. + entity_fieldname: policies + items: + description: Represents a feature policy. Either the feature or the resource + must be specified. + foreign_key: + entity: policy + group: Accounts + properties: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents + all actions. + entity_fieldname: action + example: GET + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is allowed + or not. + entity_fieldname: allow + example: true + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + entity_fieldname: feature + example: update-campaigns + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited or overwritten + specifically. + entity_fieldname: inherited + example: false + readOnly: true + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited from. + entity_fieldname: inherited_from + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited from. + entity_fieldname: inherited_type + enum: + - account + - template + - tier_template + example: account + readOnly: true + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + entity_fieldname: resource + example: /v3/update-campaign + type: string + type: object + type: array + x-nullable: true + - _key: postal_code + api_fieldname: postal_code + description: The postal code part of the postal address. + entity_fieldname: postal_code + example: CB1 9NJ + maxLength: 100 + type: string + x-nullable: true + - _key: reason + api_fieldname: reason + description: A note with the reason for account status update. + entity_fieldname: reason + example: Subscription paid. + type: string + x-nullable: true + - _key: reference_note + api_fieldname: reference_note + description: A reference note for updating the status of the account. + entity_fieldname: reference_note + example: ARM-INT-0001 + type: string + x-nullable: true + - _key: sales_contact + api_fieldname: sales_contact + description: Email address of the sales contact. + entity_fieldname: sales_contact + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: state + api_fieldname: state + description: The state part of the postal address. + entity_fieldname: state + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: status + api_fieldname: status + description: The status of the account. + entity_fieldname: status + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + type: string + - _key: sub_accounts + api_fieldname: sub_accounts + description: List of sub accounts. Not available for developer users. + entity_fieldname: sub_accounts + items: + description: Represents an account in requests and responses. + properties: + - _key: address_line1 + description: Postal address line 1. + example: 110 Fulbourn Rd + maxLength: 100 + type: string + x-nullable: true + - _key: address_line2 + description: Postal address line 2. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: aliases + description: An array of aliases for the tenant account ID. The aliases + must be globally unique. + items: + pattern: '[\w\-._]{8,100}' + type: string + maxItems: 10 + type: array + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the root + admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: business_model_history + description: Business model history for this account. + items: + properties: + - _key: business_model + default: active_device_business_model + description: Business model for this account. Manageable by the + root admin only. + enum: + - active_device_business_model + - api_calls_1_business_model + example: api_calls_1_business_model + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: city + description: The city part of the postal address. + example: Cambridge + maxLength: 100 + type: string + x-nullable: true + - _key: company + description: The name of the company used in billing. + example: ARM Holdings Plc + maxLength: 100 + type: string + x-nullable: true + - _key: contact + description: The name of the contact person for this account. + example: J. Doe + maxLength: 100 + type: string + x-nullable: true + - _key: contract_number + description: Contract number of the customer. + example: 1NX25_0001 + type: string + x-nullable: true + - _key: country + description: The country part of the postal address. + example: United Kingdom + maxLength: 100 + type: string + x-nullable: true + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: custom_fields + additionalProperties: + type: string + description: Account's custom properties as key-value pairs. + type: object + x-nullable: true + - _key: customer_number + description: Customer number of the customer. + example: 1NC25_0001 + type: string + x-nullable: true + - _key: display_name + description: The display name for the tenant account. + example: ARM + maxLength: 100 + type: string + x-nullable: true + - _key: email + description: The company email address for this account. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: end_market + description: Account end market. + example: IT + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: expiration + description: Expiration time of the account, as UTC time RFC3339. + format: date-time + type: string + x-nullable: true + - _key: expiration_warning_threshold + description: Indicates how many days (1-180) before account expiration + a notification email is sent. + example: '180' + maximum: 180 + minimum: 1 + type: integer + x-nullable: true + - _key: id + description: Account ID. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: idle_timeout + description: The reference token expiration time, in minutes, for this + account. + example: '30' + maximum: 120 + minimum: 1 + type: integer + x-nullable: true + - _key: limitations + description: List of account limitation objects. + items: + description: This object represents an account limitation. + properties: + - _key: billing_period + description: Billing period of the account limitation. + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description of the account limitation. + readOnly: true + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + type: string + - _key: inherited + description: Flag indicating whether this limitation is inherited. + readOnly: true + type: boolean + - _key: inherited_from + description: Indicates where this limit is inherited from. + readOnly: true + type: string + - _key: inherited_type + description: Indicates the type of the entity where the limitation + is inherited from. + readOnly: true + type: string + - _key: limit + description: The value of the limit. + format: int32 + type: integer + - _key: name + description: Name of the account limitation. + type: string + - _key: object + description: 'Entity name: always ''limitation''' + enum: + - user + - api-key + - group + - account + - account_template + - trusted_cert + - list + - error + - agreement + - signed_agreement + - policy + - limitation + - identity_provider + - user_session + - user_invitation + - notification_entry + - branding_color + - branding_image + type: string + - _key: quota + description: Quota of the account limitation. + format: int32 + type: integer + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: limits + additionalProperties: + type: string + description: 'DEPRECATED: Replaced by the limitations parameter.' + type: object + x-deprecation: + comment: Replaced by the limitations parameter. + end_of_life_at: '2020-08-27T12:03:58+00:00' + issued_at: '2019-08-27T12:03:58+00:00' + x-nullable: true + - _key: mfa_status + description: The enforcement status of multi-factor authentication, + either `enforced` or `optional`. + enum: + - enforced + - optional + type: string + x-nullable: true + - _key: notification_emails + description: A list of notification email addresses. + items: + pattern: ^(?=.{3,254}$).+\@.+ + type: string + type: array + x-nullable: true + - _key: object + description: 'Entity name: always `account`.' + enum: + - account + type: string + - _key: parent_account + description: Represents parent account contact details in responses. + foreign_key: + entity: parent_account + group: Accounts + properties: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact + person of the parent account. + entity_fieldname: admin_email + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person + of the parent account. + entity_fieldname: admin_name + example: J. Doe + maxLength: 100 + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + entity_fieldname: id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + type: object + x-nullable: true + - _key: parent_id + description: The ID of the parent account, if any. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: password_policy + description: The password policy for this account. + foreign_key: + entity: password_policy + group: Accounts + properties: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + entity_fieldname: minimum_length + example: '8' + maximum: 512 + minimum: 8 + type: integer + required: + - minimum_length + type: object + x-nullable: true + - _key: password_recovery_expiration + description: Indicates for how many minutes a password recovery email + is valid. + format: int32 + maximum: 45 + minimum: 1 + type: integer + - _key: phone_number + description: The phone number of a company representative. + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: policies + description: List of policies if requested. + items: + description: Represents a feature policy. Either the feature or the + resource must be specified. + foreign_key: + entity: policy + group: Accounts + properties: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents + all actions. + entity_fieldname: action + example: GET + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is allowed + or not. + entity_fieldname: allow + example: true + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + entity_fieldname: feature + example: update-campaigns + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited or + overwritten specifically. + entity_fieldname: inherited + example: false + readOnly: true + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited from. + entity_fieldname: inherited_from + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited + from. + entity_fieldname: inherited_type + enum: + - account + - template + - tier_template + example: account + readOnly: true + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + entity_fieldname: resource + example: /v3/update-campaign + type: string + type: object + type: array + x-nullable: true + - _key: postal_code + description: The postal code part of the postal address. + example: CB1 9NJ + maxLength: 100 + type: string + x-nullable: true + - _key: reason + description: A note with the reason for account status update. + example: Subscription paid. + type: string + x-nullable: true + - _key: reference_note + description: A reference note for updating the status of the account. + example: ARM-INT-0001 + type: string + x-nullable: true + - _key: sales_contact + description: Email address of the sales contact. + example: sales@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + x-nullable: true + - _key: state + description: The state part of the postal address. + example: ' ' + maxLength: 100 + type: string + x-nullable: true + - _key: status + description: The status of the account. + enum: + - ENROLLING + - ACTIVE + - RESTRICTED + - SUSPENDED + example: ACTIVE + type: string + - _key: sub_accounts + description: List of sub accounts. Not available for developer users. + items: [] + type: array + x-nullable: true + - _key: template_id + description: Account template ID. + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: tier_history + description: Tier history for this account. + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: + commercial account, `2`: partner tier. Other values are reserved + for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + description: Time when upgraded to commercial account in UTC format + RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + type: array + x-nullable: true + - _key: template_id + api_fieldname: template_id + description: Account template ID. + entity_fieldname: template_id + example: 01619571e7160242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: tier + api_fieldname: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + entity_fieldname: tier + example: '1' + type: string + - _key: tier_history + api_fieldname: tier_history + description: Tier history for this account. + entity_fieldname: tier_history + items: + properties: + - _key: tier + description: 'The tier level of the account; `0`: free tier, `1`: commercial + account, `2`: partner tier. Other values are reserved for the future.' + example: '1' + type: string + - _key: updatedAt + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + type: object + type: array + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: upgraded_at + api_fieldname: upgraded_at + description: Time when upgraded to commercial account in UTC format RFC3339. + entity_fieldname: upgraded_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - end_market + - etag + - id + - object + - status + - tier + type: object + - _key: '400' + description: Error in input data format. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Account with the given ID not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '409' + description: Account with the specified new alias exists already. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: account + return_type: account + summary: Update attributes of an existing account. + x_deprecation: null + x_filter: {} + - _key: user_invitations + description: 'Retrieve an array of active user invitations. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - total_count + - has_more + - data + - login_profiles__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: id + api_fieldname: account_id + description: Account ID. + entity_fieldname: id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: account_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: subtenant_user_invitation + group_id: Accounts + method: get + mode: user_invitations + notes: This lists the user invitations of the subtenant account. + operation_id: getAllAccountInvitations + pagination: true + parameter_map: + account_id: id + path: /v3/accounts/{account_id}/user-invitations + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: user_invitation + group: Accounts + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + description: Represents an user invitation in responses. + foreign_key: + entity: user_invitation + group: Accounts + properties: + - _key: account_id + description: The ID of the account the user is invited to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: email + description: Email address of the invited user. + example: friend@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: expiration + description: Invitation expiration as UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: groups + description: A list of IDs of the groups the user is invited to. + items: + type: string + type: array + - _key: id + description: The ID of the invitation. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: login_profiles + description: A list of login profiles for the user. Specified as the + identity providers the user is associated with. + items: + description: Represents a user login profile in Device Management. + foreign_key: + entity: login_profile + group: Accounts + properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string + - _key: id + _override: true + api_fieldname: id + description: ID of the identity provider. + entity_fieldname: id + example: 01619571f3c00242ac12000600000000 + readOnly: false + type: string + - _key: name + _override: true + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + example: Pelion + readOnly: false + type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: login_profile_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + example: NATIVE + readOnly: true + type: string + required: + - id + type: object + type: array + x-nullable: true + - _key: object + description: 'Entity name: always ''user-invitation''' + enum: + - user-invitation + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_id + description: The ID of the invited user. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + required: + - account_id + - email + - etag + - id + - object + - user_id + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: user_invitation_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An account with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: subtenant_user_invitation + return_type: paginated_response(subtenant_user_invitation) + summary: Get user invitations. + x_deprecation: null + x_filter: + login_profiles: + - eq + - _key: users + description: 'Retrieve an array of users. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - sub_accounts + - total_count + - has_more + - data + - email__eq + - status__eq + - status__in + - status__nin + - login_profiles__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: id + api_fieldname: account_id + description: Account ID. + entity_fieldname: id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: account_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: subtenant_user + group_id: Accounts + method: get + mode: users + notes: This lists the users of the subtenant account. + operation_id: getAllAccountUsers + pagination: true + parameter_map: + account_id: id + path: /v3/accounts/{account_id}/users + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: user + group: Accounts + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + description: Represents a user in Device Management. + foreign_key: + entity: user + group: Accounts + properties: + - _key: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: active_sessions + description: List of active user sessions. + items: + description: Represents an active user session. + foreign_key: + entity: active_session + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The UUID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + entity_fieldname: ip_address + example: 127.0.0.1 + type: string + - _key: login_time + api_fieldname: login_time + description: The login time of the user. + entity_fieldname: login_time + example: '2018-02-14T17:52:07Z' + format: date-time + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''user-session''' + entity_fieldname: object + enum: + - user-session + type: string + - _key: reference_token + api_fieldname: reference_token + description: The reference token. + entity_fieldname: reference_token + example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk + type: string + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + entity_fieldname: user_agent + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + type: string + required: + - account_id + - ip_address + - login_time + - object + - reference_token + - user_agent + type: object + type: array + - _key: address + description: Address. + example: 110 Fulbourn Rd, Cambridge, United Kingdom + type: string + x-nullable: true + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + description: A timestamp of the user creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + type: integer + - _key: custom_fields + additionalProperties: + type: string + description: User's account-specific custom properties. The value is + a string. + type: object + x-nullable: true + - _key: email + description: The email address. + example: user@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: email_verified + description: A flag indicating whether the user's email address has + been verified or not. + example: true + type: boolean + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: full_name + description: The full name of the user. + example: User Doe + maxLength: 100 + type: string + x-nullable: true + - _key: groups + description: A list of IDs of the groups this user belongs to. + items: + type: string + type: array + - _key: id + description: The ID of the user. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_gtc_accepted + description: A flag indicating that the user has accepted General Terms + and Conditions. + example: true + type: boolean + - _key: is_marketing_accepted + description: A flag indicating that the user has consented to receive + marketing information. + example: true + type: boolean + - _key: is_totp_enabled + description: A flag indicating whether two-factor authentication (TOTP) + has been enabled. + example: true + type: boolean + - _key: last_login_time + description: A timestamp of the latest login of the user, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + - _key: login_history + description: Timestamps, succeedings, IP addresses and user agent information + of the last five logins of the user, with timestamps in RFC3339 format. + items: + description: Represents an entry in login history. + foreign_key: + entity: login_history + group: Accounts + properties: + - _key: date + api_fieldname: date + description: UTC time RFC3339 for this login attempt. + entity_fieldname: date + example: '2018-02-14T17:52:07Z' + format: date-time + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + entity_fieldname: ip_address + example: 127.0.0.1 + type: string + - _key: success + api_fieldname: success + description: Flag indicating whether login attempt was successful + or not. + entity_fieldname: success + example: true + type: boolean + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + entity_fieldname: user_agent + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + type: string + required: + - date + - ip_address + - success + - user_agent + type: object + maxItems: 5 + type: array + - _key: login_profiles + description: A list of login profiles for the user. Specified as the + identity providers the user is associated with. + items: + description: Represents a user login profile in Device Management. + foreign_key: + entity: login_profile + group: Accounts + properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string + - _key: id + _override: true + api_fieldname: id + description: ID of the identity provider. + entity_fieldname: id + example: 01619571f3c00242ac12000600000000 + readOnly: false + type: string + - _key: name + _override: true + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + example: Pelion + readOnly: false + type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: login_profile_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + example: NATIVE + readOnly: true + type: string + required: + - id + type: object + type: array + x-nullable: true + - _key: object + description: 'Entity name: always `user`.' + enum: + - user + type: string + - _key: password + description: The password when creating a new user. It will be generated + when not present in the request. + example: PZf9eEUH43DAPE9ULINFeuj + type: string + x-nullable: true + - _key: password_changed_time + description: A timestamp of the latest change of the user password, + in milliseconds. + example: 1518630727688 + format: int64 + type: integer + - _key: phone_number + description: Phone number. + example: +44 (1223) 400 400 + maxLength: 100 + type: string + x-nullable: true + - _key: status + description: The status of the user. ENROLLING state indicates that + the user is in the middle of the enrollment process. INVITED means + that the user has not accepted the invitation request. RESET means + that the password must be changed immediately. INACTIVE users are + locked out and not permitted to use the system. + enum: + - ENROLLING + - INVITED + - ACTIVE + - RESET + - INACTIVE + example: ACTIVE + type: string + - _key: totp_scratch_codes + description: A list of scratch codes for the two-factor authentication. + Visible only when 2FA is requested to be enabled or the codes regenerated. + items: + type: string + type: array + x-nullable: true + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: username + description: A username. + example: admin + pattern: '[\w\-,._@+=]{4,30}' + type: string + x-nullable: true + required: + - account_id + - email + - etag + - id + - object + - status + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: user_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An account with the given ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: subtenant_user + return_type: paginated_response(subtenant_user) + summary: Get users. + x_deprecation: null + x_filter: + email: + - eq + login_profiles: + - eq + status: + - eq + - in + - nin + primary_key_field: id + swagger_models: + - AccountCreationReq + - AccountCreationResp + - AccountInfo + - AccountInfoList + - AccountUpdateRootReq + - ApiKeyInfoRespList + - BrandingColorList + - BrandingImageList + - TrustedCertificateRespList + - UserInfoRespList + - UserInvitationRespList + tags: + - Account - profile + - Tenant accounts - accounts + - Tenant accounts - API keys + - Tenant accounts - users + - Tenant accounts - user invitations + - Tenant security and identity - certificates + - Tenant user interface configuration - colors + - Tenant user interface configuration - images +- _key: active_session + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The UUID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + readOnly: true + required: false + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + example: 127.0.0.1 + readOnly: true + required: false + type: string + - _key: login_time + api_fieldname: login_time + description: The login time of the user. + example: '2018-02-14T17:52:07Z' + format: date-time + readOnly: true + required: false + type: string + - _key: reference_token + api_fieldname: reference_token + description: The reference token. + example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk + readOnly: true + required: false + type: string + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/41.0.2227.1 Safari/537.36 + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - ActiveSession + tags: [] +- _key: api_key + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + readOnly: true + required: false + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + readOnly: true + required: false + type: integer + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + items: + type: string + readOnly: false + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: key + api_fieldname: key + description: The API key. + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + readOnly: true + required: false + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + example: 1518630727688 + format: int64 + readOnly: true + required: false + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + example: API key gorgon + maxLength: 100 + readOnly: false + required: true + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: false + required: false + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + enum: + - ACTIVE + - INACTIVE + enum_reference: api_key_status_enum + example: ACTIVE + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Accounts + methods: + - _key: create + description: 'Create a new API key. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d ''{"name": "MyKey1"}'' + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - id + - created_at + - updated_at + - key + - creation_time + - last_login_time + - account_id + field_renames: [] + fields: + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + in: body + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + required: false + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: &id001 + - ACTIVE + - INACTIVE + enum_reference: api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: post + mode: create + operation_id: createApiKey + pagination: false + parameter_map: + apikey_id: id + path: /v3/api-keys + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: New entity created. + schema: + description: Represents an API key in Device Management. + foreign_key: + entity: subtenant_api_key + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + items: + type: string + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''api-key''' + entity_fieldname: object + enum: + - api-key + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - key + - name + - object + type: object + - _key: '400' + description: Error in input data, for example, missing API key name. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: api_key + summary: Create a new API key. + x_deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: delete + description: 'Delete the API key. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: id + api_fieldname: apikey_id + description: The ID of the API key to delete. + entity_fieldname: id + external_param: false + in: path + name: apikey_id + parameter_fieldname: apikey_id + required: true + type: string + group_id: Accounts + method: delete + mode: delete + operation_id: deleteApiKey + pagination: false + parameter_map: + apikey_id: id + path: /v3/api-keys/{apikey_id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. Only the owner of the API key or an administrator can + delete an API key. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An API key with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: api_key + summary: Delete API key. + x_deprecation: + comment: This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: list + description: 'Retrieve an array of API keys, optionally filtered by the owner. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - total_count + - has_more + - data + - key__eq + - owner__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: api_key_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: api_key + group: Accounts + foreign_key_priority: self + group_id: Accounts + method: get + mode: list + operation_id: getAllApiKeys + pagination: true + parameter_map: + apikey_id: id + path: /v3/api-keys + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: api_key + group: Accounts + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + description: Represents an API key in Device Management. + foreign_key: + entity: api_key + group: Accounts + properties: + - _key: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + description: The timestamp of the API key creation in the storage, in + milliseconds. + example: 1518630727683 + format: int64 + type: integer + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: groups + description: A list of group IDs this API key belongs to. + items: + type: string + type: array + - _key: id + description: The ID of the API key. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: key + description: The API key. + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + - _key: name + description: The display name for the API key. + example: API key gorgon + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always ''api-key''' + enum: + - api-key + type: string + - _key: owner + description: The owner of this API key, who is the creator by default. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + description: The status of the API key. + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - key + - name + - object + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return, or equal to `total_count`. + entity_fieldname: limit + example: 50 + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: paginated_response(api_key) + summary: Get all API keys. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: + key: + - eq + owner: + - eq + - _key: me + description: 'Retrieve details of current API key. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - id + - created_at + - updated_at + - key + - name + - groups + - owner + - status + - creation_time + - last_login_time + - account_id + field_renames: [] + fields: [] + group_id: Accounts + method: get + mode: me + notes: This is provided by the SDK to avoid listing to retrieve the user's own + API Key. + operation_id: getMyApiKey + pagination: false + parameter_map: + apikey_id: id + path: /v3/api-keys/me + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: Represents an API key in Device Management. + foreign_key: + entity: subtenant_api_key + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + items: + type: string + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''api-key''' + entity_fieldname: object + enum: + - api-key + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - key + - name + - object + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: api_key + summary: Get current API key. + x_deprecation: + comment: This endpoint is deprecated. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: policy_groups + description: 'Retrieve an array of policy groups associated with an API key. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - total_count + - has_more + - data + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: id + api_fieldname: apikey_id + description: The ID of the API key. + entity_fieldname: id + external_param: false + in: path + name: apikey_id + parameter_fieldname: apikey_id + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: api_key_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: policy_group + group_id: Accounts + method: get + mode: policy_groups + operation_id: getGroupsOfApikey + pagination: true + parameter_map: + apikey_id: id + path: /v3/api-keys/{apikey_id}/groups + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: subtenant_policy_group + group: Accounts + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + description: This object contains basic information about groups. + foreign_key: + entity: subtenant_policy_group + group: Accounts + properties: + - _key: account_id + description: The ID of the account this group belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + description: The number of API keys in this group. + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: The ID of the group. + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: name + description: The name of the group. + example: Administrators + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always `group`.' + enum: + - group + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_count + description: The number of users in this group. + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: subtenant_user_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An API key with the given ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: policy_group + return_type: paginated_response(policy_group) + summary: Get policy groups of an API key. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/groups + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: read + description: 'Retrieve details of an API key. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - key + - name + - groups + - owner + - status + - creation_time + - last_login_time + - account_id + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + group_id: Accounts + method: get + mode: read + operation_id: getApiKey + pagination: false + parameter_map: + apikey_id: id + path: /v3/api-keys/{apikey_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: Represents an API key in Device Management. + foreign_key: + entity: subtenant_api_key + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + items: + type: string + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''api-key''' + entity_fieldname: object + enum: + - api-key + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - key + - name + - object + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An API key with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: api_key + summary: Get API key. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: update + additional_operations: + - notes: After retrieving the resource using the `me` method, it can modified + using using this SDK method. + operation_id: updateMyApiKey + description: 'Update API key details. + + + **Example:** + + `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestApiKey25"}'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - key + - creation_time + - last_login_time + - account_id + field_renames: [] + fields: + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + in: body + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + required: false + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: *id001 + enum_reference: api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: put + mode: update + operation_id: updateApiKey + pagination: false + parameter_map: + apikey_id: id + path: /v3/api-keys/{apikey_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: Represents an API key in Device Management. + foreign_key: + entity: subtenant_api_key + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + items: + type: string + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''api-key''' + entity_fieldname: object + enum: + - api-key + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - key + - name + - object + type: object + - _key: '400' + description: Error in input data, for example, invalid API key name. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. Only the owner of the API key or an administrator can + update an API key. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An API key with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: api_key + return_type: api_key + summary: Update API key details. + x_deprecation: + comment: This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + primary_key_field: id + swagger_models: + - ApiKeyInfoReq + - ApiKeyInfoResp + - ApiKeyInfoRespList + - ApiKeyUpdateReq + - GroupSummaryList + tags: + - Account - API keys +- _key: campaign_device_metadata + field_renames: + - _key: campaign_id + api_fieldname: campaign + fields: + - _key: campaign_id + api_fieldname: campaign + description: The device's campaign ID. + example: 015bf72fccda00000000000100100280 + readOnly: false + required: true + type: string + - _key: created_at + api_fieldname: created_at + description: The time the entity was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: deployment_state + api_fieldname: deployment_state + description: The state of the update campaign on the device. + enum: + - pending + - updated_connector_channel + - failed_connector_channel_update + - deployed + - manifestremoved + - deregistered + enum_reference: campaign_device_metadata_deployment_state_enum + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + description: Description. + example: a description + maxLength: 2000 + readOnly: true + required: false + type: string + - _key: device_id + api_fieldname: device_id + description: The device ID. + example: 015c2fec9bba0000000000010010036f + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: The metadata record ID. + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: mechanism + api_fieldname: mechanism + description: How the firmware is delivered (connector or direct). + example: connector + readOnly: true + required: false + type: string + - _key: mechanism_url + api_fieldname: mechanism_url + description: The Device Management Connect URL. + readOnly: true + required: false + type: string + - _key: name + api_fieldname: name + default: default_object_name + description: The record name. + maxLength: 128 + readOnly: true + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time the entity was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Device_Update + methods: + - _key: read + description: 'Get update campaign metadata for a specific device. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a89900000655cd94fa8/campaign-device-metadata/016e83ddc645000000000001001000f6 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - deployment_state + - description + - device_id + - mechanism + - mechanism_url + - name + field_renames: + - _key: campaign_id + api_fieldname: campaign + fields: + - _key: campaign_id + api_fieldname: campaign + description: The device's campaign ID. + entity_fieldname: campaign_id + example: 015bf72fccda00000000000100100280 + in: path + parameter_fieldname: campaign_id + required: true + type: string + - _key: id + api_fieldname: id + description: The metadata record ID. + entity_fieldname: id + example: 015c3029f6f7000000000001001000c3 + in: path + parameter_fieldname: campaign_device_metadata_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + group_id: Device_Update + method: get + mode: read + operation_id: Update_Campaign_Metadata_retrieve + pagination: false + parameter_map: + campaign_device_metadata_id: id + path: /v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Request successful. + schema: + foreign_key: + entity: campaign_device_metadata + group: Device_Update + properties: + - _key: campaign + api_fieldname: campaign + description: The device's campaign ID. + entity_fieldname: campaign_id + example: 015bf72fccda00000000000100100280 + type: string + - _key: created_at + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: deployment_state + api_fieldname: deployment_state + description: The state of the update campaign on the device. + entity_fieldname: deployment_state + enum: + - pending + - updated_connector_channel + - failed_connector_channel_update + - deployed + - manifestremoved + - deregistered + type: string + - _key: description + api_fieldname: description + description: Description. + entity_fieldname: description + example: a description + maxLength: 2000 + type: string + - _key: device_id + api_fieldname: device_id + description: The device ID. + entity_fieldname: device_id + example: 015c2fec9bba0000000000010010036f + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' + type: string + - _key: id + api_fieldname: id + description: The metadata record ID. + entity_fieldname: id + example: 015c3029f6f7000000000001001000c3 + pattern: '[A-Fa-f0-9]{32}' + type: string + - _key: mechanism + api_fieldname: mechanism + description: How the firmware is delivered (connector or direct). + entity_fieldname: mechanism + example: connector + type: string + - _key: mechanism_url + api_fieldname: mechanism_url + description: The Device Management Connect URL. + entity_fieldname: mechanism_url + type: string + - _key: name + api_fieldname: name + default: default_object_name + description: The record name. + entity_fieldname: name + maxLength: 128 + type: string + - _key: object + api_fieldname: object + description: 'The entity name: always ''update-campaign-device-metadata''.' + entity_fieldname: object + example: update-campaign-device-metadata + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: object + - _key: '401' + description: Unauthorized. + - _key: '404' + description: Not Found. + return_info: + custom: false + self: true + type: campaign_device_metadata + return_type: campaign_device_metadata + summary: Get a campaign device metadata + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - CampaignDeviceMetadata + tags: + - Device update - campaigns +- _key: campaign_statistics + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + example: 016e652be6710000000000010010013d + readOnly: false + required: true + type: string + - _key: count + api_fieldname: count + example: 10 + readOnly: true + required: false + type: integer + - _key: created_at + api_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: ID of the event type description. + enum: + - fail + - success + - info + - skipped + enum_reference: campaign_statistics_id_enum + example: fail + readOnly: false + required: true + type: string + - _key: summary_status + api_fieldname: summary_status + description: The event type description. + enum: + - FAIL + - SUCCESS + - INFO + - SKIPPED + enum_reference: campaign_statistics_summary_status_enum + example: FAIL + readOnly: true + required: false + type: string + group_id: Device_Update + methods: + - _key: events + description: 'Get a list of events grouped by summary. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/skipped/event_types + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - order + - limit + - after + - has_more + - total_count + - data + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: The campaign ID. + entity_fieldname: campaign_id + external_param: false + in: path + name: campaign_id + parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + - _key: id + api_fieldname: summary_status_id + description: The summary status. For example, fail. + entity_fieldname: id + enum: + - fail + - success + - info + - skipped + enum_reference: campaign_statistics_id_enum + external_param: false + in: path + name: summary_status_id + parameter_fieldname: summary_status_id + required: true + type: string + foreign_key: + entity: campaign_statistics_events + group: Device_Update + group_id: Device_Update + method: get + mode: events + operation_id: Update_Campaign_event_types_list + pagination: true + parameter_map: + summary_status_id: id + path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: campaign_statistics_events + group: Device_Update + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to fetch after the given one. + entity_fieldname: after + example: 'null' + type: string + - _key: data + api_fieldname: data + entity_fieldname: data + enum: + - fail + - skipped + - info + - success + items: + foreign_key: + entity: campaign_statistics_events + group: Device_Update + properties: + - _key: campaign_id + description: ID of the associated campaign. + example: 016e652be671000000000001001001e5 + type: string + - _key: count + example: 10 + type: integer + - _key: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: description + example: Update error, nonspecific network error + type: string + - _key: event_type + example: UPD4_FAIL_101 + type: string + - _key: id + example: upd_fail_101 + type: string + - _key: object + description: 'Entity name: always ''event-type''.' + example: event-type + type: string + - _key: summary_status + example: FAIL + type: string + - _key: summary_status_id + example: fail + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: A flag indicating whether there are more results. + entity_fieldname: has_more + example: 'false' + type: boolean + - _key: limit + api_fieldname: limit + description: 'The number of results to return, (range: 2-1000), or equals + to total_count.' + entity_fieldname: limit + example: '50' + type: integer + - _key: object + api_fieldname: object + description: 'The entity name: always ''list''.' + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + example: ASC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number or records, if requested. It may be returned + also for small lists. + entity_fieldname: total_count + example: '1' + type: integer + type: object + - _key: '401' + description: Not Authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not Found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: campaign_statistics_events + return_type: paginated_response(campaign_statistics_events) + summary: Get a list of events grouped by summary + x_deprecation: null + x_filter: {} + - _key: list + description: 'Get a list of statistics for a campaign, including the number of + devices reporting specific event codes. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56780120000789012/statistics + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - order + - limit + - after + - has_more + - total_count + - data + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: The campaign ID. + entity_fieldname: campaign_id + external_param: false + in: path + name: campaign_id + parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + foreign_key: + entity: campaign_statistics + group: Device_Update + foreign_key_priority: self + group_id: Device_Update + method: get + mode: list + operation_id: Update_Campaign_statistics_list + pagination: true + parameter_map: + summary_status_id: id + path: /v3/update-campaigns/{campaign_id}/statistics + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: campaign_statistics + group: Device_Update + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to fetch after the given one. + entity_fieldname: after + example: 'null' + type: string + - _key: data + api_fieldname: data + entity_fieldname: data + items: + foreign_key: + entity: campaign_statistics + group: Device_Update + properties: + - _key: campaign_id + description: ID of the associated campaign. + example: 016e652be6710000000000010010013d + type: string + - _key: count + example: 10 + type: integer + - _key: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: id + description: ID of the event type description. + enum: + - fail + - success + - info + - skipped + example: fail + type: string + - _key: object + description: 'Entity name: always ''summary_status''.' + example: summary_status + type: string + - _key: summary_status + description: The event type description. + enum: + - FAIL + - SUCCESS + - INFO + - SKIPPED + example: FAIL + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: A flag indicating whether there are more results. + entity_fieldname: has_more + example: 'false' + type: boolean + - _key: limit + api_fieldname: limit + description: 'The number of results to return, (range: 2-1000), or equals + to total_count.' + entity_fieldname: limit + example: '50' + type: integer + - _key: object + api_fieldname: object + description: 'The entity name: always ''list''.' + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + example: ASC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number or records, if requested. It may be returned + also for small lists. + entity_fieldname: total_count + example: '1' + type: integer + type: object + - _key: '401' + description: Not Authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not Found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: campaign_statistics + return_type: paginated_response(campaign_statistics) + summary: Get statistics for a campaign + x_deprecation: null + x_filter: {} + - _key: read + description: 'Get the count of successfully updated, skipped, and failed devices. + +
+ + **Usage example:** + + ``` + + curl https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/fail + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - summary_status + - count + - created_at + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + entity_fieldname: campaign_id + example: 016e652be6710000000000010010013d + in: path + parameter_fieldname: campaign_id + required: true + type: string + - _key: id + api_fieldname: id + description: ID of the event type description. + entity_fieldname: id + enum: + - fail + - success + - info + - skipped + enum_reference: campaign_statistics_id_enum + example: fail + in: path + parameter_fieldname: summary_status_id + required: true + type: string + group_id: Device_Update + method: get + mode: read + operation_id: Update_Campaign_statistics_retrieve + pagination: false + parameter_map: + summary_status_id: id + path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: campaign_statistics + group: Device_Update + properties: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + entity_fieldname: campaign_id + example: 016e652be6710000000000010010013d + type: string + - _key: count + api_fieldname: count + entity_fieldname: count + example: 10 + type: integer + - _key: created_at + api_fieldname: created_at + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: id + api_fieldname: id + description: ID of the event type description. + entity_fieldname: id + enum: + - fail + - success + - info + - skipped + example: fail + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''summary_status''.' + entity_fieldname: object + example: summary_status + type: string + - _key: summary_status + api_fieldname: summary_status + description: The event type description. + entity_fieldname: summary_status + enum: + - FAIL + - SUCCESS + - INFO + - SKIPPED + example: FAIL + type: string + type: object + - _key: '401' + description: Not Authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not Found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: campaign_statistics + return_type: campaign_statistics + summary: Get a status summary + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - EventTypeList + - EventTypeSummary + - EventTypeSummaryList + tags: + - Device update - campaigns +- _key: campaign_statistics_events + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + example: 016e652be671000000000001001001e5 + readOnly: false + required: true + type: string + - _key: count + api_fieldname: count + example: 10 + readOnly: true + required: false + type: integer + - _key: created_at + api_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + example: Update error, nonspecific network error + readOnly: true + required: false + type: string + - _key: event_type + api_fieldname: event_type + example: UPD4_FAIL_101 + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + example: upd_fail_101 + readOnly: false + required: true + type: string + - _key: summary_status + api_fieldname: summary_status + example: FAIL + readOnly: true + required: false + type: string + - _key: summary_status_id + api_fieldname: summary_status_id + example: fail + readOnly: false + required: true + type: string + group_id: Device_Update + methods: + - _key: read + description: 'Get the count for a specific event type, for example, succeeded, + failed or skipped. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/12345678901234567890123456789012/statistics/success/event_types/sys_112 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - created_at + - event_type + - description + - summary_status + - count + field_renames: [] + fields: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + entity_fieldname: campaign_id + example: 016e652be671000000000001001001e5 + in: path + parameter_fieldname: campaign_id + required: true + type: string + - _key: id + api_fieldname: id + entity_fieldname: id + example: upd_fail_101 + in: path + parameter_fieldname: event_type_id + required: true + type: string + - _key: summary_status_id + api_fieldname: summary_status_id + entity_fieldname: summary_status_id + example: fail + in: path + parameter_fieldname: summary_status_id + required: true + type: string + group_id: Device_Update + method: get + mode: read + operation_id: Update_Campaign_event_types_retrieve + pagination: false + parameter_map: + event_type_id: id + path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/{event_type_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: campaign_statistics_events + group: Device_Update + properties: + - _key: campaign_id + api_fieldname: campaign_id + description: ID of the associated campaign. + entity_fieldname: campaign_id + example: 016e652be671000000000001001001e5 + type: string + - _key: count + api_fieldname: count + entity_fieldname: count + example: 10 + type: integer + - _key: created_at + api_fieldname: created_at + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: description + api_fieldname: description + entity_fieldname: description + example: Update error, nonspecific network error + type: string + - _key: event_type + api_fieldname: event_type + entity_fieldname: event_type + example: UPD4_FAIL_101 + type: string + - _key: id + api_fieldname: id + entity_fieldname: id + example: upd_fail_101 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''event-type''.' + entity_fieldname: object + example: event-type + type: string + - _key: summary_status + api_fieldname: summary_status + entity_fieldname: summary_status + example: FAIL + type: string + - _key: summary_status_id + api_fieldname: summary_status_id + entity_fieldname: summary_status_id + example: fail + type: string + type: object + - _key: '401' + description: Not Authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not Found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: campaign_statistics_events + return_type: campaign_statistics_events + summary: Get an event type for a campaign + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - EventType + tags: + - Device update - campaigns +- _key: certificate_enrollment + field_renames: [] + fields: + - _key: certificate_name + api_fieldname: certificate_name + description: The certificate name. + example: customer.dlms + external_param: true + in: path + maxLength: 50 + name: certificate-name + parameter_fieldname: certificate-name + pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time + readOnly: true + required: false + type: string + - _key: device_id + api_fieldname: device_id + description: The device ID. + example: 01625daa23230a580a0100bd00000000 + readOnly: true + required: false + type: string + - _key: enroll_result + api_fieldname: enroll_result + description: The result of certificate enrollment request. + enum: + - success + - failure + enum_reference: certificate_enrollment_enroll_result_enum + example: success + readOnly: true + required: false + type: string + - _key: enroll_result_detail + api_fieldname: enroll_result_detail + description: Additional information in case of failure. + example: The device is currently processing too many certificate renewals. + readOnly: true + required: false + type: string + - _key: enroll_status + api_fieldname: enroll_status + description: The status of certificate enrollment request. + enum: + - new + - completed + enum_reference: certificate_enrollment_enroll_status_enum + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + example: 01612df56f3b0a580a010fc700000000 + in: path + parameter_fieldname: device-id + readOnly: false + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Update UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Security + methods: + - _key: list + description: 'Get certificate enrollments list, optionally filtered. + + + **Examples:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments \ + + -H ''Authorization: Bearer '' + + ``` + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments?device_id__eq=01612df56f3b0a580a010fc700000000 + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - total_count + - has_more + - data + - device_id__eq + - certificate_name__eq + - enroll_status__neq + - enroll_status__eq + - enroll_result__neq + - enroll_result__eq + - created_at__lte + - created_at__gte + - updated_at__lte + - updated_at__gte + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: 01625daa23230a580a0100bd00000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[0-9a-fA-F]{32}' + required: false + type: string + - _key: include + api_fieldname: include + description: a comma-separated list of data fields to return. + entity_fieldname: include + enum: + - total_count + enum_reference: certificate_enrollment_include_enum + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: The number of results to return (2-1000). + entity_fieldname: limit + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: The order of results. + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: certificate_enrollment_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: certificate_enrollment + group: Security + foreign_key_priority: self + group_id: Security + method: get + mode: list + operation_id: getCertificateEnrollments + pagination: true + parameter_map: + certificate-enrollment-id: id + path: /v3/certificate-enrollments + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: certificate_enrollment + group: Security + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to fetch after the given one. + entity_fieldname: after + example: 01625daa23230a580a0100bd00000000 + type: string + - _key: data + api_fieldname: data + description: List of certificate enrollments. + entity_fieldname: data + items: + foreign_key: + entity: certificate_enrollment + group: Security + properties: + - _key: certificate_name + api_fieldname: certificate-name + description: The certificate name. + entity_fieldname: certificate_name + example: customer.dlms + external_param: true + in: path + maxLength: 50 + name: certificate-name + parameter_fieldname: certificate-name + pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + required: true + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: device_id + api_fieldname: device_id + description: The device ID. + entity_fieldname: device_id + example: 01625daa23230a580a0100bd00000000 + type: string + - _key: enroll_result + api_fieldname: enroll_result + description: The result of certificate enrollment request. + entity_fieldname: enroll_result + enum: + - success + - failure + example: success + type: string + - _key: enroll_result_detail + api_fieldname: enroll_result_detail + description: Additional information in case of failure. + entity_fieldname: enroll_result_detail + example: The device is currently processing too many certificate renewals. + type: string + - _key: enroll_status + api_fieldname: enroll_status + description: The status of certificate enrollment request. + entity_fieldname: enroll_status + enum: + - new + - completed + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + entity_fieldname: id + example: 01612df56f3b0a580a010fc700000000 + in: path + parameter_fieldname: device-id + required: true + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-enrollment + type: string + - _key: updated_at + api_fieldname: updated_at + description: Update UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + required: + - created_at + - etag + - id + - device_id + - certificate_name + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return. + entity_fieldname: limit + format: int32 + type: integer + - _key: object + api_fieldname: object + description: Describes the type of objects in the list. + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + description: 'Record order based on creation time. Acceptable values: ASC, + DESC. Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records. + entity_fieldname: total_count + format: int32 + type: integer + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_enrollment + return_type: paginated_response(certificate_enrollment) + summary: Get certificate enrollments list. + x_deprecation: null + x_filter: + certificate_name: + - eq + created_at: + - lte + - gte + device_id: + - eq + enroll_result: + - neq + - eq + enroll_status: + - neq + - eq + updated_at: + - lte + - gte + - _key: read + description: 'Get a certificate enrollment by ID. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments/01612df56f3b0a580a010fc700000000 + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - device_id + - certificate_name + - enroll_status + - enroll_result + - enroll_result_detail + - updated_at + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + entity_fieldname: id + example: 01612df56f3b0a580a010fc700000000 + in: path + parameter_fieldname: certificate-enrollment-id + required: true + type: string + group_id: Security + method: get + mode: read + operation_id: getCertificateEnrollment + pagination: false + parameter_map: + certificate-enrollment-id: id + path: /v3/certificate-enrollments/{certificate-enrollment-id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: device + group: Devices + properties: + - _key: certificate_name + api_fieldname: certificate_name + description: The certificate name. + entity_fieldname: certificate_name + example: customer.dlms + external_param: true + in: path + maxLength: 50 + name: certificate-name + parameter_fieldname: certificate-name + pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + required: true + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: device_id + api_fieldname: device_id + description: The device ID. + entity_fieldname: device_id + example: 01625daa23230a580a0100bd00000000 + type: string + - _key: enroll_result + api_fieldname: enroll_result + description: The result of certificate enrollment request. + entity_fieldname: enroll_result + enum: + - success + - failure + example: success + type: string + - _key: enroll_result_detail + api_fieldname: enroll_result_detail + description: Additional information in case of failure. + entity_fieldname: enroll_result_detail + example: The device is currently processing too many certificate renewals. + type: string + - _key: enroll_status + api_fieldname: enroll_status + description: The status of certificate enrollment request. + entity_fieldname: enroll_status + enum: + - new + - completed + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + entity_fieldname: id + example: 01612df56f3b0a580a010fc700000000 + in: path + parameter_fieldname: device-id + required: true + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-enrollment + type: string + - _key: updated_at + api_fieldname: updated_at + description: Update UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + required: + - created_at + - etag + - id + - device_id + - certificate_name + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not found. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_enrollment + return_type: certificate_enrollment + summary: Get a certificate enrollment by ID. + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - CertificateEnrollment + - CertificateEnrollmentListResponse + tags: + - Device security - device certificate renewals +- _key: certificate_issuer + field_renames: [] + fields: + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + example: GlobalSign sample issuer + maxLength: 100 + readOnly: false + required: false + type: string + x-nullable: true + - _key: id + api_fieldname: id + description: Certificate issuer ID. + example: 01234567890ABCDEF01234567890ABCDEF + readOnly: false + required: true + type: string + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + example: [] + readOnly: false + required: false + type: object + - _key: issuer_type + api_fieldname: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued\ + \ by GlobalSign service. You must provide your own GlobalSign account credentials.\n\ + - CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n\ + \ You must provide your own CFSSL host_url and credentials." + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + enum_reference: certificate_issuer_type_enum + example: GLOBAL_SIGN + readOnly: false + required: true + type: string + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + example: GS Issuer + maxLength: 50 + readOnly: false + required: true + type: string + group_id: Security + methods: + - _key: create + description: "Create a certificate issuer.\n
\nThe maximum number of issuers\ + \ is limited to 20 per account.\n
\nYou can create multiple certificate issuers\ + \ of the same type, provided they have different names. This allows verification\ + \ of the certificate issuer configuration before activation.\n
\n**Example:**\n\ + ```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"issuer_type\": \"GLOBAL_SIGN\",\n \"name\": \"GS Issuer\"\ + ,\n \"description\": \"Sample GlobalSign certificate issuer\",\n \"issuer_attributes\"\ + : null,\n \"issuer_credentials\": {\n \"api_key\": \"e510e289e6cd8947\"\ + ,\n \"api_secret\": \"a477a8393d17a55ecb2ba6a61f58feb84770b621\",\n \ + \ \"client_certificate\": \"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END\ + \ CERTIFICATE-----\",\n \"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\\ + nProc-Type: 4,ENCRYPTED\\nDEK-Info: DES-EDE3-CBC,CCAC26A4133947CB\\n\\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\\\ + nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\\\ + n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\\\ + nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\\\ + nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\\\ + n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\\\ + notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\\\ + nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\\\ + n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\\\ + nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\\\ + n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\\\ + nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\\\ + n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\\\ + n-----END RSA PRIVATE KEY-----\",\n \"passphrase\": \"helloworld\"\n }\n\ + }'\n```" + drop_fields: + - object + - etag + - type + - filter + - created_at + - id + field_renames: [] + fields: + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + entity_fieldname: description + example: GlobalSign sample issuer + in: body + maxLength: 100 + parameter_fieldname: description + required: false + type: string + x-nullable: true + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + entity_fieldname: issuer_attributes + example: [] + in: body + parameter_fieldname: issuer_attributes + required: false + type: object + - _key: issuer_credentials + additionalProperties: + type: string + api_fieldname: issuer_credentials + description: 'The credentials required to connect to the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.' + entity_fieldname: issuer_credentials + example: [] + external_param: true + in: body + name: issuer_credentials + parameter_fieldname: issuer_credentials + required: true + schema_param: true + type: object + - _key: issuer_type + api_fieldname: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are issued\ + \ by GlobalSign service. You must provide your own GlobalSign account credentials.\n\ + - CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated signing service.\n\ + \ You must provide your own CFSSL host_url and credentials." + entity_fieldname: issuer_type + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + enum_reference: certificate_issuer_type_enum + example: GLOBAL_SIGN + in: body + parameter_fieldname: issuer_type + required: true + type: string + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + entity_fieldname: name + example: GS Issuer + in: body + maxLength: 50 + parameter_fieldname: name + required: false + type: string + group_id: Security + method: post + mode: create + operation_id: createCertificateIssuer + pagination: false + parameter_map: + certificate-issuer-id: id + path: /v3/certificate-issuers + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: Created. + schema: + foreign_key: + entity: certificate_issuer + group: Security + properties: + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + entity_fieldname: description + example: GlobalSign sample issuer + maxLength: 100 + type: string + x-nullable: true + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. + entity_fieldname: id + example: 01234567890ABCDEF01234567890ABCDEF + type: string + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + entity_fieldname: issuer_attributes + example: [] + type: object + - _key: issuer_type + api_fieldname: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are\ + \ issued by GlobalSign service. You must provide your own GlobalSign account\ + \ credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ + \ signing service.\n You must provide your own CFSSL host_url and credentials." + entity_fieldname: issuer_type + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + example: GLOBAL_SIGN + type: string + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + entity_fieldname: name + example: GS Issuer + maxLength: 50 + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-issuer + type: string + required: + - issuer_type + type: object + - _key: '400' + description: 'Validation error: The data used to create the certificate issuer + failed validation.' + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - end_market - - etag - - id - - object - - status - - tier type: object type: array - x-nullable: true - - _key: template_id - api_fieldname: template_id - description: Account template ID. - entity_fieldname: template_id - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: Error message. type: string - x-nullable: true - - _key: tier - api_fieldname: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - entity_fieldname: tier - example: '1' + - _key: object + description: 'Entity name: `error`.' type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: request_id + description: Request ID from JWT. type: string - - _key: upgraded_at - api_fieldname: upgraded_at - description: Time when upgraded to commercial account in UTC format RFC3339. - entity_fieldname: upgraded_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: type + description: Error type. type: string required: - - end_market - - etag - - id + - code + - fields + - message - object - - status - - tier + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: You are not authorized to view the resource. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -5584,44 +16367,116 @@ entities: schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: + - _key: field + description: Field name. + type: string - _key: message - description: Message describing the error condition. + description: Error message related to the field. type: string - - _key: name - description: Name of the field which caused the error. + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '409' + description: Conflict. A certificate issuer with this name already exists. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '424' + description: The request failed due to customer configured external service. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -5630,23 +16485,24 @@ entities: return_info: custom: false self: true - type: account - return_type: account - summary: Get account info. + type: certificate_issuer + return_type: certificate_issuer + summary: Create certificate issuer. x_deprecation: null x_filter: {} - - _key: read - description: 'Retrieve detailed information about an account. + - _key: delete + description: 'Delete a certificate issuer by ID. +
**Example:** - ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000 + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ ```' drop_fields: @@ -5654,996 +16510,673 @@ entities: - etag - type - filter - - sub_accounts - - created_at - - updated_at - - parent_id - - display_name - - company - - country - - address_line1 - - address_line2 - - city - - state - - postal_code - - contact - - email - - phone_number - - aliases - - tier - - status - - upgraded_at - - limits - - policies - - template_id - - reason - - end_market - - idle_timeout - - password_policy - - reference_note - - custom_fields - - mfa_status - - notification_emails - - sales_contact - - expiration_warning_threshold - - contract_number - - customer_number - - parent_account - - expiration - - admin_id - - admin_name - - admin_email - - admin_key - - admin_password - - admin_full_name - - password_recovery_expiration field_renames: [] fields: - _key: id - api_fieldname: id - description: Account ID. + api_fieldname: certificate-issuer-id + description: 'Certificate issuer ID. + + An active certificate issuer cannot be deleted.' entity_fieldname: id - example: 01619571e2e90242ac12000600000000 + external_param: false in: path - parameter_fieldname: account_id - pattern: '[a-f0-9]{32}' + name: certificate-issuer-id + parameter_fieldname: certificate-issuer-id required: true type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - limits, policies, sub_accounts.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: properties - api_fieldname: properties - description: Property name to return from account-specific properties. - entity_fieldname: properties - external_param: true - in: query - name: properties - parameter_fieldname: properties - required: false - type: string - group_id: Accounts - method: get - mode: read - operation_id: getAccountInfo - pagination: false - parameter_map: - account_id: id - path: /v3/accounts/{account_id} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - description: Represents an account in requests and responses. - properties: - - _key: address_line1 - api_fieldname: address_line1 - description: Postal address line 1. - entity_fieldname: address_line1 - example: 110 Fulbourn Rd - maxLength: 100 - type: string - x-nullable: true - - _key: address_line2 - api_fieldname: address_line2 - description: Postal address line 2. - entity_fieldname: address_line2 - example: ' ' - maxLength: 100 - type: string - x-nullable: true - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - entity_fieldname: admin_email - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - api_fieldname: admin_full_name - description: The full name of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_full_name - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - api_fieldname: admin_id - description: The ID of the admin user created for this account. - entity_fieldname: admin_id - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - api_fieldname: admin_key - description: The admin API key created for this account. Present only in - the response for account creation. - entity_fieldname: admin_key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - api_fieldname: admin_name - description: The username of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_name - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - api_fieldname: admin_password - description: The password of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_password - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - - _key: aliases - api_fieldname: aliases - description: An array of aliases. - entity_fieldname: aliases - items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 - type: array - - _key: city - api_fieldname: city - description: The city part of the postal address. - entity_fieldname: city - example: Cambridge - maxLength: 100 - type: string - x-nullable: true - - _key: company - api_fieldname: company - description: The name of the company. - entity_fieldname: company - example: ARM Holdings Plc - maxLength: 100 - type: string - x-nullable: true - - _key: contact - api_fieldname: contact - description: The name of the contact person for this account. - entity_fieldname: contact - example: J. Doe - maxLength: 100 - type: string - x-nullable: true - - _key: contract_number - api_fieldname: contract_number - description: Contract number of the customer. - entity_fieldname: contract_number - example: 1NX25_0001 - type: string - x-nullable: true - - _key: country - api_fieldname: country - description: The country part of the postal address. - entity_fieldname: country - example: United Kingdom - maxLength: 100 - type: string - x-nullable: true - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: custom_fields - additionalProperties: - type: string - api_fieldname: custom_fields - description: Account's custom properties as key-value pairs. - entity_fieldname: custom_fields - type: object - x-nullable: true - - _key: customer_number - api_fieldname: customer_number - description: Customer number of the customer. - entity_fieldname: customer_number - example: 1NC25_0001 - type: string - x-nullable: true - - _key: display_name - api_fieldname: display_name - description: The display name for the account. - entity_fieldname: display_name - example: ARM - maxLength: 100 - type: string - x-nullable: true - - _key: email - api_fieldname: email - description: The company email address for this account. - entity_fieldname: email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: end_market - api_fieldname: end_market - description: Account end market. - entity_fieldname: end_market - example: IT + group_id: Security + method: delete + mode: delete + operation_id: deleteCertificateIssuer + pagination: false + parameter_map: + certificate-issuer-id: id + path: /v3/certificate-issuers/{certificate-issuer-id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Certificate issuer deleted. + - _key: '400' + description: 'Validation error: An active certificate issuer cannot be deleted.' + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. type: string - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' + - _key: object + description: 'Entity name: `error`.' type: string - - _key: expiration - api_fieldname: expiration - description: Expiration time of the account, as UTC time RFC3339. - entity_fieldname: expiration - format: date-time + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: expiration_warning_threshold - api_fieldname: expiration_warning_threshold - description: Indicates how many days (1-180) before account expiration a - notification email is sent. - entity_fieldname: expiration_warning_threshold - example: '180' - maximum: 180 - minimum: 1 - type: integer - x-nullable: true - - _key: id - api_fieldname: id - description: Account ID. - entity_fieldname: id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: type + description: Error type. type: string - - _key: idle_timeout - api_fieldname: idle_timeout - description: The reference token expiration time, in minutes, for this account. - entity_fieldname: idle_timeout - example: '30' - maximum: 120 - minimum: 1 + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 type: integer - x-nullable: true - - _key: limits - additionalProperties: - type: string - api_fieldname: limits - description: List of limits as key-value pairs if requested. - entity_fieldname: limits - type: object - x-nullable: true - - _key: mfa_status - api_fieldname: mfa_status - description: The enforcement status of multi-factor authentication, either - `enforced` or `optional`. - entity_fieldname: mfa_status - enum: - - enforced - - optional - type: string - x-nullable: true - - _key: notification_emails - api_fieldname: notification_emails - description: A list of notification email addresses. - entity_fieldname: notification_emails + - _key: fields + description: A list of request fields that failed validation. items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object type: array - x-nullable: true + - _key: message + description: Error message. + type: string - _key: object - api_fieldname: object - description: 'Entity name: always `account`.' - entity_fieldname: object - enum: - - account + description: 'Entity name: `error`.' type: string - - _key: parent_account - api_fieldname: parent_account - description: Represents parent account contact details in responses. - entity_fieldname: parent_account - foreign_key: - entity: parent_account - group: Accounts - properties: - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user who is the contact person - of the parent account. - entity_fieldname: admin_email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: admin_name - api_fieldname: admin_name - description: The name of the admin user who is the contact person of the - parent account. - entity_fieldname: admin_name - example: J. Doe - maxLength: 100 - type: string - - _key: id - api_fieldname: id - description: The ID of the parent account. - entity_fieldname: id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - type: object - x-nullable: true - - _key: parent_id - api_fieldname: parent_id - description: The ID of the parent account, if any. - entity_fieldname: parent_id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: password_policy - api_fieldname: password_policy - description: The password policy for this account. - entity_fieldname: password_policy - foreign_key: - entity: password_policy - group: Accounts - properties: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - entity_fieldname: minimum_length - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: - - minimum_length - type: object - x-nullable: true - - _key: password_recovery_expiration - api_fieldname: password_recovery_expiration - description: Indicates for how many minutes a password recovery email is - valid. - entity_fieldname: password_recovery_expiration + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. format: int32 - maximum: 45 - minimum: 1 type: integer - - _key: phone_number - api_fieldname: phone_number - description: The phone number of a company representative. - entity_fieldname: phone_number - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - - _key: policies - api_fieldname: policies - description: List of policies if requested. - entity_fieldname: policies + - _key: fields + description: A list of request fields that failed validation. items: - description: Represents a feature policy. Either the feature or the resource - must be specified. - foreign_key: - entity: policy - group: Accounts properties: - - _key: action - api_fieldname: action - description: Comma-separated list of actions, empty string represents - all actions. - entity_fieldname: action - example: GET - type: string - - _key: allow - api_fieldname: allow - description: True or false controlling whether an action is allowed - or not. - entity_fieldname: allow - example: true - type: boolean - - _key: feature - api_fieldname: feature - description: Feature name corresponding to this policy. - entity_fieldname: feature - example: update-campaigns - type: string - - _key: inherited - api_fieldname: inherited - description: Flag indicating whether this feature is inherited or overwritten - specifically. - entity_fieldname: inherited - example: false - readOnly: true - type: boolean - - _key: inherited_from - api_fieldname: inherited_from - description: An ID indicating where this policy is inherited from. - entity_fieldname: inherited_from - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - type: string - - _key: inherited_type - api_fieldname: inherited_type - description: Indicates the type of entity this policy is inherited from. - entity_fieldname: inherited_type - enum: - - account - - template - - tier_template - example: account - readOnly: true + - _key: field + description: Field name. type: string - - _key: resource - api_fieldname: resource - description: Resource that is protected by this policy. - entity_fieldname: resource - example: /v3/update-campaign + - _key: message + description: Error message related to the field. type: string type: object type: array - x-nullable: true - - _key: postal_code - api_fieldname: postal_code - description: The postal code part of the postal address. - entity_fieldname: postal_code - example: CB1 9NJ - maxLength: 100 - type: string - x-nullable: true - - _key: reason - api_fieldname: reason - description: A note with the reason for account status update. - entity_fieldname: reason - example: Subscription paid. - type: string - x-nullable: true - - _key: reference_note - api_fieldname: reference_note - description: A reference note for updating the status of the account. - entity_fieldname: reference_note - example: ARM-INT-0001 + - _key: message + description: Error message. type: string - x-nullable: true - - _key: sales_contact - api_fieldname: sales_contact - description: Email address of the sales contact. - entity_fieldname: sales_contact - example: sales@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + - _key: object + description: 'Entity name: `error`.' type: string - x-nullable: true - - _key: state - api_fieldname: state - description: The state part of the postal address. - entity_fieldname: state - example: ' ' - maxLength: 100 + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: status - api_fieldname: status - description: The status of the account. - entity_fieldname: status - enum: - - ENROLLING - - ACTIVE - - RESTRICTED - - SUSPENDED - example: ACTIVE + - _key: type + description: Error type. type: string - - _key: sub_accounts - api_fieldname: sub_accounts - description: List of sub accounts. Not available for developer users. - entity_fieldname: sub_accounts + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not found. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. items: - description: Represents an account in requests and responses. properties: - - _key: address_line1 - description: Postal address line 1. - example: 110 Fulbourn Rd - maxLength: 100 - type: string - x-nullable: true - - _key: address_line2 - description: Postal address line 2. - example: ' ' - maxLength: 100 - type: string - x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present only - in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - - _key: aliases - description: An array of aliases. - items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 - type: array - - _key: city - description: The city part of the postal address. - example: Cambridge - maxLength: 100 - type: string - x-nullable: true - - _key: company - description: The name of the company. - example: ARM Holdings Plc - maxLength: 100 - type: string - x-nullable: true - - _key: contact - description: The name of the contact person for this account. - example: J. Doe - maxLength: 100 - type: string - x-nullable: true - - _key: contract_number - description: Contract number of the customer. - example: 1NX25_0001 + - _key: field + description: Field name. type: string - x-nullable: true - - _key: country - description: The country part of the postal address. - example: United Kingdom - maxLength: 100 + - _key: message + description: Error message related to the field. type: string - x-nullable: true + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_issuer + return_type: certificate_issuer + summary: Delete certificate issuer. + x_deprecation: null + x_filter: {} + - _key: list + description: '**Note:** This endpoint does not use pagination, and therefore ignores + list control parameters such as `limit` or `after`.' + drop_fields: + - object + - etag + - type + - filter + - has_more + - total_count + - data + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: certificate_issuer + group: Security + foreign_key_priority: self + group_id: Security + method: get + mode: list + operation_id: getCertificateIssuers + pagination: true + parameter_map: + certificate-issuer-id: id + path: /v3/certificate-issuers + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: certificate_issuer + group: Security + pagination: true + properties: + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: data + api_fieldname: data + description: List of certificate issuers. + entity_fieldname: data + items: + foreign_key: + entity: certificate_issuer + group: Security + properties: - _key: created_at description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' + example: '2017-01-01T00:00:00Z' format: date-time type: string - - _key: custom_fields - additionalProperties: - type: string - description: Account's custom properties as key-value pairs. - type: object - x-nullable: true - - _key: customer_number - description: Customer number of the customer. - example: 1NC25_0001 - type: string - x-nullable: true - - _key: display_name - description: The display name for the account. - example: ARM + - _key: description + description: General description for the certificate issuer. + example: GlobalSign sample issuer maxLength: 100 type: string x-nullable: true - - _key: email - description: The company email address for this account. - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: end_market - description: Account end market. - example: IT - type: string - _key: etag - description: API resource entity version. + description: Entity instance signature. example: '1' type: string - - _key: expiration - description: Expiration time of the account, as UTC time RFC3339. - format: date-time - type: string - x-nullable: true - - _key: expiration_warning_threshold - description: Indicates how many days (1-180) before account expiration - a notification email is sent. - example: '180' - maximum: 180 - minimum: 1 - type: integer - x-nullable: true - _key: id - description: Account ID. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' + description: Certificate issuer ID. + example: 01234567890ABCDEF01234567890ABCDEF type: string - - _key: idle_timeout - description: The reference token expiration time, in minutes, for this - account. - example: '30' - maximum: 120 - minimum: 1 - type: integer - x-nullable: true - - _key: limits + - _key: issuer_attributes additionalProperties: type: string - description: List of limits as key-value pairs if requested. + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + example: [] type: object - x-nullable: true - - _key: mfa_status - description: The enforcement status of multi-factor authentication, - either `enforced` or `optional`. + - _key: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates\ + \ are issued by GlobalSign service. You must provide your own GlobalSign\ + \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by\ + \ CFSSL authenticated signing service.\n You must provide your own\ + \ CFSSL host_url and credentials." enum: - - enforced - - optional + - GLOBAL_SIGN + - CFSSL_AUTH + example: GLOBAL_SIGN + type: string + - _key: name + description: Certificate issuer name, unique per account. + example: GS Issuer + maxLength: 50 type: string - x-nullable: true - - _key: notification_emails - description: A list of notification email addresses. - items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string - type: array - x-nullable: true - _key: object - description: 'Entity name: always `account`.' enum: - - account - type: string - - _key: parent_account - description: Represents parent account contact details in responses. - foreign_key: - entity: parent_account - group: Accounts - properties: - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user who is the contact - person of the parent account. - entity_fieldname: admin_email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: admin_name - api_fieldname: admin_name - description: The name of the admin user who is the contact person - of the parent account. - entity_fieldname: admin_name - example: J. Doe - maxLength: 100 - type: string - - _key: id - api_fieldname: id - description: The ID of the parent account. - entity_fieldname: id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - type: object - x-nullable: true - - _key: parent_id - description: The ID of the parent account, if any. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: password_policy - description: The password policy for this account. - foreign_key: - entity: password_policy - group: Accounts - properties: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - entity_fieldname: minimum_length - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: - - minimum_length - type: object - x-nullable: true - - _key: password_recovery_expiration - description: Indicates for how many minutes a password recovery email - is valid. - format: int32 - maximum: 45 - minimum: 1 - type: integer - - _key: phone_number - description: The phone number of a company representative. - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - - _key: policies - description: List of policies if requested. - items: - description: Represents a feature policy. Either the feature or the - resource must be specified. - foreign_key: - entity: policy - group: Accounts - properties: - - _key: action - api_fieldname: action - description: Comma-separated list of actions, empty string represents - all actions. - entity_fieldname: action - example: GET - type: string - - _key: allow - api_fieldname: allow - description: True or false controlling whether an action is allowed - or not. - entity_fieldname: allow - example: true - type: boolean - - _key: feature - api_fieldname: feature - description: Feature name corresponding to this policy. - entity_fieldname: feature - example: update-campaigns - type: string - - _key: inherited - api_fieldname: inherited - description: Flag indicating whether this feature is inherited or - overwritten specifically. - entity_fieldname: inherited - example: false - readOnly: true - type: boolean - - _key: inherited_from - api_fieldname: inherited_from - description: An ID indicating where this policy is inherited from. - entity_fieldname: inherited_from - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - type: string - - _key: inherited_type - api_fieldname: inherited_type - description: Indicates the type of entity this policy is inherited - from. - entity_fieldname: inherited_type - enum: - - account - - template - - tier_template - example: account - readOnly: true - type: string - - _key: resource - api_fieldname: resource - description: Resource that is protected by this policy. - entity_fieldname: resource - example: /v3/update-campaign - type: string - type: object - type: array - x-nullable: true - - _key: postal_code - description: The postal code part of the postal address. - example: CB1 9NJ - maxLength: 100 - type: string - x-nullable: true - - _key: reason - description: A note with the reason for account status update. - example: Subscription paid. - type: string - x-nullable: true - - _key: reference_note - description: A reference note for updating the status of the account. - example: ARM-INT-0001 - type: string - x-nullable: true - - _key: sales_contact - description: Email address of the sales contact. - example: sales@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + - certificate-issuer type: string - x-nullable: true - - _key: state - description: The state part of the postal address. - example: ' ' - maxLength: 100 + required: + - issuer_type + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: More results are available. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return (2-1000). Values outside of + this range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: object + api_fieldname: object + description: The type of this API object is `list`. + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + example: 1 + format: integer + type: integer + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - x-nullable: true - - _key: status - description: The status of the account. - enum: - - ENROLLING - - ACTIVE - - RESTRICTED - - SUSPENDED - example: ACTIVE + - _key: message + description: Error message related to the field. type: string - - _key: sub_accounts - description: List of sub accounts. Not available for developer users. - items: [] - type: array - x-nullable: true - - _key: template_id - description: Account template ID. - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - x-nullable: true - - _key: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - example: '1' + - _key: message + description: Error message related to the field. type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_issuer + return_type: paginated_response(certificate_issuer) + summary: Get certificate issuers list. + x_deprecation: null + x_filter: {} + - _key: read + description: (No description provided) + drop_fields: + - object + - etag + - type + - filter + - created_at + - issuer_type + - name + - description + - issuer_attributes + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: Certificate issuer ID. + entity_fieldname: id + example: 01234567890ABCDEF01234567890ABCDEF + in: path + parameter_fieldname: certificate-issuer-id + required: true + type: string + group_id: Security + method: get + mode: read + operation_id: getCertificateIssuer + pagination: false + parameter_map: + certificate-issuer-id: id + path: /v3/certificate-issuers/{certificate-issuer-id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: certificate_issuer + group: Security + properties: + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + entity_fieldname: description + example: GlobalSign sample issuer + maxLength: 100 + type: string + x-nullable: true + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. + entity_fieldname: id + example: 01234567890ABCDEF01234567890ABCDEF + type: string + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + entity_fieldname: issuer_attributes + example: [] + type: object + - _key: issuer_type + api_fieldname: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are\ + \ issued by GlobalSign service. You must provide your own GlobalSign account\ + \ credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ + \ signing service.\n You must provide your own CFSSL host_url and credentials." + entity_fieldname: issuer_type + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + example: GLOBAL_SIGN + type: string + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + entity_fieldname: name + example: GS Issuer + maxLength: 50 + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-issuer + type: string + required: + - issuer_type + type: object + - _key: '400' + description: 'Validation error: The data used to get the certificate issuer + failed validation.' + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - - _key: upgraded_at - description: Time when upgraded to commercial account in UTC format - RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: message + description: Error message related to the field. type: string - required: - - end_market - - etag - - id - - object - - status - - tier type: object type: array - x-nullable: true - - _key: template_id - api_fieldname: template_id - description: Account template ID. - entity_fieldname: template_id - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: Error message. type: string - x-nullable: true - - _key: tier - api_fieldname: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - entity_fieldname: tier - example: '1' + - _key: object + description: 'Entity name: `error`.' type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: request_id + description: Request ID from JWT. type: string - - _key: upgraded_at - api_fieldname: upgraded_at - description: Time when upgraded to commercial account in UTC format RFC3339. - entity_fieldname: upgraded_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: type + description: Error type. type: string required: - - end_market - - etag - - id + - code + - fields + - message - object - - status - - tier + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -6654,92 +17187,76 @@ entities: schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '404' - description: Account with the given ID not found. + description: Not found. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -6748,457 +17265,410 @@ entities: return_info: custom: false self: true - type: account - return_type: account - summary: Get account info. + type: certificate_issuer + return_type: certificate_issuer + summary: Get certificate issuer by ID. x_deprecation: null x_filter: {} - - _key: trusted_certificates - description: 'Retrieve trusted certificates in an array. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates - \ - - -H ''Authorization: Bearer '' - - ```' + - _key: update + description: "Update a certificate issuer.\n
\n**Example:**\n\n```\ncurl -X\ + \ PUT https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"description\": \"Sample GlobalSign certificate issuer - updated.\"\ + ,\n \"name\": \"GlobalSign Issuer\"\n}'\n```" drop_fields: - object - etag - type - filter - - sub_accounts - - total_count - - has_more - - data - - name__eq - - service__eq - - expire__eq - - device_execution_mode__eq - - device_execution_mode__neq - - owner__eq - - enrollment_mode__eq - - status__eq - - issuer__like - - subject__like - - valid__eq + - created_at + - issuer_type field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + entity_fieldname: description + example: GlobalSign sample issuer + in: body + maxLength: 100 + parameter_fieldname: description required: false type: string + x-nullable: true - _key: id - api_fieldname: account_id - description: Account ID. + api_fieldname: id + description: Certificate issuer ID. entity_fieldname: id - external_param: false + example: 01234567890ABCDEF01234567890ABCDEF in: path - name: account_id - parameter_fieldname: account_id + parameter_fieldname: certificate-issuer-id required: true type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + entity_fieldname: issuer_attributes + example: [] + in: body + parameter_fieldname: issuer_attributes required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 + type: object + - _key: issuer_credentials + additionalProperties: + type: string + api_fieldname: issuer_credentials + description: 'The credentials required to connect to the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials.' + entity_fieldname: issuer_credentials + example: [] external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit + in: body + name: issuer_credentials + parameter_fieldname: issuer_credentials required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: account_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order + schema_param: true + type: object + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + entity_fieldname: name + example: GS Issuer + in: body + maxLength: 50 + parameter_fieldname: name required: false type: string - foreign_key: - entity: subtenant_trusted_certificate - group_id: Accounts - method: get - mode: trusted_certificates - notes: This lists the trusted certificates of the subtenant account. - operation_id: getAllAccountCertificates - pagination: true + group_id: Security + method: put + mode: update + operation_id: updateCertificateIssuer + pagination: false parameter_map: - account_id: id - path: /v3/accounts/{account_id}/trusted-certificates + certificate-issuer-id: id + path: /v3/certificate-issuers/{certificate-issuer-id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: OK. schema: foreign_key: - entity: trusted_certificate + entity: certificate_issuer group: Security - pagination: true properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: Represents a trusted certificate in responses. - foreign_key: - entity: trusted_certificate - group: Security - properties: - - _key: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: certificate - description: X509.v3 trusted certificate in PEM format. - example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' - type: string - - _key: certificate_fingerprint - description: A SHA-256 fingerprint of the certificate. - example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 - type: string - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: description - description: Human readable description of this certificate. - example: Certificate created by me. - maxLength: 500 - type: string - x-nullable: true - - _key: device_execution_mode - description: Device execution mode where 1 means a developer certificate. - example: 1 - format: int32 - type: integer - - _key: enrollment_mode - description: If true, signature is not required. Default value false. - example: false - type: boolean - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: id - description: Entity ID. - example: 01619571d01d0242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: issuer - description: Issuer of the certificate. - example: CN=issuer - type: string - - _key: name - description: Certificate name. - example: My certificate - maxLength: 100 - type: string - - _key: object - description: 'Entity name: always ''trusted-cert''' - enum: - - trusted-cert - type: string - - _key: owner_id - description: The ID of the owner. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: service - description: Service name where the certificate is used. - enum: - - lwm2m - - bootstrap - type: string - - _key: status - description: Status of the certificate. - enum: - - ACTIVE - - INACTIVE - example: ACTIVE - type: string - - _key: subject - description: Subject of the certificate. - example: CN=subject - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: valid - description: This read-only flag indicates whether the certificate is - valid or not. - example: true - readOnly: true - type: boolean - - _key: validity - description: Expiration time in UTC formatted as RFC3339. - example: '2038-02-14T15:24:14Z' - format: date-time - type: string - required: - - account_id - - certificate - - certificate_fingerprint - - etag - - id - - issuer - - name - - object - - service - - subject - - validity - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: General description for the certificate issuer. + entity_fieldname: description + example: GlobalSign sample issuer + maxLength: 100 + type: string + x-nullable: true + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. + entity_fieldname: id + example: 01234567890ABCDEF01234567890ABCDEF + type: string + - _key: issuer_attributes + additionalProperties: + type: string + api_fieldname: issuer_attributes + description: 'General attributes for connecting the certificate issuer. + + When the issuer_type is GLOBAL_SIGN, the value is empty. + + When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes.' + entity_fieldname: issuer_attributes + example: [] + type: object + - _key: issuer_type + api_fieldname: issuer_type + description: "Certificate issuer type.\n- GLOBAL_SIGN:\n Certificates are\ + \ issued by GlobalSign service. You must provide your own GlobalSign account\ + \ credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ + \ signing service.\n You must provide your own CFSSL host_url and credentials." + entity_fieldname: issuer_type + enum: + - GLOBAL_SIGN + - CFSSL_AUTH + example: GLOBAL_SIGN + type: string + - _key: name + api_fieldname: name + description: Certificate issuer name, unique per account. + entity_fieldname: name + example: GS Issuer + maxLength: 50 + type: string - _key: object api_fieldname: object - description: 'Entity name: always `list`.' entity_fieldname: object enum: - - list - type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: trusted_certificate_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - certificate-issuer type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 + required: + - issuer_type + type: object + - _key: '400' + description: 'Validation error: The data used to update the certificate issuer + failed validation.' + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. format: int32 type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string required: - - data - - has_more - - limit + - code + - fields + - message - object - - total_count + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '404' - description: An account with the given ID does not exist. + description: Not found. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: + - _key: field + description: Field name. + type: string - _key: message - description: Message describing the error condition. + description: Error message related to the field. type: string - - _key: name - description: Name of the field which caused the error. + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '409' + description: Conflict. A certificate issuer with this name already exists. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '424' + description: The request failed due to customer-configured external service. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -7206,53 +17676,36 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_trusted_certificate - return_type: paginated_response(subtenant_trusted_certificate) - summary: Get all trusted certificates. + self: true + type: certificate_issuer + return_type: certificate_issuer + summary: Update certificate issuer. x_deprecation: null - x_filter: - device_execution_mode: - - eq - - neq - enrollment_mode: - - eq - expire: - - eq - issuer: - - like - name: - - eq - owner: - - eq - service: - - eq - status: - - eq - subject: - - like - valid: - - eq - - _key: update - additional_operations: - - notes: After retrieving the resource using the `me` method, it can modified - using using this SDK method. - operation_id: updateMyAccount - description: 'Update an account. + x_filter: {} + - _key: verify + description: 'Validates the certificate issuer by sending a signing request for + a test certificate. This should be done before the configuration is made active. +
- **Example:** + **Note:** + The API requests the 3rd party CA to sign a test certificate. - ``` + For some 3rd party CAs, this operation may use the account quota. - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id} \ +
- -H ''Authorization: Bearer '' \ + **Example:** - -H ''content-type: application/json'' \ + ``` - -d ''{"phone_number": "12345678"}'' + curl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json;charset=UTF-8'' \ ```' drop_fields: @@ -7260,1267 +17713,965 @@ entities: - etag - type - filter - - sub_accounts - - created_at - - updated_at - - parent_id - - tier - - status - - upgraded_at - - limits - - policies - - template_id - - reason - - reference_note - - parent_account - - expiration - - admin_id - - admin_name - - admin_email - - admin_key - - admin_password - - admin_full_name + - successful + - message field_renames: [] fields: - - _key: address_line1 - api_fieldname: address_line1 - description: Postal address line 1. - entity_fieldname: address_line1 - example: 110 Fulbourn Rd - in: body - maxLength: 100 - parameter_fieldname: address_line1 - required: false - type: string - x-nullable: true - - _key: address_line2 - api_fieldname: address_line2 - description: Postal address line 2. - entity_fieldname: address_line2 - example: ' ' - in: body - maxLength: 100 - parameter_fieldname: address_line2 - required: false - type: string - x-nullable: true - - _key: aliases - api_fieldname: aliases - description: An array of aliases. - entity_fieldname: aliases - in: body - items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 - parameter_fieldname: aliases - required: false - type: array - - _key: city - api_fieldname: city - description: The city part of the postal address. - entity_fieldname: city - example: Cambridge - in: body - maxLength: 100 - parameter_fieldname: city - required: false - type: string - x-nullable: true - - _key: company - api_fieldname: company - description: The name of the company. - entity_fieldname: company - example: ARM Holdings Plc - in: body - maxLength: 100 - parameter_fieldname: company - required: false - type: string - x-nullable: true - - _key: contact - api_fieldname: contact - description: The name of the contact person for this account. - entity_fieldname: contact - example: J. Doe - in: body - maxLength: 100 - parameter_fieldname: contact - required: false - type: string - x-nullable: true - - _key: contract_number - api_fieldname: contract_number - description: Contract number of the customer. - entity_fieldname: contract_number - example: 1NX25_0001 - in: body - parameter_fieldname: contract_number - required: false - type: string - x-nullable: true - - _key: country - api_fieldname: country - description: The country part of the postal address. - entity_fieldname: country - example: United Kingdom - in: body - maxLength: 100 - parameter_fieldname: country - required: false - type: string - x-nullable: true - - _key: custom_fields - additionalProperties: - type: string - api_fieldname: custom_fields - description: Account's custom properties as key-value pairs. - entity_fieldname: custom_fields - in: body - parameter_fieldname: custom_fields - required: false - type: object - x-nullable: true - - _key: customer_number - api_fieldname: customer_number - description: Customer number of the customer. - entity_fieldname: customer_number - example: 1NC25_0001 - in: body - parameter_fieldname: customer_number - required: false - type: string - x-nullable: true - - _key: display_name - api_fieldname: display_name - description: The display name for the account. - entity_fieldname: display_name - example: ARM - in: body - maxLength: 100 - parameter_fieldname: display_name - required: false - type: string - x-nullable: true - - _key: email - api_fieldname: email - description: The company email address for this account. - entity_fieldname: email - example: info@arm.com - in: body - parameter_fieldname: email - pattern: ^(?=.{3,254}$).+\@.+ - required: false - type: string - x-nullable: true - - _key: end_market - api_fieldname: end_market - description: Account end market. - entity_fieldname: end_market - example: IT - in: body - parameter_fieldname: end_market - required: false - type: string - - _key: expiration_warning_threshold - api_fieldname: expiration_warning_threshold - description: Indicates how many days (1-180) before account expiration a notification - email is sent. - entity_fieldname: expiration_warning_threshold - example: '180' - in: body - maximum: 180 - minimum: 1 - parameter_fieldname: expiration_warning_threshold - required: false - type: integer - x-nullable: true - _key: id - api_fieldname: id - description: Account ID. + api_fieldname: certificate-issuer-id + description: Certificate issuer ID. entity_fieldname: id - example: 01619571e2e90242ac12000600000000 + external_param: false in: path - parameter_fieldname: account_id - pattern: '[a-f0-9]{32}' + name: certificate-issuer-id + parameter_fieldname: certificate-issuer-id required: true type: string - - _key: idle_timeout - api_fieldname: idle_timeout - description: The reference token expiration time, in minutes, for this account. - entity_fieldname: idle_timeout - example: '30' - in: body - maximum: 120 - minimum: 1 - parameter_fieldname: idle_timeout - required: false - type: integer - x-nullable: true - - _key: mfa_status - api_fieldname: mfa_status - description: The enforcement status of multi-factor authentication, either `enforced` - or `optional`. - entity_fieldname: mfa_status - enum: - - enforced - - optional - enum_reference: account_mfa_status_enum - in: body - parameter_fieldname: mfa_status - required: false - type: string - x-nullable: true - - _key: notification_emails - api_fieldname: notification_emails - description: A list of notification email addresses. - entity_fieldname: notification_emails - in: body - items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string - parameter_fieldname: notification_emails - required: false - type: array - x-nullable: true - - _key: password_policy - api_fieldname: password_policy - description: The password policy for this account. - entity_fieldname: password_policy - foreign_key: - entity: password_policy - group: Accounts - in: body - parameter_fieldname: password_policy - properties: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - entity_fieldname: minimum_length - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: false - type: object - x-nullable: true - - _key: password_recovery_expiration - api_fieldname: password_recovery_expiration - description: Indicates for how many minutes a password recovery email is valid. - entity_fieldname: password_recovery_expiration - format: int32 - in: body - maximum: 45 - minimum: 1 - parameter_fieldname: password_recovery_expiration - required: false - type: integer - - _key: phone_number - api_fieldname: phone_number - description: The phone number of a company representative. - entity_fieldname: phone_number - example: +44 (1223) 400 400 - in: body - maxLength: 100 - parameter_fieldname: phone_number - required: false - type: string - x-nullable: true - - _key: postal_code - api_fieldname: postal_code - description: The postal code part of the postal address. - entity_fieldname: postal_code - example: CB1 9NJ - in: body - maxLength: 100 - parameter_fieldname: postal_code - required: false - type: string - x-nullable: true - - _key: sales_contact - api_fieldname: sales_contact - description: Email address of the sales contact. - entity_fieldname: sales_contact - example: sales@arm.com - in: body - parameter_fieldname: sales_contact - pattern: ^(?=.{3,254}$).+\@.+ - required: false - type: string - x-nullable: true - - _key: state - api_fieldname: state - description: The state part of the postal address. - entity_fieldname: state - example: ' ' - in: body - maxLength: 100 - parameter_fieldname: state - required: false - type: string - x-nullable: true - group_id: Accounts - method: put - mode: update - operation_id: updateAccount + foreign_key: + entity: verification_response + group: Security + group_id: Security + method: post + mode: verify + operation_id: verifyCertificateIssuer pagination: false parameter_map: - account_id: id - path: /v3/accounts/{account_id} + certificate-issuer-id: id + path: /v3/certificate-issuers/{certificate-issuer-id}/verify request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: OK. schema: - description: Represents an account in requests and responses. + foreign_key: + entity: verification_response + group: Security properties: - - _key: address_line1 - api_fieldname: address_line1 - description: Postal address line 1. - entity_fieldname: address_line1 - example: 110 Fulbourn Rd - maxLength: 100 + - _key: message + api_fieldname: message + description: Provides details in case of failure. + entity_fieldname: message + example: Message describing the verification failure type: string - x-nullable: true - - _key: address_line2 - api_fieldname: address_line2 - description: Postal address line 2. - entity_fieldname: address_line2 - example: ' ' - maxLength: 100 + - _key: successful + api_fieldname: successful + description: Indicates whether the certificate issuer was verified successfully. + entity_fieldname: successful + example: false + type: boolean + type: object + - _key: '400' + description: Validation error + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. type: string - x-nullable: true - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - entity_fieldname: admin_email - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + - _key: object + description: 'Entity name: `error`.' type: string - x-nullable: true - - _key: admin_full_name - api_fieldname: admin_full_name - description: The full name of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_full_name - example: Admin Doe - maxLength: 100 + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: admin_id - api_fieldname: admin_id - description: The ID of the admin user created for this account. - entity_fieldname: admin_id - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: type + description: Error type. type: string - x-nullable: true - - _key: admin_key - api_fieldname: admin_key - description: The admin API key created for this account. Present only in - the response for account creation. - entity_fieldname: admin_key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. type: string - x-nullable: true - - _key: admin_name - api_fieldname: admin_name - description: The username of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_name - example: admin - maxLength: 100 + - _key: object + description: 'Entity name: `error`.' type: string - x-nullable: true - - _key: admin_password - api_fieldname: admin_password - description: The password of the admin user created for this account. Present - only in the response for account creation. - entity_fieldname: admin_password - example: PZf9eEUH43DAPE9ULINFeuj + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: aliases - api_fieldname: aliases - description: An array of aliases. - entity_fieldname: aliases + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object type: array - - _key: city - api_fieldname: city - description: The city part of the postal address. - entity_fieldname: city - example: Cambridge - maxLength: 100 + - _key: message + description: Error message. type: string - x-nullable: true - - _key: company - api_fieldname: company - description: The name of the company. - entity_fieldname: company - example: ARM Holdings Plc - maxLength: 100 + - _key: object + description: 'Entity name: `error`.' type: string - x-nullable: true - - _key: contact - api_fieldname: contact - description: The name of the contact person for this account. - entity_fieldname: contact - example: J. Doe - maxLength: 100 + - _key: request_id + description: Request ID from JWT. type: string - x-nullable: true - - _key: contract_number - api_fieldname: contract_number - description: Contract number of the customer. - entity_fieldname: contract_number - example: 1NX25_0001 + - _key: type + description: Error type. type: string - x-nullable: true - - _key: country - api_fieldname: country - description: The country part of the postal address. - entity_fieldname: country - example: United Kingdom - maxLength: 100 + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not found. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '424' + description: The request failed due to customer configured external service. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: verification_response + return_type: verification_response + summary: Verify certificate issuer. + unaggregated: true + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - CertificateIssuerInfo + - CertificateIssuerInfoListResponse + - CertificateIssuerRequest + - CertificateIssuerUpdateRequest + - CertificateIssuerVerifyResponse + tags: + - Security and identity - certificate issuers +- _key: certificate_issuer_config + field_renames: [] + fields: + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + example: 01648415a2a30242ac18000500000000 + readOnly: false + required: true + type: string + x-nullable: true + - _key: created_at + api_fieldname: created_at + description: Created UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. configuration. + example: 01648415a2a30242ac18000500000000 + readOnly: false + required: true + type: string + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + example: customer.dlms + readOnly: false + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Updated UTC time RFC3339. + example: '2017-02-01T00:00:00Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Security + methods: + - _key: create + description: "Configure the certificate issuer to use when creating device custom\ + \ certificates.\n
\n**Example:**\n\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"reference\": \"customer.dlms\",\n \"certificate_issuer_id\"\ + : \"01621a36719d507b9d48a91b00000000\"\n}'\n```" + drop_fields: + - object + - etag + - type + - filter + - is_custom + - id + - created_at + - updated_at + field_renames: [] + fields: + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 + in: body + parameter_fieldname: certificate_issuer_id + required: false + type: string + x-nullable: true + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + entity_fieldname: reference + example: customer.dlms + in: body + parameter_fieldname: reference + required: true + type: string + group_id: Security + method: post + mode: create + operation_id: createCertificateIssuerConfig + pagination: false + parameter_map: + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: OK. + schema: + foreign_key: + entity: certificate_issuer_config + group: Security + properties: + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 type: string x-nullable: true - _key: created_at api_fieldname: created_at - description: Creation UTC time RFC3339. + description: Created UTC time RFC3339. entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' + example: '2017-01-01T00:00:00Z' format: date-time type: string - - _key: custom_fields - additionalProperties: - type: string - api_fieldname: custom_fields - description: Account's custom properties as key-value pairs. - entity_fieldname: custom_fields - type: object - x-nullable: true - - _key: customer_number - api_fieldname: customer_number - description: Customer number of the customer. - entity_fieldname: customer_number - example: 1NC25_0001 - type: string - x-nullable: true - - _key: display_name - api_fieldname: display_name - description: The display name for the account. - entity_fieldname: display_name - example: ARM - maxLength: 100 - type: string - x-nullable: true - - _key: email - api_fieldname: email - description: The company email address for this account. - entity_fieldname: email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: end_market - api_fieldname: end_market - description: Account end market. - entity_fieldname: end_market - example: IT - type: string - _key: etag api_fieldname: etag - description: API resource entity version. + description: Entity instance signature. entity_fieldname: etag example: '1' type: string - - _key: expiration - api_fieldname: expiration - description: Expiration time of the account, as UTC time RFC3339. - entity_fieldname: expiration - format: date-time - type: string - x-nullable: true - - _key: expiration_warning_threshold - api_fieldname: expiration_warning_threshold - description: Indicates how many days (1-180) before account expiration a - notification email is sent. - entity_fieldname: expiration_warning_threshold - example: '180' - maximum: 180 - minimum: 1 - type: integer - x-nullable: true - _key: id api_fieldname: id - description: Account ID. + description: Certificate issuer ID. configuration. entity_fieldname: id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: idle_timeout - api_fieldname: idle_timeout - description: The reference token expiration time, in minutes, for this account. - entity_fieldname: idle_timeout - example: '30' - maximum: 120 - minimum: 1 - type: integer - x-nullable: true - - _key: limits - additionalProperties: - type: string - api_fieldname: limits - description: List of limits as key-value pairs if requested. - entity_fieldname: limits - type: object - x-nullable: true - - _key: mfa_status - api_fieldname: mfa_status - description: The enforcement status of multi-factor authentication, either - `enforced` or `optional`. - entity_fieldname: mfa_status - enum: - - enforced - - optional + example: 01648415a2a30242ac18000500000000 type: string - x-nullable: true - - _key: notification_emails - api_fieldname: notification_emails - description: A list of notification email addresses. - entity_fieldname: notification_emails - items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string - type: array - x-nullable: true + - _key: is_custom + api_fieldname: is_custom + entity_fieldname: is_custom + example: true + type: boolean - _key: object api_fieldname: object - description: 'Entity name: always `account`.' entity_fieldname: object enum: - - account + - certificate-issuer-configuration type: string - - _key: parent_account - api_fieldname: parent_account - description: Represents parent account contact details in responses. - entity_fieldname: parent_account - foreign_key: - entity: parent_account - group: Accounts - properties: - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user who is the contact person - of the parent account. - entity_fieldname: admin_email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: admin_name - api_fieldname: admin_name - description: The name of the admin user who is the contact person of the - parent account. - entity_fieldname: admin_name - example: J. Doe - maxLength: 100 - type: string - - _key: id - api_fieldname: id - description: The ID of the parent account. - entity_fieldname: id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - type: object - x-nullable: true - - _key: parent_id - api_fieldname: parent_id - description: The ID of the parent account, if any. - entity_fieldname: parent_id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + entity_fieldname: reference + example: customer.dlms type: string - x-nullable: true - - _key: password_policy - api_fieldname: password_policy - description: The password policy for this account. - entity_fieldname: password_policy - foreign_key: - entity: password_policy - group: Accounts - properties: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - entity_fieldname: minimum_length - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: - - minimum_length - type: object - x-nullable: true - - _key: password_recovery_expiration - api_fieldname: password_recovery_expiration - description: Indicates for how many minutes a password recovery email is - valid. - entity_fieldname: password_recovery_expiration + - _key: updated_at + api_fieldname: updated_at + description: Updated UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-02-01T00:00:00Z' + format: date-time + type: string + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. format: int32 - maximum: 45 - minimum: 1 type: integer - - _key: phone_number - api_fieldname: phone_number - description: The phone number of a company representative. - entity_fieldname: phone_number - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - - _key: policies - api_fieldname: policies - description: List of policies if requested. - entity_fieldname: policies - items: - description: Represents a feature policy. Either the feature or the resource - must be specified. - foreign_key: - entity: policy - group: Accounts - properties: - - _key: action - api_fieldname: action - description: Comma-separated list of actions, empty string represents - all actions. - entity_fieldname: action - example: GET - type: string - - _key: allow - api_fieldname: allow - description: True or false controlling whether an action is allowed - or not. - entity_fieldname: allow - example: true - type: boolean - - _key: feature - api_fieldname: feature - description: Feature name corresponding to this policy. - entity_fieldname: feature - example: update-campaigns - type: string - - _key: inherited - api_fieldname: inherited - description: Flag indicating whether this feature is inherited or overwritten - specifically. - entity_fieldname: inherited - example: false - readOnly: true - type: boolean - - _key: inherited_from - api_fieldname: inherited_from - description: An ID indicating where this policy is inherited from. - entity_fieldname: inherited_from - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - type: string - - _key: inherited_type - api_fieldname: inherited_type - description: Indicates the type of entity this policy is inherited from. - entity_fieldname: inherited_type - enum: - - account - - template - - tier_template - example: account - readOnly: true - type: string - - _key: resource - api_fieldname: resource - description: Resource that is protected by this policy. - entity_fieldname: resource - example: /v3/update-campaign - type: string - type: object - type: array - x-nullable: true - - _key: postal_code - api_fieldname: postal_code - description: The postal code part of the postal address. - entity_fieldname: postal_code - example: CB1 9NJ - maxLength: 100 - type: string - x-nullable: true - - _key: reason - api_fieldname: reason - description: A note with the reason for account status update. - entity_fieldname: reason - example: Subscription paid. - type: string - x-nullable: true - - _key: reference_note - api_fieldname: reference_note - description: A reference note for updating the status of the account. - entity_fieldname: reference_note - example: ARM-INT-0001 - type: string - x-nullable: true - - _key: sales_contact - api_fieldname: sales_contact - description: Email address of the sales contact. - entity_fieldname: sales_contact - example: sales@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: state - api_fieldname: state - description: The state part of the postal address. - entity_fieldname: state - example: ' ' - maxLength: 100 - type: string - x-nullable: true - - _key: status - api_fieldname: status - description: The status of the account. - entity_fieldname: status - enum: - - ENROLLING - - ACTIVE - - RESTRICTED - - SUSPENDED - example: ACTIVE - type: string - - _key: sub_accounts - api_fieldname: sub_accounts - description: List of sub accounts. Not available for developer users. - entity_fieldname: sub_accounts + - _key: fields + description: A list of request fields that failed validation. items: - description: Represents an account in requests and responses. - properties: - - _key: address_line1 - description: Postal address line 1. - example: 110 Fulbourn Rd - maxLength: 100 - type: string - x-nullable: true - - _key: address_line2 - description: Postal address line 2. - example: ' ' - maxLength: 100 - type: string - x-nullable: true - - _key: admin_email - description: The email address of the admin user created for this account. - Present only in the response for account creation. - example: admin@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: admin_full_name - description: The full name of the admin user created for this account. - Present only in the response for account creation. - example: Admin Doe - maxLength: 100 - type: string - x-nullable: true - - _key: admin_id - description: The ID of the admin user created for this account. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - x-nullable: true - - _key: admin_key - description: The admin API key created for this account. Present only - in the response for account creation. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000B40IkJADMANmAscAj0Ot0n2yeQnyt9tT - readOnly: true - type: string - x-nullable: true - - _key: admin_name - description: The username of the admin user created for this account. - Present only in the response for account creation. - example: admin - maxLength: 100 - type: string - x-nullable: true - - _key: admin_password - description: The password of the admin user created for this account. - Present only in the response for account creation. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - - _key: aliases - description: An array of aliases. - items: - pattern: '[\w\-._]{8,100}' - type: string - maxItems: 10 - type: array - - _key: city - description: The city part of the postal address. - example: Cambridge - maxLength: 100 - type: string - x-nullable: true - - _key: company - description: The name of the company. - example: ARM Holdings Plc - maxLength: 100 - type: string - x-nullable: true - - _key: contact - description: The name of the contact person for this account. - example: J. Doe - maxLength: 100 - type: string - x-nullable: true - - _key: contract_number - description: Contract number of the customer. - example: 1NX25_0001 - type: string - x-nullable: true - - _key: country - description: The country part of the postal address. - example: United Kingdom - maxLength: 100 - type: string - x-nullable: true - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: custom_fields - additionalProperties: - type: string - description: Account's custom properties as key-value pairs. - type: object - x-nullable: true - - _key: customer_number - description: Customer number of the customer. - example: 1NC25_0001 - type: string - x-nullable: true - - _key: display_name - description: The display name for the account. - example: ARM - maxLength: 100 - type: string - x-nullable: true - - _key: email - description: The company email address for this account. - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - x-nullable: true - - _key: end_market - description: Account end market. - example: IT - type: string - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: expiration - description: Expiration time of the account, as UTC time RFC3339. - format: date-time - type: string - x-nullable: true - - _key: expiration_warning_threshold - description: Indicates how many days (1-180) before account expiration - a notification email is sent. - example: '180' - maximum: 180 - minimum: 1 - type: integer - x-nullable: true - - _key: id - description: Account ID. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: idle_timeout - description: The reference token expiration time, in minutes, for this - account. - example: '30' - maximum: 120 - minimum: 1 - type: integer - x-nullable: true - - _key: limits - additionalProperties: - type: string - description: List of limits as key-value pairs if requested. - type: object - x-nullable: true - - _key: mfa_status - description: The enforcement status of multi-factor authentication, - either `enforced` or `optional`. - enum: - - enforced - - optional - type: string - x-nullable: true - - _key: notification_emails - description: A list of notification email addresses. - items: - pattern: ^(?=.{3,254}$).+\@.+ - type: string - type: array - x-nullable: true - - _key: object - description: 'Entity name: always `account`.' - enum: - - account + properties: + - _key: field + description: Field name. type: string - - _key: parent_account - description: Represents parent account contact details in responses. - foreign_key: - entity: parent_account - group: Accounts - properties: - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user who is the contact - person of the parent account. - entity_fieldname: admin_email - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: admin_name - api_fieldname: admin_name - description: The name of the admin user who is the contact person - of the parent account. - entity_fieldname: admin_name - example: J. Doe - maxLength: 100 - type: string - - _key: id - api_fieldname: id - description: The ID of the parent account. - entity_fieldname: id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - type: object - x-nullable: true - - _key: parent_id - description: The ID of the parent account, if any. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: Error message related to the field. type: string - x-nullable: true - - _key: password_policy - description: The password policy for this account. - foreign_key: - entity: password_policy - group: Accounts - properties: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - entity_fieldname: minimum_length - example: '8' - maximum: 512 - minimum: 8 - type: integer - required: - - minimum_length - type: object - x-nullable: true - - _key: password_recovery_expiration - description: Indicates for how many minutes a password recovery email - is valid. - format: int32 - maximum: 45 - minimum: 1 - type: integer - - _key: phone_number - description: The phone number of a company representative. - example: +44 (1223) 400 400 - maxLength: 100 + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - x-nullable: true - - _key: policies - description: List of policies if requested. - items: - description: Represents a feature policy. Either the feature or the - resource must be specified. - foreign_key: - entity: policy - group: Accounts - properties: - - _key: action - api_fieldname: action - description: Comma-separated list of actions, empty string represents - all actions. - entity_fieldname: action - example: GET - type: string - - _key: allow - api_fieldname: allow - description: True or false controlling whether an action is allowed - or not. - entity_fieldname: allow - example: true - type: boolean - - _key: feature - api_fieldname: feature - description: Feature name corresponding to this policy. - entity_fieldname: feature - example: update-campaigns - type: string - - _key: inherited - api_fieldname: inherited - description: Flag indicating whether this feature is inherited or - overwritten specifically. - entity_fieldname: inherited - example: false - readOnly: true - type: boolean - - _key: inherited_from - api_fieldname: inherited_from - description: An ID indicating where this policy is inherited from. - entity_fieldname: inherited_from - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - type: string - - _key: inherited_type - api_fieldname: inherited_type - description: Indicates the type of entity this policy is inherited - from. - entity_fieldname: inherited_type - enum: - - account - - template - - tier_template - example: account - readOnly: true - type: string - - _key: resource - api_fieldname: resource - description: Resource that is protected by this policy. - entity_fieldname: resource - example: /v3/update-campaign - type: string - type: object - type: array - x-nullable: true - - _key: postal_code - description: The postal code part of the postal address. - example: CB1 9NJ - maxLength: 100 + - _key: message + description: Error message related to the field. type: string - x-nullable: true - - _key: reason - description: A note with the reason for account status update. - example: Subscription paid. + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - x-nullable: true - - _key: reference_note - description: A reference note for updating the status of the account. - example: ARM-INT-0001 + - _key: message + description: Error message related to the field. type: string - x-nullable: true - - _key: sales_contact - description: Email address of the sales contact. - example: sales@arm.com - pattern: ^(?=.{3,254}$).+\@.+ + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '409' + description: A certificate issuer configuration with this reference already + exists. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - x-nullable: true - - _key: state - description: The state part of the postal address. - example: ' ' - maxLength: 100 + - _key: message + description: Error message related to the field. type: string - x-nullable: true - - _key: status - description: The status of the account. - enum: - - ENROLLING - - ACTIVE - - RESTRICTED - - SUSPENDED - example: ACTIVE + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_issuer_config + return_type: certificate_issuer_config + summary: Create certificate issuer configuration. + x_deprecation: null + x_filter: {} + - _key: delete + description: 'Delete certificate issuer configuration. + + You can only delete custom certificate configurations.' + drop_fields: + - object + - etag + - type + - filter + - is_custom + field_renames: [] + fields: + - _key: id + api_fieldname: certificate-issuer-configuration-id + description: Certificate issuer ID configuration. + entity_fieldname: id + external_param: false + in: path + name: certificate-issuer-configuration-id + parameter_fieldname: certificate-issuer-configuration-id + required: true + type: string + group_id: Security + method: delete + mode: delete + operation_id: deleteCertificateIssuerConfigByID + pagination: false + parameter_map: + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: No content. + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - - _key: sub_accounts - description: List of sub accounts. Not available for developer users. - items: [] - type: array - x-nullable: true - - _key: template_id - description: Account template ID. - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: Error message related to the field. type: string - x-nullable: true - - _key: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - example: '1' + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: message + description: Error message related to the field. type: string - - _key: upgraded_at - description: Time when upgraded to commercial account in UTC format - RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - end_market - - etag - - id - - object - - status - - tier type: object type: array - x-nullable: true - - _key: template_id - api_fieldname: template_id - description: Account template ID. - entity_fieldname: template_id - example: 01619571e7160242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not found. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_issuer_config + return_type: certificate_issuer_config + summary: Delete certificate issuer configuration. + x_deprecation: null + x_filter: {} + - _key: get_default + description: 'Provides the configured certificate issuer used when creating device + + certificates for LwM2M.' + drop_fields: + - object + - etag + - type + - filter + - is_custom + - id + - certificate_issuer_id + - reference + - created_at + - updated_at + field_renames: [] + fields: [] + group_id: Security + method: get + mode: get_default + operation_id: getCertificateIssuerConfig + pagination: false + parameter_map: + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations/lwm2m + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: certificate_issuer_config + group: Security + properties: + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 type: string x-nullable: true - - _key: tier - api_fieldname: tier - description: 'The tier level of the account; `0`: free tier, `1`: commercial - account, `2`: partner tier. Other values are reserved for the future.' - entity_fieldname: tier + - _key: created_at + api_fieldname: created_at + description: Created UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag example: '1' type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. configuration. + entity_fieldname: id + example: 01648415a2a30242ac18000500000000 + type: string + - _key: is_custom + api_fieldname: is_custom + entity_fieldname: is_custom + example: true + type: boolean + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-issuer-configuration + type: string + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + entity_fieldname: reference + example: customer.dlms + type: string - _key: updated_at api_fieldname: updated_at - description: Last update UTC time RFC3339. + description: Updated UTC time RFC3339. entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: upgraded_at - api_fieldname: upgraded_at - description: Time when upgraded to commercial account in UTC format RFC3339. - entity_fieldname: upgraded_at - example: '2018-02-14T15:24:14Z' + example: '2017-02-01T00:00:00Z' format: date-time type: string - required: - - end_market - - etag - - id - - object - - status - - tier type: object - _key: '400' - description: Error in input data format. + description: Validation error. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '401' - description: Authentication failure. + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -8531,92 +18682,367 @@ entities: schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: + - _key: field + description: Field name. + type: string - _key: message - description: Message describing the error condition. + description: Error message related to the field. type: string - - _key: name - description: Name of the field which caused the error. + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: certificate_issuer_config + return_type: certificate_issuer_config + summary: Get certificate issuer configuration. + x_deprecation: null + x_filter: {} + - _key: list + description: 'Get certificate issuer configurations, optionally filtered by reference. + +
+ + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json;charset=UTF-8'' \ + + ``` + +
+ + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json;charset=UTF-8'' \ + + ``` + + **Note:** This endpoint does not implement pagination, and therefore ignores + list control parameters such as `limit` or `after`.' + drop_fields: + - object + - etag + - type + - filter + - is_custom + - has_more + - total_count + - data + - reference__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: The number of results to return (2-1000). Values outside of this + range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: certificate_issuer_config + group: Security + foreign_key_priority: self + group_id: Security + method: get + mode: list + operation_id: getCertificateIssuerConfigs + pagination: true + parameter_map: + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. + schema: + foreign_key: + entity: certificate_issuer_config + group: Security + pagination: true + properties: + - _key: after + api_fieldname: after + description: An offset token for current page. + entity_fieldname: after + example: '01631667477600000000000100100374' + type: string + - _key: data + api_fieldname: data + description: List of certificate issuers. + entity_fieldname: data + items: + foreign_key: + entity: certificate_issuer_config + group: Security + properties: + - _key: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + example: 01648415a2a30242ac18000500000000 + type: string + x-nullable: true + - _key: created_at + description: Created UTC time RFC3339. + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: etag + description: Entity instance signature. + example: '1' + type: string + - _key: id + description: Certificate issuer ID. configuration. + example: 01648415a2a30242ac18000500000000 + type: string + - _key: is_custom + example: true + type: boolean + - _key: object + enum: + - certificate-issuer-configuration + type: string + - _key: reference + description: The certificate name to which the certificate issuer configuration + applies. + example: customer.dlms + type: string + - _key: updated_at + description: Updated UTC time RFC3339. + example: '2017-02-01T00:00:00Z' + format: date-time + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: More results are available. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return (2-1000). Values outside of + this range are set to the closest limit. + entity_fieldname: limit + example: 50 + maximum: 1000 + minimum: 2 + type: integer + - _key: object + api_fieldname: object + description: The type of this API object is `list`. + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: Record order based on creation time. + entity_fieldname: order + example: DESC + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + example: 1 + format: integer + type: integer + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - - _key: '404' - description: Account with the given ID not found. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: + - _key: field + description: Field name. + type: string - _key: message - description: Message describing the error condition. + description: Error message related to the field. type: string - - _key: name - description: Name of the field which caused the error. + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string + required: + - code + - fields + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. + format: int32 + type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -8625,329 +19051,183 @@ entities: return_info: custom: false self: true - type: account - return_type: account - summary: Update attributes of an existing account. + type: certificate_issuer_config + return_type: paginated_response(certificate_issuer_config) + summary: Get certificate issuer configurations. x_deprecation: null - x_filter: {} - - _key: user_invitations - description: 'Retrieve details of all active user invitations sent for new or - existing users. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations - \ - - -H ''Authorization: Bearer '' - - ```' + x_filter: + reference: + - eq + - _key: read + description: Provides the configured certificate issuer. drop_fields: - object - etag - type - filter - - sub_accounts - - total_count - - has_more - - data - - login_profiles__eq + - is_custom + - certificate_issuer_id + - reference + - created_at + - updated_at field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - _key: id - api_fieldname: account_id - description: Account ID. + api_fieldname: id + description: Certificate issuer ID. configuration. entity_fieldname: id - external_param: false + example: 01648415a2a30242ac18000500000000 in: path - name: account_id - parameter_fieldname: account_id + parameter_fieldname: certificate-issuer-configuration-id required: true type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: account_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: subtenant_user_invitation - group_id: Accounts + group_id: Security method: get - mode: user_invitations - notes: This lists the user invitations of the subtenant account. - operation_id: getAllAccountInvitations - pagination: true + mode: read + operation_id: getCertificateIssuerConfigByID + pagination: false parameter_map: - account_id: id - path: /v3/accounts/{account_id}/user-invitations + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: OK. schema: foreign_key: - entity: user_invitation - group: Accounts - pagination: true + entity: certificate_issuer_config + group: Security properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: Represents an user invitation in responses. - foreign_key: - entity: user_invitation - group: Accounts - properties: - - _key: account_id - description: The ID of the account the user is invited to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: email - description: Email address of the invited user. - example: friend@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: expiration - description: Invitation expiration as UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: groups - description: A list of IDs of the groups the user is invited to. - items: - type: string - type: array - - _key: id - description: The ID of the invitation. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: login_profiles - description: A list of login profiles for the user. Specified as the - identity providers the user is associated with. - items: - description: Represents a user login profile in Device Management. - foreign_key: - entity: login_profile - group: Accounts - properties: - - _key: id - _override: true - api_fieldname: id - description: ID of the identity provider. - entity_fieldname: id - readOnly: false - type: string - - _key: name - _override: true - api_fieldname: name - description: Name of the identity provider. - entity_fieldname: name - readOnly: false - type: string - - _key: type - api_fieldname: type - description: Identity provider type. - entity_fieldname: type - enum: - - NATIVE - - MBED - - SAML2 - - OIDC - readOnly: true - type: string - required: - - id - type: object - type: array - x-nullable: true - - _key: object - description: 'Entity name: always ''user-invitation''' - enum: - - user-invitation - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: user_id - description: The ID of the invited user. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - required: - - account_id - - email - - etag - - id - - object - - user_id - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false + x-nullable: true + - _key: created_at + api_fieldname: created_at + description: Created UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. configuration. + entity_fieldname: id + example: 01648415a2a30242ac18000500000000 + type: string + - _key: is_custom + api_fieldname: is_custom + entity_fieldname: is_custom + example: true type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - _key: object api_fieldname: object - description: 'Entity name: always `list`.' entity_fieldname: object enum: - - list + - certificate-issuer-configuration type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: user_invitation_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + entity_fieldname: reference + example: customer.dlms type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 + - _key: updated_at + api_fieldname: updated_at + description: Updated UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-02-01T00:00:00Z' + format: date-time + type: string + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. format: int32 type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string required: - - data - - has_more - - limit + - code + - fields + - message - object - - total_count + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -8958,92 +19238,76 @@ entities: schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '404' - description: An account with the specified ID does not exist. + description: Not found. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -9051,530 +19315,197 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_user_invitation - return_type: paginated_response(subtenant_user_invitation) - summary: Get the details of all user invitations. + self: true + type: certificate_issuer_config + return_type: certificate_issuer_config + summary: Get certificate issuer configuration. x_deprecation: null - x_filter: - login_profiles: - - eq - - _key: users - description: 'Retrieve details of all users. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users - \ - - -H ''Authorization: Bearer '' - - ```' + x_filter: {} + - _key: update + additional_operations: + - notes: After retrieving the resource using the `lwm2m` method, it can modified + using using this SDK method. + operation_id: updateCertificateIssuerConfig + description: Update certificate issuer configuration. drop_fields: - object - etag - type - filter - - sub_accounts - - total_count - - has_more - - data - - email__eq - - status__eq - - status__in - - status__nin - - login_profiles__eq + - is_custom + - reference + - created_at + - updated_at field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 + in: body + parameter_fieldname: certificate_issuer_id required: false type: string + x-nullable: true - _key: id - api_fieldname: account_id - description: Account ID. + api_fieldname: id + description: Certificate issuer ID. configuration. entity_fieldname: id - external_param: false + example: 01648415a2a30242ac18000500000000 in: path - name: account_id - parameter_fieldname: account_id + parameter_fieldname: certificate-issuer-configuration-id required: true type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: account_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: subtenant_user - group_id: Accounts - method: get - mode: users - notes: This lists the users of the subtenant account. - operation_id: getAllAccountUsers - pagination: true + group_id: Security + method: put + mode: update + operation_id: updateCertificateIssuerConfigByID + pagination: false parameter_map: - account_id: id - path: /v3/accounts/{account_id}/users + certificate-issuer-configuration-id: id + path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: OK. schema: foreign_key: - entity: user - group: Accounts - pagination: true + entity: certificate_issuer_config + group: Security properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false + - _key: certificate_issuer_id + api_fieldname: certificate_issuer_id + description: 'Certificate issuer ID. + + Null if Device Management internal HSM is used.' + entity_fieldname: certificate_issuer_id + example: 01648415a2a30242ac18000500000000 type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: Represents a user in Device Management. - foreign_key: - entity: user - group: Accounts - properties: - - _key: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: active_sessions - description: List of active user sessions. - items: - description: Represents an active user session. - foreign_key: - entity: active_session - group: Accounts - properties: - - _key: account_id - api_fieldname: account_id - description: The UUID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - entity_fieldname: ip_address - example: 127.0.0.1 - type: string - - _key: login_time - api_fieldname: login_time - description: The login time of the user. - entity_fieldname: login_time - example: '2018-02-14T17:52:07Z' - format: date-time - type: string - - _key: object - api_fieldname: object - description: 'Entity name: always ''user-session''' - entity_fieldname: object - enum: - - user-session - type: string - - _key: reference_token - api_fieldname: reference_token - description: The reference token. - entity_fieldname: reference_token - example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk - type: string - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - entity_fieldname: user_agent - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 - type: string - required: - - account_id - - ip_address - - login_time - - object - - reference_token - - user_agent - type: object - type: array - - _key: address - description: Address. - example: 110 Fulbourn Rd, Cambridge, United Kingdom - type: string - x-nullable: true - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - description: A timestamp of the user creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - type: integer - - _key: custom_fields - additionalProperties: - type: string - description: User's account-specific custom properties. The value is - a string. - type: object - x-nullable: true - - _key: email - description: The email address. - example: user@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: email_verified - description: A flag indicating whether the user's email address has - been verified or not. - example: true - type: boolean - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: full_name - description: The full name of the user. - example: User Doe - maxLength: 100 - type: string - x-nullable: true - - _key: groups - description: A list of IDs of the groups this user belongs to. - items: - type: string - type: array - - _key: id - description: The ID of the user. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: is_gtc_accepted - description: A flag indicating that the user has accepted General Terms - and Conditions. - example: true - type: boolean - - _key: is_marketing_accepted - description: A flag indicating that the user has consented to receive - marketing information. - example: true - type: boolean - - _key: is_totp_enabled - description: A flag indicating whether two-factor authentication (TOTP) - has been enabled. - example: true - type: boolean - - _key: last_login_time - description: A timestamp of the latest login of the user, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - - _key: login_history - description: Timestamps, succeedings, IP addresses and user agent information - of the last five logins of the user, with timestamps in RFC3339 format. - items: - description: Represents an entry in login history. - foreign_key: - entity: login_history - group: Accounts - properties: - - _key: date - api_fieldname: date - description: UTC time RFC3339 for this login attempt. - entity_fieldname: date - example: '2018-02-14T17:52:07Z' - format: date-time - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - entity_fieldname: ip_address - example: 127.0.0.1 - type: string - - _key: success - api_fieldname: success - description: Flag indicating whether login attempt was successful - or not. - entity_fieldname: success - example: true - type: boolean - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - entity_fieldname: user_agent - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 - type: string - required: - - date - - ip_address - - success - - user_agent - type: object - maxItems: 5 - type: array - - _key: login_profiles - description: A list of login profiles for the user. Specified as the - identity providers the user is associated with. - items: - description: Represents a user login profile in Device Management. - foreign_key: - entity: login_profile - group: Accounts - properties: - - _key: id - _override: true - api_fieldname: id - description: ID of the identity provider. - entity_fieldname: id - readOnly: false - type: string - - _key: name - _override: true - api_fieldname: name - description: Name of the identity provider. - entity_fieldname: name - readOnly: false - type: string - - _key: type - api_fieldname: type - description: Identity provider type. - entity_fieldname: type - enum: - - NATIVE - - MBED - - SAML2 - - OIDC - readOnly: true - type: string - required: - - id - type: object - type: array - x-nullable: true - - _key: object - description: 'Entity name: always `user`.' - enum: - - user - type: string - - _key: password - description: The password when creating a new user. It will be generated - when not present in the request. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - - _key: password_changed_time - description: A timestamp of the latest change of the user password, - in milliseconds. - example: 1518630727688 - format: int64 - type: integer - - _key: phone_number - description: Phone number. - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - - _key: status - description: The status of the user. ENROLLING state indicates that - the user is in the middle of the enrollment process. INVITED means - that the user has not accepted the invitation request. RESET means - that the password must be changed immediately. INACTIVE users are - locked out and not permitted to use the system. - enum: - - ENROLLING - - INVITED - - ACTIVE - - RESET - - INACTIVE - example: ACTIVE - type: string - - _key: totp_scratch_codes - description: A list of scratch codes for the two-factor authentication. - Visible only when 2FA is requested to be enabled or the codes regenerated. - items: - type: string - type: array - x-nullable: true - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: username - description: A username. - example: admin - pattern: '[\w\-,._@+=]{4,30}' - type: string - x-nullable: true - required: - - account_id - - email - - etag - - id - - object - - status - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false + x-nullable: true + - _key: created_at + api_fieldname: created_at + description: Created UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Certificate issuer ID. configuration. + entity_fieldname: id + example: 01648415a2a30242ac18000500000000 + type: string + - _key: is_custom + api_fieldname: is_custom + entity_fieldname: is_custom + example: true type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - _key: object api_fieldname: object - description: 'Entity name: always `list`.' entity_fieldname: object enum: - - list + - certificate-issuer-configuration type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: user_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: reference + api_fieldname: reference + description: The certificate name to which the certificate issuer configuration + applies. + entity_fieldname: reference + example: customer.dlms type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 + - _key: updated_at + api_fieldname: updated_at + description: Updated UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-02-01T00:00:00Z' + format: date-time + type: string + type: object + - _key: '400' + description: Validation error. + schema: + properties: + - _key: code + description: Error code. Correlates with response status code. format: int32 type: integer + - _key: fields + description: A list of request fields that failed validation. + items: + properties: + - _key: field + description: Field name. + type: string + - _key: message + description: Error message related to the field. + type: string + type: object + type: array + - _key: message + description: Error message. + type: string + - _key: object + description: 'Entity name: `error`.' + type: string + - _key: request_id + description: Request ID from JWT. + type: string + - _key: type + description: Error type. + type: string required: - - data - - has_more - - limit + - code + - fields + - message - object - - total_count + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: Unauthorized. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -9585,92 +19516,76 @@ entities: schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id - type type: object - _key: '404' - description: An account with the given ID does not exist. + description: Not found. schema: properties: - _key: code - description: HTTP response code - example: 400 + description: Error code. Correlates with response status code. format: int32 type: integer - _key: fields - description: Request fields which failed validation. + description: A list of request fields that failed validation. items: properties: - - _key: message - description: Message describing the error condition. + - _key: field + description: Field name. type: string - - _key: name - description: Name of the field which caused the error. + - _key: message + description: Error message related to the field. type: string - required: - - name - - message type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error + description: Error message. type: string - _key: object - description: Entity name, always `error`. - enum: - - error + description: 'Entity name: `error`.' type: string - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + description: Request ID from JWT. type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + description: Error type. type: string required: - code + - fields - message - object - request_id @@ -9678,197 +19593,81 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_user - return_type: paginated_response(subtenant_user) - summary: Get the details of all users. + self: true + type: certificate_issuer_config + return_type: certificate_issuer_config + summary: Update certificate issuer configuration. x_deprecation: null - x_filter: - email: - - eq - login_profiles: - - eq - status: - - eq - - in - - nin + x_filter: {} primary_key_field: id swagger_models: - - AccountCreationReq - - AccountInfo - - AccountInfoList - - AccountUpdateRootReq - - ApiKeyInfoRespList - - BrandingColorList - - BrandingImageList - - TrustedCertificateRespList - - UserInfoRespList - - UserInvitationRespList + - CertificateIssuerConfigListResponse + - CertificateIssuerConfigRequest + - CertificateIssuerConfigResponse + - CreateCertificateIssuerConfig tags: - - Account - profile - - Tenant accounts - accounts - - Tenant accounts - API keys - - Tenant accounts - users - - Tenant accounts - user invitations - - Tenant device security - certificates - - Tenant user interface configuration - colors - - Tenant user interface configuration - images -- _key: active_session - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: The UUID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - example: 127.0.0.1 - readOnly: true - required: false - type: string - - _key: login_time - api_fieldname: login_time - description: The login time of the user. - example: '2018-02-14T17:52:07Z' - format: date-time - readOnly: true - required: false - type: string - - _key: reference_token - api_fieldname: reference_token - description: The reference token. - example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk - readOnly: true - required: false - type: string - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/41.0.2227.1 Safari/537.36 - readOnly: true - required: false - type: string - group_id: Accounts - methods: [] - primary_key_field: null - swagger_models: - - ActiveSession - tags: [] -- _key: api_key + - Security and identity - certificate issuer configurations +- _key: dark_theme_color field_renames: [] fields: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - readOnly: true - required: false - type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - readOnly: true - required: false - type: integer - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - items: - type: string - readOnly: false - required: false - type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - readOnly: false - required: true - type: string - - _key: key - api_fieldname: key - description: The API key. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - readOnly: true - required: false - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - example: 1518630727688 - format: int64 - readOnly: true - required: false - type: integer - - _key: name - api_fieldname: name - description: The display name for the API key. - example: API key gorgon - maxLength: 100 - readOnly: false - required: true - type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' readOnly: false required: false type: string - - _key: status - api_fieldname: status - description: The status of the API key. + x-nullable: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. enum: - - ACTIVE - - INACTIVE - enum_reference: api_key_status_enum - example: ACTIVE + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: dark_theme_color_reference_enum + is_primary_key: true readOnly: false required: false type: string - _key: updated_at api_fieldname: updated_at - description: Last update UTC time RFC3339. + description: Last update time in UTC. example: '2018-02-14T15:24:14Z' format: date-time readOnly: true required: false type: string - group_id: Accounts + group_id: Branding methods: - - _key: create - description: 'Create a new API key. + - _key: delete + description: 'Resets the branding color to its dark theme default. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/api-keys -d ''{"name": "MyKey1"}'' + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -9876,177 +19675,145 @@ entities: - etag - type - filter - - id - - created_at - - updated_at - - key - - creation_time - - last_login_time - - account_id field_renames: [] fields: - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - in: body - items: - type: string - parameter_fieldname: groups - required: false - type: array - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - in: body - maxLength: 100 - parameter_fieldname: name + - _key: reference + _override: true + api_fieldname: reference + description: The name of the branding color. + entity_fieldname: reference + enum: &id002 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference required: true type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: &id001 - - ACTIVE - - INACTIVE - enum_reference: api_key_status_enum - example: ACTIVE - in: body - parameter_fieldname: status - required: false - type: string - group_id: Accounts - method: post - mode: create - operation_id: createApiKey + group_id: Branding + method: delete + mode: delete + operation_id: resetDarkColor pagination: false - parameter_map: - apikey_id: id - path: /v3/api-keys + path: /v3/branding-colors/dark/{reference} request_body: json request_content_type: application/json responses: - - _key: '201' - description: New entity created. + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. schema: - description: Represents an API key in Device Management. - foreign_key: - entity: subtenant_api_key - group: Accounts properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 + - _key: code + description: HTTP response code + example: 400 + format: int32 type: integer - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' - type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups + - _key: fields + description: Request fields which failed validation. items: - type: string + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 type: integer - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - maxLength: 100 + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: 'Entity name: always ''api-key''' - entity_fieldname: object + description: Entity name, always `error`. enum: - - api-key - type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - error type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: - - ACTIVE - - INACTIVE - example: ACTIVE + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - etag - - id - - key - - name + - code + - message - object + - request_id + - type type: object - - _key: '400' - description: Error in input data, for example, missing display name. + - _key: '404' + description: Color not found. schema: properties: - _key: code @@ -10093,6 +19860,169 @@ entities: - request_id - type type: object + return_info: + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Reset branding color to default. + x_deprecation: null + x_filter: {} + - _key: list + description: 'Retrieve the dark theme branding colors. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - limit + - after + - order + - total_count + - has_more + - data + field_renames: [] + fields: + - _key: reference + _override: true + api_fieldname: reference + entity_fieldname: reference + is_primary_key: true + type: string + foreign_key: + entity: dark_theme_color + group: Branding + foreign_key_priority: self + group_id: Branding + method: get + mode: list + operation_id: getDarkColors + pagination: true + path: /v3/branding-colors/dark + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: dark_theme_color + group: Branding + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + foreign_key: + entity: dark_theme_color + group: Branding + properties: + - _key: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' + type: string + x-nullable: true + - _key: object + description: 'Entity name: always ''branding_color''' + enum: + - branding_color + readOnly: true + type: string + - _key: reference + _override: true + description: Color name. + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + is_primary_key: true + type: string + - _key: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return, or equal to `total_count`. + entity_fieldname: limit + example: 50 + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object - _key: '401' description: Authentication failure. schema: @@ -10192,22 +20122,23 @@ entities: return_info: custom: false self: true - type: api_key - return_type: api_key - summary: Create a new API key. + type: dark_theme_color + return_type: paginated_response(dark_theme_color) + summary: Get dark theme branding colors. x_deprecation: null x_filter: {} - - _key: delete - description: 'Delete the API key. + - _key: read + description: 'Retrieve the requested dark theme branding color. **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/{reference} + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -10215,31 +20146,86 @@ entities: - etag - type - filter + - color + - updated_at field_renames: [] fields: - - _key: id - api_fieldname: apikey_id - description: The ID of the API key to delete. - entity_fieldname: id - external_param: false + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id002 + enum_reference: dark_theme_color_reference_enum in: path - name: apikey_id - parameter_fieldname: apikey_id + is_primary_key: true + name: reference required: true type: string - group_id: Accounts - method: delete - mode: delete - operation_id: deleteApiKey + group_id: Branding + method: get + mode: read + operation_id: getDarkColor pagination: false - parameter_map: - apikey_id: id - path: /v3/api-keys/{apikey_id} + path: /v3/branding-colors/dark/{reference} request_body: json request_content_type: application/json responses: - - _key: '204' - description: Deleted successfully. + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: subtenant_light_theme_color + group: Branding + properties: + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + type: string + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_color''' + entity_fieldname: object + enum: + - branding_color + readOnly: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + is_primary_key: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object - _key: '401' description: Authentication failure. schema: @@ -10281,15 +20267,247 @@ entities: description: Error type used to categorise the error. example: validation_error type: string - required: - - code - - message - - object - - request_id - - type + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Color not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: dark_theme_color + return_type: dark_theme_color + summary: Get dark theme branding color. + x_deprecation: null + x_filter: {} + - _key: update + additional_operations: + - notes: Bulk operation is not appriate for SDK's entity model, this functionality + is covered by the update method. + operation_id: bulkSetDarkColors + description: 'Update a dark theme branding color. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/primary + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "color": "#f3f93e" }'' + + ```' + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color + required: false + type: string + x-nullable: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id002 + enum_reference: dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true + required: false + type: string + group_id: Branding + method: put + mode: update + operation_id: setDarkColor + pagination: false + path: /v3/branding-colors/dark/{reference} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Color has been set successfully. + schema: + foreign_key: + entity: subtenant_light_theme_color + group: Branding + properties: + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + type: string + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_color''' + entity_fieldname: object + enum: + - branding_color + readOnly: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + is_primary_key: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string type: object - - _key: '403' - description: Forbidden. + - _key: '400' + description: Error in input data format. schema: properties: - _key: code @@ -10336,8 +20554,8 @@ entities: - request_id - type type: object - - _key: '404' - description: The API key with the specified ID does not exist. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -10384,250 +20602,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: api_key - return_type: api_key - summary: Delete API key. - x_deprecation: null - x_filter: {} - - _key: list - description: 'Retrieve API keys in an array, optionally filtered by the owner. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - total_count - - has_more - - data - - key__eq - - owner__eq - field_renames: [] - fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: api_key_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: api_key - group: Accounts - foreign_key_priority: self - group_id: Accounts - method: get - mode: list - operation_id: getAllApiKeys - pagination: true - parameter_map: - apikey_id: id - path: /v3/api-keys - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: api_key - group: Accounts - pagination: true - properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: Represents an API key in Device Management. - foreign_key: - entity: api_key - group: Accounts - properties: - - _key: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - description: The timestamp of the API key creation in the storage, in - milliseconds. - example: 1518630727683 - format: int64 - type: integer - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: groups - description: A list of group IDs this API key belongs to. - items: - type: string - type: array - - _key: id - description: The ID of the API key. - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: key - description: The API key. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - - _key: name - description: The display name for the API key. - example: API key gorgon - maxLength: 100 - type: string - - _key: object - description: 'Entity name: always ''api-key''' - enum: - - api-key - type: string - - _key: owner - description: The owner of this API key, who is the creator by default. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: status - description: The status of the API key. - enum: - - ACTIVE - - INACTIVE - example: ACTIVE - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - required: - - etag - - id - - key - - name - - object - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: The number of results to return, or equal to `total_count`. - entity_fieldname: limit - example: 50 - format: int32 - type: integer - - _key: object - api_fieldname: object - description: 'Entity name: always `list`.' - entity_fieldname: object - enum: - - list - type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - - _key: '401' - description: Authentication failure. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -10674,8 +20650,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '404' + description: Color not found. schema: properties: - _key: code @@ -10725,26 +20701,99 @@ entities: return_info: custom: false self: true - type: api_key - return_type: paginated_response(api_key) - summary: Get all API keys. + type: dark_theme_color + return_type: dark_theme_color + summary: Updates a dark theme branding color. x_deprecation: null - x_filter: - key: - - eq - owner: - - eq - - _key: me - description: 'Retrieve API key details. + x_filter: {} + primary_key_field: reference + swagger_models: + - BrandingColor + - BrandingColorList + tags: + - User interface configuration - colors +- _key: dark_theme_image + field_renames: [] + fields: + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: dark_theme_image_reference_enum + is_primary_key: true + readOnly: false + required: false + type: string + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Branding + methods: + - _key: delete + description: 'Revert an account branding image to dark theme default. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/me \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/clear + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -10752,140 +20801,118 @@ entities: - etag - type - filter - - id - - created_at - - updated_at - - key - - name - - groups - - owner - - status - - creation_time - - last_login_time - - account_id field_renames: [] - fields: [] - group_id: Accounts - method: get - mode: me - notes: This is provided by the SDK to avoid listing to retrieve the user's own - API Key. - operation_id: getMyApiKey + fields: + - _key: reference + _override: true + api_fieldname: reference + description: Name of the branding images (icon or picture). + entity_fieldname: reference + enum: &id003 + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + group_id: Branding + method: post + mode: delete + operation_id: clearDarkImage pagination: false - parameter_map: - apikey_id: id - path: /v3/api-keys/me + path: /v3/branding-images/dark/{reference}/clear request_body: json request_content_type: application/json responses: - - _key: '200' - description: Successful operation. + - _key: '204' + description: Image reverted successfully. + - _key: '401' + description: Authentication failure. schema: - description: Represents an API key in Device Management. - foreign_key: - entity: subtenant_api_key - group: Accounts properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' - type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - items: - type: string - type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - maxLength: 100 + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: 'Entity name: always ''api-key''' - entity_fieldname: object + description: Entity name, always `error`. enum: - - api-key - type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - error type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: - - ACTIVE - - INACTIVE - example: ACTIVE + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - etag - - id - - key - - name + - code + - message - object + - request_id + - type type: object - - _key: '401' - description: Authentication failure. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -10932,8 +20959,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '404' + description: Unknown image reference. schema: properties: - _key: code @@ -10983,23 +21010,20 @@ entities: return_info: custom: false self: true - type: api_key - return_type: api_key - summary: Get API key details. + type: dark_theme_image + return_type: dark_theme_image + summary: Revert an image to dark theme default. x_deprecation: null x_filter: {} - - _key: policy_groups - description: 'Retrieve groups associated with the API key. + - _key: list + description: 'Retrieve metadata for all dark theme branding images. **Example:** - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id}/groups - \ + `curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -11007,83 +21031,30 @@ entities: - etag - type - filter + - limit + - after + - order - total_count - has_more - data field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: id - api_fieldname: apikey_id - description: The ID of the API key. - entity_fieldname: id - external_param: false - in: path - name: apikey_id - parameter_fieldname: apikey_id - required: true - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: api_key_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: reference + _override: true + api_fieldname: reference + entity_fieldname: reference + is_primary_key: true type: string foreign_key: - entity: policy_group - group_id: Accounts + entity: dark_theme_image + group: Branding + foreign_key_priority: self + group_id: Branding method: get - mode: policy_groups - operation_id: getGroupsOfApikey + mode: list + operation_id: getAllDarkImageData pagination: true - parameter_map: - apikey_id: id - path: /v3/api-keys/{apikey_id}/groups + path: /v3/branding-images/dark request_body: json request_content_type: application/json responses: @@ -11091,84 +21062,87 @@ entities: description: Successful operation. schema: foreign_key: - entity: subtenant_policy_group - group: Accounts + entity: dark_theme_image + group: Branding pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after pattern: '[a-f0-9]{32}' - required: false type: string - _key: data api_fieldname: data description: A list of entities. entity_fieldname: data items: - description: This object contains basic information about groups. foreign_key: - entity: subtenant_policy_group - group: Accounts + entity: dark_theme_image + group: Branding properties: - - _key: account_id - description: The ID of the account this group belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: apikey_count - description: The number of API keys in this group. - example: 0 - format: int32 - type: integer - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: id - description: The ID of the group. - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: name - description: The name of the group. - example: Administrators - maxLength: 100 - type: string - _key: object - description: 'Entity name: always `group`.' + description: 'Entity name: always ''branding_image''' enum: - - group + - branding_image + readOnly: true + type: string + - _key: reference + _override: true + description: Name of the image. + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + is_primary_key: true + type: string + - _key: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true type: string - _key: updated_at - description: Last update UTC time RFC3339. + description: Last update time in UTC. example: '2018-02-14T15:24:14Z' format: date-time + readOnly: true type: string - - _key: user_count - description: The number of users in this group. - example: 1 - format: int32 - type: integer - required: - - account_id - - apikey_count - - etag - - id - - name - - object - - user_count type: object type: array - _key: has_more @@ -11179,16 +21153,10 @@ entities: type: boolean - _key: limit api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. + description: The number of results to return, or equal to `total_count`. entity_fieldname: limit example: 50 - external_param: true format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false type: integer - _key: object api_fieldname: object @@ -11199,19 +21167,12 @@ entities: type: string - _key: order api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' entity_fieldname: order enum: - ASC - DESC - enum_reference: subtenant_user_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false type: string - _key: total_count api_fieldname: total_count @@ -11323,73 +21284,26 @@ entities: - request_id - type type: object - - _key: '404' - description: An API key with the given ID does not exist. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object return_info: custom: false - self: false - type: policy_group - return_type: paginated_response(policy_group) - summary: Get groups of the API key. + self: true + type: dark_theme_image + return_type: paginated_response(dark_theme_image) + summary: Get metadata of all dark theme images. x_deprecation: null x_filter: {} - _key: read - description: 'Retrieve API key details. + description: 'Retrieve metadata for one account dark theme branding image. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference} + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -11397,144 +21311,107 @@ entities: - etag - type - filter - - created_at + - static_uri - updated_at - - key - - name - - groups - - owner - - status - - creation_time - - last_login_time - - account_id field_renames: [] fields: - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id003 + enum_reference: dark_theme_image_reference_enum in: path - parameter_fieldname: apikey_id - pattern: '[a-f0-9]{32}' + is_primary_key: true + name: reference required: true type: string - group_id: Accounts + group_id: Branding method: get mode: read - operation_id: getApiKey + operation_id: getDarkImageData pagination: false - parameter_map: - apikey_id: id - path: /v3/api-keys/{apikey_id} + path: /v3/branding-images/dark/{reference} request_body: json request_content_type: application/json responses: - _key: '200' description: Successful operation. schema: - description: Represents an API key in Device Management. foreign_key: - entity: subtenant_api_key - group: Accounts + entity: subtenant_light_theme_image + group: Branding properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' - type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - items: - type: string - type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - maxLength: 100 - type: string - _key: object api_fieldname: object - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''branding_image''' entity_fieldname: object enum: - - api-key + - branding_image + readOnly: true type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + is_primary_key: true type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: - - ACTIVE - - INACTIVE - example: ACTIVE + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true type: string - _key: updated_at api_fieldname: updated_at - description: Last update UTC time RFC3339. + description: Last update time in UTC. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time + readOnly: true type: string - required: - - etag - - id - - key - - name - - object type: object - _key: '401' description: Authentication failure. @@ -11633,7 +21510,7 @@ entities: - type type: object - _key: '404' - description: API key with the specified ID does not exist. + description: Unknown image reference. schema: properties: - _key: code @@ -11683,213 +21560,146 @@ entities: return_info: custom: false self: true - type: api_key - return_type: api_key - summary: Get API key details. + type: dark_theme_image + return_type: dark_theme_image + summary: Get metadata of a dark theme image. x_deprecation: null x_filter: {} - _key: update additional_operations: - - notes: After retrieving the resource using the `me` method, it can modified - using using this SDK method. - operation_id: updateMyApiKey - description: 'Update API key details. - - - **Example:** - - `curl -X PUT https://api.us-east-1.mbedcloud.com/v3/api-keys/{apikey_id} \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"name": "TestApiKey25"}'' + - notes: The multipart endpoint is used by the SDKs as it offers the same functionality + as the standard upload endpoint. + operation_id: uploadDarkImage + description: 'Upload a new account branding image as form data in the dark theme + in PNG or JPEG format. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - created_at + - static_uri - updated_at - - key - - creation_time - - last_login_time - - account_id field_renames: [] fields: - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - in: body - items: - type: string - parameter_fieldname: groups - required: false - type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 - in: path - parameter_fieldname: apikey_id - pattern: '[a-f0-9]{32}' + - _key: image + api_fieldname: image + description: The image in PNG or JPEG format as multipart form data. + entity_fieldname: image + external_param: true + in: stream + name: image + parameter_fieldname: image required: true - type: string - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - in: body - maxLength: 100 - parameter_fieldname: name + type: file + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id003 + enum_reference: dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference required: true type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: *id001 - enum_reference: api_key_status_enum - example: ACTIVE - in: body - parameter_fieldname: status - required: false - type: string - group_id: Accounts - method: put + group_id: Branding + method: post mode: update - operation_id: updateApiKey + operation_id: uploadDarkImageMultipart pagination: false - parameter_map: - apikey_id: id - path: /v3/api-keys/{apikey_id} - request_body: json - request_content_type: application/json + path: /v3/branding-images/dark/{reference}/upload-multipart + request_body: file + request_content_type: multipart/form-data responses: - - _key: '200' - description: Successful operation. + - _key: '201' + description: Image uploaded successfully. + headers: + - _key: Content-Location + description: Location of the image metadata. + type: string + - _key: Location + description: Location of the image binary. + type: string schema: - description: Represents an API key in Device Management. foreign_key: - entity: subtenant_api_key - group: Accounts + entity: subtenant_light_theme_image + group: Branding properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' - type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - items: - type: string - type: array - - _key: id - api_fieldname: id - description: The ID of the API key. - entity_fieldname: id - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - maxLength: 100 - type: string - _key: object api_fieldname: object - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''branding_image''' entity_fieldname: object enum: - - api-key - type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - branding_image + readOnly: true type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference enum: - - ACTIVE - - INACTIVE - example: ACTIVE + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + is_primary_key: true + type: string + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true type: string - _key: updated_at api_fieldname: updated_at - description: Last update UTC time RFC3339. + description: Last update time in UTC. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time + readOnly: true type: string - required: - - etag - - id - - key - - name - - object type: object - _key: '400' - description: Error in input data, for example, missing display name. + description: Error in input data format, for example, image is too large. schema: properties: - _key: code @@ -12033,7 +21843,7 @@ entities: - type type: object - _key: '404' - description: The API key with the specified ID does not exist. + description: Unknown image reference. schema: properties: - _key: code @@ -12076,461 +21886,425 @@ entities: required: - code - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: api_key - return_type: api_key - summary: Update API key details. - x_deprecation: null - x_filter: {} - primary_key_field: id - swagger_models: - - ApiKeyInfoReq - - ApiKeyInfoResp - - ApiKeyInfoRespList - - ApiKeyUpdateReq - - GroupSummaryList - tags: - - Account - API keys -- _key: campaign_device_metadata - field_renames: - - _key: campaign_id - api_fieldname: campaign - fields: - - _key: campaign_id - api_fieldname: campaign - description: The device's campaign ID - example: 015bf72fccda00000000000100100280 - readOnly: false - required: true - type: string - - _key: created_at - api_fieldname: created_at - description: The time the campaign was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: deployment_state - api_fieldname: deployment_state - description: The state of the update campaign on the device - enum: - - pending - - updated_connector_channel - - failed_connector_channel_update - - deployed - - manifestremoved - - deregistered - enum_reference: campaign_device_metadata_deployment_state_enum - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - description: Description - example: '' - maxLength: 2000 - readOnly: true - required: false - type: string - - _key: device_id - api_fieldname: device_id - description: The device ID - example: 015c2fec9bba0000000000010010036f - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: The metadata record ID - example: 015c3029f6f7000000000001001000c3 - readOnly: false - required: true - type: string - - _key: mechanism - api_fieldname: mechanism - description: How the firmware is delivered (connector or direct) - example: connector - readOnly: true - required: false - type: string - - _key: mechanism_url - api_fieldname: mechanism_url - description: The Device Management Connect URL - example: '' - readOnly: true - required: false - type: string - - _key: name - api_fieldname: name - description: The record name - example: default_object_name - maxLength: 128 - readOnly: true - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: 'The record was modified in the database format: date-time' - example: '2017-05-22T12:37:58.776736Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Device_Update - methods: - - _key: read - description: Get update campaign metadata. - drop_fields: - - object - - etag - - type - - filter - - created_at - - deployment_state - - description - - device_id - - mechanism - - mechanism_url - - name - - updated_at - field_renames: - - _key: campaign_id - api_fieldname: campaign - fields: - - _key: campaign_id - api_fieldname: campaign - description: The device's campaign ID - entity_fieldname: campaign_id - example: 015bf72fccda00000000000100100280 - in: path - parameter_fieldname: campaign_id - required: true - type: string - - _key: id - api_fieldname: id - description: The metadata record ID - entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 - in: path - parameter_fieldname: campaign_device_metadata_id - required: true - type: string - group_id: Device_Update - method: get - mode: read - operation_id: Update_Campaign_Metadata_retrieve - pagination: false - parameter_map: - campaign_device_metadata_id: id - path: /v3/update-campaigns/{campaign_id}/campaign-device-metadata/{campaign_device_metadata_id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Request successful - schema: - foreign_key: - entity: campaign_device_metadata - group: Device_Update - properties: - - _key: campaign - api_fieldname: campaign - description: The device's campaign ID - entity_fieldname: campaign_id - example: 015bf72fccda00000000000100100280 - type: string - - _key: created_at - api_fieldname: created_at - description: The time the campaign was created - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: deployment_state - api_fieldname: deployment_state - description: The state of the update campaign on the device - entity_fieldname: deployment_state - enum: - - pending - - updated_connector_channel - - failed_connector_channel_update - - deployed - - manifestremoved - - deregistered - type: string - - _key: description - api_fieldname: description - description: Description - entity_fieldname: description - example: '' - maxLength: 2000 - type: string - - _key: device_id - api_fieldname: device_id - description: The device ID - entity_fieldname: device_id - example: 015c2fec9bba0000000000010010036f - type: string - - _key: etag - api_fieldname: etag - description: API resource entity version - entity_fieldname: etag - example: '2017-05-22T12:37:58.753425Z' - type: string - - _key: id - api_fieldname: id - description: The metadata record ID - entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 - type: string - - _key: mechanism - api_fieldname: mechanism - description: How the firmware is delivered (connector or direct) - entity_fieldname: mechanism - example: connector - type: string - - _key: mechanism_url - api_fieldname: mechanism_url - description: The Device Management Connect URL - entity_fieldname: mechanism_url - example: '' - type: string - - _key: name - api_fieldname: name - description: The record name - entity_fieldname: name - example: default_object_name - maxLength: 128 - type: string - - _key: object - api_fieldname: object - description: 'The entity name: always ''update-campaign-device-metadata''' - entity_fieldname: object - example: update-campaign-device-metadata - type: string - - _key: updated_at - api_fieldname: updated_at - description: 'The record was modified in the database format: date-time' - entity_fieldname: updated_at - example: '2017-05-22T12:37:58.776736Z' - format: date-time - type: string + - object + - request_id + - type type: object - - _key: '401' - description: Unauthorized - - _key: '404' - description: Not Found return_info: custom: false self: true - type: campaign_device_metadata - return_type: campaign_device_metadata - summary: Get a campaign device metadata + type: dark_theme_image + return_type: dark_theme_image + summary: Upload a dark theme image. x_deprecation: null x_filter: {} - primary_key_field: id + primary_key_field: reference swagger_models: - - CampaignDeviceMetadata - tags: [] -- _key: campaign_statistics - field_renames: [] + - BrandingImage + - BrandingImageList + tags: + - User interface configuration - images +- _key: developer_certificate + field_renames: + - _key: certificate + api_fieldname: developer_certificate fields: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - example: '00000000000000000000000000000000' - readOnly: false - required: true + - _key: account_id + api_fieldname: account_id + description: Account to which the developer certificate belongs. + readOnly: true + required: false type: string - - _key: count - api_fieldname: count - example: 10 + - _key: certificate + api_fieldname: developer_certificate + description: PEM-format X.509 developer certificate. readOnly: true required: false - type: integer + type: string - _key: created_at api_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' + description: Creation UTC time RFC3339. format: date-time readOnly: true required: false type: string + - _key: description + api_fieldname: description + description: Description for the developer certificate. + readOnly: false + required: false + type: string + x-nullable: true + - _key: developer_private_key + api_fieldname: developer_private_key + description: PEM-format developer private key associated with the certificate. + readOnly: true + required: false + type: string - _key: id api_fieldname: id - description: ID of the event type description - enum: - - fail - - success - - info - - skipped - enum_reference: campaign_statistics_id_enum - example: fail + description: ID that uniquely identifies the developer certificate. + in: path + parameter_fieldname: developerCertificateId readOnly: false required: true type: string - - _key: summary_status - api_fieldname: summary_status - description: The event type description. - enum: - - FAIL - - SUCCESS - - INFO - - SKIPPED - enum_reference: campaign_statistics_summary_status_enum - example: FAIL + - _key: name + api_fieldname: name + description: Name of the developer certificate. + readOnly: false + required: true + type: string + - _key: security_file_content + api_fieldname: security_file_content + description: Content of the `security.c` file flashed to the device to provide + security credentials. readOnly: true required: false type: string - group_id: Device_Update + group_id: Security methods: - - _key: events - description: Get a list of events grouped by summary + - _key: create + description: 'Create a developer certificate (a certificate that can be flashed + to multiple devices to connect to the bootstrap server). + + + **Note:** The number of developer certificates allowed per account is limited. + Please see [Setting up a Certificate Authority](https://www.pelion.com/docs/device-management/current/provisioning-process/integrating-with-a-third-party-ca.html). + + + **Example:** + + ``` + + curl -X POST http://api.us-east-1.mbedcloud.com/v3/developer-certificates \ + + -H "Authorization: Bearer " \ + + -H "content-type: application/json" \ + + -d { "name": "", "description": "" + } + + ```' drop_fields: - object - etag - type - filter - - order - - limit - - after - - has_more - - total_count - - data - field_renames: [] + - id + - created_at + - account_id + - developer_private_key + - security_file_content + - certificate + field_renames: + - _key: certificate + api_fieldname: developer_certificate fields: - - _key: campaign_id - api_fieldname: campaign_id - description: The campaign ID - entity_fieldname: campaign_id - external_param: false - in: path - name: campaign_id - parameter_fieldname: campaign_id - required: true + - _key: description + api_fieldname: description + description: Description for the developer certificate. + entity_fieldname: description + in: body + parameter_fieldname: description + required: false type: string - - _key: id - api_fieldname: summary_status_id - description: The summary status. For example, fail - entity_fieldname: id - external_param: false - in: path - name: summary_status_id - parameter_fieldname: summary_status_id + x-nullable: true + - _key: name + api_fieldname: name + description: Name of the developer certificate. + entity_fieldname: name + in: body + parameter_fieldname: name required: true type: string - foreign_key: - entity: campaign_statistics_events - group: Device_Update - group_id: Device_Update - method: get - mode: events - operation_id: Update_Campaign_event_types_list - pagination: true + group_id: Security + method: post + mode: create + operation_id: createDeveloperCertificate + pagination: false parameter_map: - summary_status_id: id - path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/ + developerCertificateId: id + path: /v3/developer-certificates request_body: json request_content_type: application/json responses: - - _key: '200' - description: OK + - _key: '201' + description: Developer certificate created successfully. + examples: + - _key: Success + account_id: 015fee5d9b3538c98640fbfb00000000 + created_at: '2017-12-11T14:22:20.009Z' + description: This certificate will be used with multiple developer devices. + developer_certificate: '-----BEGIN CERTIFICATE-----\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\nzhNupQ==\n-----END + CERTIFICATE-----\n' + developer_private_key: '-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\nQTuqnIv2\n-----END + PRIVATE KEY-----\n' + etag: '1' + id: 015fee4431fd38c98640fbfb00000000 + name: DeveloperCertificate + object: trusted-cert + security_file_content: '/*\n * Copyright (c) 2017 ARM Limited. All rights + reserved.\n * SPDX-License-Identifier: Apache-2.0\n * Licensed under the + Apache License, Version 2.0 (the License); you may\n * not use this file + except in compliance with the License.\n * You may obtain a copy of the + License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless + required by applicable law or agreed to in writing, software\n * distributed + under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES + OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License + for the specific language governing permissions and\n * limitations under + the License.\n */\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\n\n#include + \n\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \"0161dbbcdd660a580a010c3403c00000\";\nconst + char MBED_CLOUD_DEV_ACCOUNT_ID[] = \"015843e32ec902420a015e0700000000\";\nconst + char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \"coaps://coap-integration-lab.dev.mbed.com:5684?aid=015843e32ec902420a015e0700000000\";\n\nconst + uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \n{ 0x30, 0x82, + 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, + 0x11, 0x00,\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\n 0x91, 0x07, + 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce,\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\n 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, + 0x30, 0x15,\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\n 0x61, 0x6d, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, + 0x12, 0x30,\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\n 0x43, 0x61, + 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55,\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\n 0x4c, 0x74, + 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, + 0x30, 0x31,\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\n 0x63, 0x39, + 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, + 0x30, 0x30,\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\n 0x30, 0x27, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, + 0x62, 0x62,\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\n 0x38, 0x30, + 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, + 0x30, 0x30,\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\n 0x32, 0x32, + 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, + 0x30, 0x32,\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\n 0x5a, 0x30, + 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47,\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\n 0x04, 0x08, + 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, + 0x68, 0x69,\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\n 0x55, 0x04, + 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x31, 0x10,\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\n 0x07, 0x41, + 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, + 0x55, 0x04,\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\n 0x33, 0x65, + 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, + 0x31, 0x35,\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\n 0x30, 0x30, + 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, + 0x30, 0x31,\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\n 0x36, 0x36, + 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, + 0x30, 0x33,\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\n 0x30, 0x13, + 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, + 0x86, 0x48,\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\n 0x04, 0x44, + 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, + 0x3d, 0xa3,\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\n 0xb7, 0x91, + 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, + 0x7a, 0x3f,\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\n 0x13, 0xa8, + 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, + 0x9c, 0x8b,\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\n 0x09, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, + 0x40, 0x00,\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0a, 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, + 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, + 0x0d, 0x8e,\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\n 0x42, 0x5c, + 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, + 0xa7, 0x76,\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\n 0xb1, 0x83, + 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, + 0x34, 0x1d,\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\n 0xce, 0x13, + 0x6e, 0xa5 };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] + = \n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\n 0xa0, 0x03, 0x02, + 0x01, 0x02, 0x02, 0x10, 0x5c,\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, + 0x43,\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\n 0x0a, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, + 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, + 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, + 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, + 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, + 0x74,\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, + 0x1b, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\n 0x73, 0x74, 0x72, + 0x61, 0x70, 0x43, 0x41, 0x30,\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, + 0x31,\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\n 0x18, 0x0f, 0x32, + 0x30, 0x35, 0x32, 0x30, 0x35,\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, + 0x30,\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\n 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x47, 0x42,\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, + 0x04,\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\n 0x69, 0x64, 0x67, + 0x65, 0x73, 0x68, 0x69, 0x72,\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55,\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, + 0x67, 0x65, 0x31, 0x10, 0x30,\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x07,\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\n 0x24, 0x30, 0x22, + 0x06, 0x03, 0x55, 0x04, 0x03,\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, + 0x6e,\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\n 0x6e, 0x20, 0x42, + 0x6f, 0x6f, 0x74, 0x73, 0x74,\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, + 0x30,\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, + 0x04,\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\n 0xe0, 0x57, 0x4e, + 0x1b, 0xac, 0x29, 0x82, 0xea,\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, + 0xbc,\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\n 0xfa, 0x41, 0xf8, + 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, + 0x78,\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\n 0x6f, 0x57, 0x04, + 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, + 0x03,\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\n 0x86, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01,\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\n 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x13, 0xef, 0x69,\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, + 0xb8,\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\n 0x39, 0x30, 0x10, + 0x06, 0x09, 0x2b, 0x06, 0x01,\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, + 0x03,\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\n 0x86, 0x48, 0xce, + 0x3d, 0x04, 0x03, 0x02, 0x03,\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, + 0xa2,\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\n 0xf5, 0x71, 0x86, + 0x33, 0x29, 0x05, 0x4c, 0xf9,\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, + 0x5c,\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\n 0x20, 0x3e, 0xfe, + 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, + 0x26,\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\n 0x44, 0x36, 0xf9, + 0x74, 0xa1, 0x82, 0x76, 0x7a,\n 0x6e };\n\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] + = \n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\n 0xa0, 0x03, 0x02, + 0x01, 0x02, 0x02, 0x10, 0x26,\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, + 0x4a,\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\n 0x0a, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, + 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, + 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, + 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, + 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, + 0x74,\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, + 0x18, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\n 0x4d, 0x20, 0x43, + 0x41, 0x30, 0x20, 0x17, 0x0d,\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, + 0x30,\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\n 0x30, 0x35, 0x32, + 0x30, 0x32, 0x31, 0x32, 0x31,\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, + 0x6f,\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\n 0x06, 0x13, 0x02, + 0x47, 0x42, 0x31, 0x17, 0x30,\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0e,\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x73, 0x68, + 0x69, 0x72, 0x65, 0x31, 0x12,\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13,\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\n 0x67, 0x65, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03,\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, + 0x4d,\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\n 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x18, 0x41,\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, + 0x67,\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\n 0x57, 0x4d, 0x32, + 0x4d, 0x20, 0x43, 0x41, 0x30,\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, + 0x48,\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\n 0x48, 0xce, 0x3d, + 0x03, 0x01, 0x07, 0x03, 0x42,\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, + 0xf0,\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\n 0xa9, 0x29, 0xa1, + 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, + 0x2c,\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\n 0x14, 0x24, 0xb1, + 0xfb, 0x16, 0x34, 0x0e, 0x43,\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, + 0xaa,\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\n 0xa0, 0xc5, 0xa3, + 0x51, 0x30, 0x4f, 0x30, 0x0b,\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, + 0x03,\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\n 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30,\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, + 0x03,\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\n 0xa1, 0xa5, 0x94, + 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, + 0x9a,\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\n 0x06, 0x01, 0x04, + 0x01, 0x82, 0x37, 0x15, 0x01,\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, + 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, 0x49, + 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, + 0x11,\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\n 0x13, 0x30, 0x52, + 0x77, 0xaa, 0xda, 0xda, 0xcb,\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, + 0xfa,\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\n 0xb1, 0x67, 0x6b, + 0x69, 0x07, 0x0e, 0xcd, 0x77,\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, + 0xc0,\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\n 0x70, 0x98, 0xb9, + 0x1e };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = + \n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\n 0x06, 0x07, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x02,\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, + 0x3d,\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\n 0x01, 0x01, 0x04, + 0x20, 0x78, 0xa7, 0x3d, 0xed,\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, + 0x46,\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\n 0xb3, 0xc0, 0x00, + 0x98, 0x22, 0xcf, 0x3c, 0x38,\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, + 0x08,\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\n 0xa1, 0x44, 0x03, + 0x42, 0x00, 0x04, 0x44, 0x9c,\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, + 0x4d,\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\n 0x16, 0xcb, 0x48, + 0x72, 0x4f, 0xb7, 0x91, 0x36,\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, + 0xe5,\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\n 0xd7, 0xbd, 0xa4, + 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, + 0xec,\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\n\nconst char MBED_CLOUD_DEV_MANUFACTURER[] + = \"dev_manufacturer\";\n\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \"dev_model_num\";\n\nconst + char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \"0\";\n\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] + = \"dev_device_type\";\n\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = + \"dev_hardware_version\";\n\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB + = 0;\n\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE + = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE + = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\nconst uint32_t + MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\nconst + uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\n\n#endif + //__MBED_CLOUD_DEV_CREDENTIALS_H__\n' schema: foreign_key: - entity: campaign_statistics_events - group: Device_Update - pagination: true + entity: subtenant_trusted_certificate + group: Security properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one - entity_fieldname: after - example: 'null' + - _key: account_id + api_fieldname: account_id + description: Account to which the developer certificate belongs. + entity_fieldname: account_id + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + format: date-time + type: string + - _key: description + api_fieldname: description + description: Description for the developer certificate. + entity_fieldname: description + type: string + x-nullable: true + - _key: developer_certificate + api_fieldname: developer_certificate + description: PEM-format X.509 developer certificate. + entity_fieldname: certificate + type: string + - _key: developer_private_key + api_fieldname: developer_private_key + description: PEM-format developer private key associated with the certificate. + entity_fieldname: developer_private_key + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + type: string + - _key: id + api_fieldname: id + description: ID that uniquely identifies the developer certificate. + entity_fieldname: id + in: path + parameter_fieldname: developerCertificateId + required: true + type: string + - _key: name + api_fieldname: name + description: Name of the developer certificate. + entity_fieldname: name type: string - - _key: data - api_fieldname: data - entity_fieldname: data - items: - foreign_key: - entity: campaign_statistics_events - group: Device_Update - properties: - - _key: campaign_id - description: ID of the associated campaign. - example: '00000000000000000000000000000000' - type: string - - _key: count - example: 10 - type: integer - - _key: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: description - example: Update error, nonspecific network error - type: string - - _key: event_type - example: UPD4_FAIL_101 - type: string - - _key: id - example: upd_fail_101 - type: string - - _key: object - example: event-type - type: string - - _key: summary_status - example: FAIL - type: string - - _key: summary_status_id - example: fail - type: string - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: A flag indicating whether there are more results - entity_fieldname: has_more - example: 'false' - type: boolean - - _key: limit - api_fieldname: limit - description: 'The number of results to return, (range: 2-1000), or equals - to total_count' - entity_fieldname: limit - example: '50' - type: integer - _key: object api_fieldname: object - description: 'The entity name: always ''list''' + description: 'Entity name: always `trusted-cert`.' entity_fieldname: object - example: list type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - entity_fieldname: order - enum: - - ASC - - DESC - example: ASC + - _key: security_file_content + api_fieldname: security_file_content + description: Content of the `security.c` file flashed to the device to provide + security credentials. + entity_fieldname: security_file_content type: string - - _key: total_count - api_fieldname: total_count - description: The total number or records, if requested. It may be returned - also for small lists. - entity_fieldname: total_count - example: '1' - type: integer type: object - - _key: '401' - description: Not Authenticated + - _key: '400' + description: Bad request. + examples: + - _key: Bad Request Error + code: 400 + fields: + message: Missing certificate name. + name: name + message: Bad Request. Missing certificate name. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: validation_error schema: properties: - _key: code @@ -12577,8 +22351,15 @@ entities: - request_id - type type: object - - _key: '404' - description: Not Found + - _key: '401' + description: Invalid access token. + examples: + - _key: Authentication Error + code: 401 + message: Invalid access token. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: invalid_auth schema: properties: - _key: code @@ -12625,149 +22406,19 @@ entities: - request_id - type type: object - return_info: - custom: false - self: false - type: campaign_statistics_events - return_type: paginated_response(campaign_statistics_events) - summary: Get a list of events grouped by summary - x_deprecation: null - x_filter: {} - - _key: list - description: Get a list of statistics for a campaign - drop_fields: - - object - - etag - - type - - filter - - order - - limit - - after - - has_more - - total_count - - data - field_renames: [] - fields: - - _key: campaign_id - api_fieldname: campaign_id - description: The campaign ID - entity_fieldname: campaign_id - external_param: false - in: path - name: campaign_id - parameter_fieldname: campaign_id - required: true - type: string - foreign_key: - entity: campaign_statistics - group: Device_Update - foreign_key_priority: self - group_id: Device_Update - method: get - mode: list - operation_id: Update_Campaign_statistics_list - pagination: true - parameter_map: - summary_status_id: id - path: /v3/update-campaigns/{campaign_id}/statistics/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: OK - schema: - foreign_key: - entity: campaign_statistics - group: Device_Update - pagination: true - properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one - entity_fieldname: after - example: 'null' - type: string - - _key: data - api_fieldname: data - entity_fieldname: data - items: - foreign_key: - entity: campaign_statistics - group: Device_Update - properties: - - _key: campaign_id - description: ID of the associated campaign. - example: '00000000000000000000000000000000' - type: string - - _key: count - example: 10 - type: integer - - _key: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - description: ID of the event type description - enum: - - fail - - success - - info - - skipped - example: fail - type: string - - _key: object - example: summary_status - type: string - - _key: summary_status - description: The event type description. - enum: - - FAIL - - SUCCESS - - INFO - - SKIPPED - example: FAIL - type: string - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: A flag indicating whether there are more results - entity_fieldname: has_more - example: 'false' - type: boolean - - _key: limit - api_fieldname: limit - description: 'The number of results to return, (range: 2-1000), or equals - to total_count' - entity_fieldname: limit - example: '50' - type: integer - - _key: object - api_fieldname: object - description: 'The entity name: always ''list''' - entity_fieldname: object - example: list - type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - entity_fieldname: order - enum: - - ASC - - DESC - example: ASC - type: string - - _key: total_count - api_fieldname: total_count - description: The total number or records, if requested. It may be returned - also for small lists. - entity_fieldname: total_count - example: '1' - type: integer - type: object - - _key: '401' - description: Not Authenticated + - _key: '403' + description: The maximum number of developer certificates for the given account + has already been reached. + examples: + - _key: Account Limit Exceeded Error + code: 403 + fields: + message: '10' + name: cert-count + message: Forbidden. Limit for the number of certificates exceeded. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: account_limit_exceeded schema: properties: - _key: code @@ -12814,8 +22465,18 @@ entities: - request_id - type type: object - - _key: '404' - description: Not Found + - _key: '409' + description: Certificate with the given name already exists. + examples: + - _key: Duplicate Error + code: 409 + fields: + message: Certificate already exists. + name: certificate + message: Conflict. Certificate already exists. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: duplicate schema: properties: - _key: code @@ -12865,160 +22526,60 @@ entities: return_info: custom: false self: true - type: campaign_statistics - return_type: paginated_response(campaign_statistics) - summary: Get a list of statistics for a campaign + type: developer_certificate + return_type: developer_certificate + summary: Create a new developer certificate to connect to the bootstrap server. x_deprecation: null x_filter: {} - - _key: read - description: Get a summary status + - _key: delete + description: 'Delete a trusted certificate. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter - - summary_status - - count - - created_at - field_renames: [] + field_renames: + - _key: certificate + api_fieldname: developer_certificate fields: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - entity_fieldname: campaign_id - example: '00000000000000000000000000000000' - in: path - parameter_fieldname: campaign_id - required: true - type: string - _key: id - api_fieldname: id - description: ID of the event type description + api_fieldname: cert_id + description: The ID of the trusted certificate to delete. entity_fieldname: id - enum: - - fail - - success - - info - - skipped - enum_reference: campaign_statistics_id_enum - example: fail + external_param: false in: path - parameter_fieldname: summary_status_id + name: cert_id + parameter_fieldname: cert_id required: true type: string - group_id: Device_Update - method: get - mode: read - operation_id: Update_Campaign_statistics_retrieve + group_id: Security + method: delete + mode: delete + operation_id: deleteCertificate pagination: false parameter_map: - summary_status_id: id - path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id} + cert_id: id + developerCertificateId: id + path: /v3/trusted-certificates/{cert_id} request_body: json request_content_type: application/json responses: - - _key: '200' - description: OK - schema: - foreign_key: - entity: campaign_statistics - group: Device_Update - properties: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - entity_fieldname: campaign_id - example: '00000000000000000000000000000000' - type: string - - _key: count - api_fieldname: count - entity_fieldname: count - example: 10 - type: integer - - _key: created_at - api_fieldname: created_at - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - api_fieldname: id - description: ID of the event type description - entity_fieldname: id - enum: - - fail - - success - - info - - skipped - example: fail - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - example: summary_status - type: string - - _key: summary_status - api_fieldname: summary_status - description: The event type description. - entity_fieldname: summary_status - enum: - - FAIL - - SUCCESS - - INFO - - SKIPPED - example: FAIL - type: string - type: object + - _key: '204' + description: Deleted successfully. - _key: '401' - description: Not Authenticated - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Not Found + description: Authentication failure. schema: properties: - _key: code @@ -13065,182 +22626,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: campaign_statistics - return_type: campaign_statistics - summary: Get a summary status - x_deprecation: null - x_filter: {} - primary_key_field: id - swagger_models: - - EventTypeList - - EventTypeSummary - - EventTypeSummaryList - tags: [] -- _key: campaign_statistics_events - field_renames: [] - fields: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - example: '00000000000000000000000000000000' - readOnly: false - required: true - type: string - - _key: count - api_fieldname: count - example: 10 - readOnly: true - required: false - type: integer - - _key: created_at - api_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - example: Update error, nonspecific network error - readOnly: true - required: false - type: string - - _key: event_type - api_fieldname: event_type - example: UPD4_FAIL_101 - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - example: upd_fail_101 - readOnly: false - required: true - type: string - - _key: summary_status - api_fieldname: summary_status - example: FAIL - readOnly: true - required: false - type: string - - _key: summary_status_id - api_fieldname: summary_status_id - example: fail - readOnly: false - required: true - type: string - group_id: Device_Update - methods: - - _key: read - description: Get an event type for a campaign - drop_fields: - - object - - etag - - type - - filter - - created_at - - event_type - - description - - summary_status - - count - field_renames: [] - fields: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - entity_fieldname: campaign_id - example: '00000000000000000000000000000000' - in: path - parameter_fieldname: campaign_id - required: true - type: string - - _key: id - api_fieldname: id - entity_fieldname: id - example: upd_fail_101 - in: path - parameter_fieldname: event_type_id - required: true - type: string - - _key: summary_status_id - api_fieldname: summary_status_id - entity_fieldname: summary_status_id - example: fail - in: path - parameter_fieldname: summary_status_id - required: true - type: string - group_id: Device_Update - method: get - mode: read - operation_id: Update_Campaign_event_types_retrieve - pagination: false - parameter_map: - event_type_id: id - path: /v3/update-campaigns/{campaign_id}/statistics/{summary_status_id}/event_types/{event_type_id} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: OK - schema: - foreign_key: - entity: campaign_statistics_events - group: Device_Update - properties: - - _key: campaign_id - api_fieldname: campaign_id - description: ID of the associated campaign. - entity_fieldname: campaign_id - example: '00000000000000000000000000000000' - type: string - - _key: count - api_fieldname: count - entity_fieldname: count - example: 10 - type: integer - - _key: created_at - api_fieldname: created_at - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: description - api_fieldname: description - entity_fieldname: description - example: Update error, nonspecific network error - type: string - - _key: event_type - api_fieldname: event_type - entity_fieldname: event_type - example: UPD4_FAIL_101 - type: string - - _key: id - api_fieldname: id - entity_fieldname: id - example: upd_fail_101 - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - example: event-type - type: string - - _key: summary_status - api_fieldname: summary_status - entity_fieldname: summary_status - example: FAIL - type: string - - _key: summary_status_id - api_fieldname: summary_status_id - entity_fieldname: summary_status_id - example: fail - type: string - type: object - - _key: '401' - description: Not Authenticated + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -13288,7 +22675,7 @@ entities: - type type: object - _key: '404' - description: Not Found + description: A certificate not found. schema: properties: - _key: code @@ -13336,117 +22723,25 @@ entities: - type type: object return_info: - custom: false - self: true - type: campaign_statistics_events - return_type: campaign_statistics_events - summary: Get an event type for a campaign + custom: false + self: true + type: developer_certificate + return_type: developer_certificate + summary: Delete a trusted certificate by ID. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - EventType - tags: [] -- _key: certificate_enrollment - field_renames: [] - fields: - - _key: certificate_name - api_fieldname: certificate_name - description: The certificate name. - example: customer.dlms - external_param: true - in: path - maxLength: 50 - name: certificate-name - parameter_fieldname: certificate-name - pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - example: '2017-01-01T00:00:00Z' - format: date-time - readOnly: true - required: false - type: string - - _key: device_id - api_fieldname: device_id - description: The device ID. - example: 01625daa23230a580a0100bd00000000 - readOnly: true - required: false - type: string - - _key: enroll_result - api_fieldname: enroll_result - description: The result of certificate enrollment request. - enum: - - success - - failure - enum_reference: certificate_enrollment_enroll_result_enum - example: success - readOnly: true - required: false - type: string - - _key: enroll_result_detail - api_fieldname: enroll_result_detail - description: Additional information in case of failure. - example: The device is currently processing too many certificate renewals. - readOnly: true - required: false - type: string - - _key: enroll_status - api_fieldname: enroll_status - description: The status of certificate enrollment request. - enum: - - new - - completed - enum_reference: certificate_enrollment_enroll_status_enum - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: The certificate enrollment ID. - example: 01612df56f3b0a580a010fc700000000 - in: path - parameter_fieldname: device-id - readOnly: false - required: true - type: string - - _key: updated_at - api_fieldname: updated_at - description: Update UTC time RFC3339. - example: '2017-01-01T00:00:00Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Security - methods: - - _key: list - description: 'Get certificate enrollments list, optionally filtered. - - - **Examples:** - - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments \ - - -H ''Authorization: Bearer '' + - _key: get_trusted_certificate_info + description: 'Retrieve a trusted certificate. - ``` + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments?device_id__eq=01612df56f3b0a580a010fc700000000 + curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -13454,343 +22749,350 @@ entities: - etag - type - filter - - total_count - - has_more - - data - - device_id__eq - - certificate_name__eq - - enroll_status__neq - - enroll_status__eq - - enroll_result__neq - - enroll_result__eq - - created_at__lte - - created_at__gte - - updated_at__lte - - updated_at__gte - field_renames: [] + - created_at + - updated_at + - name + - description + - account_id + - owner_id + - certificate + - service + - issuer + - subject + - validity + - status + - device_execution_mode + - enrollment_mode + - certificate_fingerprint + - valid + field_renames: + - _key: certificate + api_fieldname: developer_certificate fields: - - _key: after - api_fieldname: after - description: The ID of the item after which to retrieve the next page. - entity_fieldname: after - example: 01625daa23230a580a0100bd00000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[0-9a-fA-F]{32}' - required: false - type: string - - _key: include - api_fieldname: include - description: a comma-separated list of data fields to return. - entity_fieldname: include - enum: - - total_count - enum_reference: certificate_enrollment_include_enum - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - description: The number of results to return (2-1000). - entity_fieldname: limit - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - description: The order of results. - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: certificate_enrollment_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + in: path + parameter_fieldname: cert_id + pattern: '[a-f0-9]{32}' + required: true type: string foreign_key: - entity: certificate_enrollment + entity: trusted_certificate group: Security - foreign_key_priority: self group_id: Security method: get - mode: list - operation_id: getCertificateEnrollments - pagination: true + mode: get_trusted_certificate_info + operation_id: getCertificate + pagination: false parameter_map: - certificate-enrollment-id: id - path: /v3/certificate-enrollments + cert_id: id + developerCertificateId: id + path: /v3/trusted-certificates/{cert_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. + description: Successful operation. schema: + description: Represents a trusted certificate in responses. foreign_key: - entity: certificate_enrollment + entity: developer_certificate group: Security - pagination: true properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01625daa23230a580a0100bd00000000 + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: data - api_fieldname: data - description: List of certificate enrollments. - entity_fieldname: data - items: - foreign_key: - entity: certificate_enrollment - group: Security - properties: - - _key: certificate_name - api_fieldname: certificate-name - description: The certificate name. - entity_fieldname: certificate_name - example: customer.dlms - external_param: true - in: path - maxLength: 50 - name: certificate-name - parameter_fieldname: certificate-name - pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' - required: true - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - - _key: device_id - api_fieldname: device_id - description: The device ID. - entity_fieldname: device_id - example: 01625daa23230a580a0100bd00000000 - type: string - - _key: enroll_result - api_fieldname: enroll_result - description: The result of certificate enrollment request. - entity_fieldname: enroll_result - enum: - - success - - failure - example: success - type: string - - _key: enroll_result_detail - api_fieldname: enroll_result_detail - description: Additional information in case of failure. - entity_fieldname: enroll_result_detail - example: The device is currently processing too many certificate renewals. - type: string - - _key: enroll_status - api_fieldname: enroll_status - description: The status of certificate enrollment request. - entity_fieldname: enroll_status - enum: - - new - - completed - type: string - - _key: etag - api_fieldname: etag - description: Entity instance signature. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: The certificate enrollment ID. - entity_fieldname: id - example: 01612df56f3b0a580a010fc700000000 - in: path - parameter_fieldname: device-id - required: true - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-enrollment - type: string - - _key: updated_at - api_fieldname: updated_at - description: Update UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - required: - - created_at - - etag - - id - - device_id - - certificate_name - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - type: boolean - - _key: limit - api_fieldname: limit - description: The number of results to return. - entity_fieldname: limit + - _key: certificate + api_fieldname: certificate + description: X509.v3 trusted certificate in PEM format. + entity_fieldname: certificate + example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' + type: string + - _key: certificate_fingerprint + api_fieldname: certificate_fingerprint + description: A SHA-256 fingerprint of the certificate. + entity_fieldname: certificate_fingerprint + example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: Human readable description of this certificate. + entity_fieldname: description + example: Certificate created by me. + maxLength: 500 + type: string + x-nullable: true + - _key: device_execution_mode + api_fieldname: device_execution_mode + description: Device execution mode where 1 means a developer certificate. + entity_fieldname: device_execution_mode + example: 1 format: int32 type: integer + - _key: enrollment_mode + api_fieldname: enrollment_mode + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' + entity_fieldname: enrollment_mode + example: false + type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: issuer + api_fieldname: issuer + description: Issuer of the certificate. + entity_fieldname: issuer + example: CN=issuer + type: string + - _key: name + api_fieldname: name + description: Certificate name. + entity_fieldname: name + example: My certificate + maxLength: 100 + type: string - _key: object api_fieldname: object - description: Describes the type of objects in the list. + description: 'Entity name: always ''trusted-cert''' entity_fieldname: object enum: - - list + - trusted-cert type: string - - _key: order - api_fieldname: order - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order + - _key: owner_id + api_fieldname: owner_id + description: The ID of the owner. + entity_fieldname: owner_id + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + x-nullable: true + - _key: service + api_fieldname: service + description: Service name where the certificate is used. + entity_fieldname: service enum: - - ASC - - DESC + - lwm2m + - bootstrap type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records. - entity_fieldname: total_count - format: int32 - type: integer + - _key: status + api_fieldname: status + description: Status of the certificate. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + example: ACTIVE + type: string + - _key: subject + api_fieldname: subject + description: Subject of the certificate. + entity_fieldname: subject + example: CN=subject + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: valid + api_fieldname: valid + description: This read-only flag indicates whether the certificate is valid + or not. + entity_fieldname: valid + example: true + readOnly: true + type: boolean + - _key: validity + api_fieldname: validity + description: Expiration time in UTC formatted as RFC3339. + entity_fieldname: validity + example: '2038-02-14T15:24:14Z' + format: date-time + type: string + required: + - account_id + - certificate + - certificate_fingerprint + - etag + - id + - issuer + - name + - object + - service + - subject + - validity type: object - - _key: '400' - description: Validation error. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type - type: object - - _key: '401' - description: Unauthorized. + type: object + - _key: '403' + description: Forbidden. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '404' + description: A certificate not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -13798,41 +23100,26 @@ entities: type: object return_info: custom: false - self: true - type: certificate_enrollment - return_type: paginated_response(certificate_enrollment) - summary: Get certificate enrollments list. + self: false + type: trusted_certificate + return_type: trusted_certificate + summary: Get a trusted certificate. + unaggregated: true x_deprecation: null - x_filter: - certificate_name: - - eq - created_at: - - lte - - gte - device_id: - - eq - enroll_result: - - neq - - eq - enroll_status: - - neq - - eq - updated_at: - - lte - - gte + x_filter: {} - _key: read - description: 'Get a certificate enrollment by ID. + description: 'Return an existing developer certificate (a certificate that can + be flashed to multiple devices to connect to bootstrap server). **Example:** - ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/certificate-enrollments/01612df56f3b0a580a010fc700000000 + curl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \ - -H ''Authorization: Bearer '' + -H "Authorization: Bearer " ```' drop_fields: @@ -13841,280 +23128,448 @@ entities: - type - filter - created_at - - device_id - - certificate_name - - enroll_status - - enroll_result - - enroll_result_detail - - updated_at - field_renames: [] + - account_id + - name + - description + - developer_private_key + - security_file_content + - certificate + field_renames: + - _key: certificate + api_fieldname: developer_certificate fields: - _key: id api_fieldname: id - description: The certificate enrollment ID. + description: ID that uniquely identifies the developer certificate. entity_fieldname: id - example: 01612df56f3b0a580a010fc700000000 in: path - parameter_fieldname: certificate-enrollment-id + parameter_fieldname: developerCertificateId required: true type: string group_id: Security method: get mode: read - operation_id: getCertificateEnrollment + operation_id: getDeveloperCertificate pagination: false parameter_map: - certificate-enrollment-id: id - path: /v3/certificate-enrollments/{certificate-enrollment-id} + developerCertificateId: id + path: /v3/developer-certificates/{developerCertificateId} request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. + description: Developer certificate returned successfully. + examples: + - _key: Success + account_id: 015fee5d9b3538c98640fbfb00000000 + created_at: '2017-12-11T14:22:20.009Z' + description: This certificate applies to multiple developer devices. + developer_certificate: '-----BEGIN CERTIFICATE-----\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\nzhNupQ==\n-----END + CERTIFICATE-----\n' + developer_private_key: '-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\nQTuqnIv2\n-----END + PRIVATE KEY-----\n' + etag: '1' + id: 015fee4431fd38c98640fbfb00000000 + name: DeveloperCertificate + object: trusted-cert + security_file_content: '/*\n * Copyright (c) 2017 ARM Limited. All rights + reserved.\n * SPDX-License-Identifier: Apache-2.0\n * Licensed under the + Apache License, Version 2.0 (the License); you may\n * not use this file + except in compliance with the License.\n * You may obtain a copy of the + License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless + required by applicable law or agreed to in writing, software\n * distributed + under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES + OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License + for the specific language governing permissions and\n * limitations under + the License.\n */\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\n\n#include + \n\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \"0161dbbcdd660a580a010c3403c00000\";\nconst + char MBED_CLOUD_DEV_ACCOUNT_ID[] = \"015843e32ec902420a015e0700000000\";\nconst + char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \"coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000\";\n\nconst + uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \n{ 0x30, 0x82, + 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, + 0x11, 0x00,\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\n 0x91, 0x07, + 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce,\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\n 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, + 0x30, 0x15,\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\n 0x61, 0x6d, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, + 0x12, 0x30,\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\n 0x43, 0x61, + 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, + 0x03, 0x55,\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\n 0x4c, 0x74, + 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, + 0x30, 0x31,\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\n 0x63, 0x39, + 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, + 0x30, 0x30,\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\n 0x30, 0x27, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, + 0x62, 0x62,\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\n 0x38, 0x30, + 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, + 0x30, 0x30,\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\n 0x32, 0x32, + 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, + 0x30, 0x32,\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\n 0x5a, 0x30, + 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47,\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\n 0x04, 0x08, + 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, + 0x68, 0x69,\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\n 0x55, 0x04, + 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x31, 0x10,\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\n 0x07, 0x41, + 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, + 0x55, 0x04,\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\n 0x33, 0x65, + 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, + 0x31, 0x35,\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\n 0x30, 0x30, + 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, + 0x30, 0x31,\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\n 0x36, 0x36, + 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, + 0x30, 0x33,\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\n 0x30, 0x13, + 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, + 0x86, 0x48,\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\n 0x04, 0x44, + 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, + 0x3d, 0xa3,\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\n 0xb7, 0x91, + 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, + 0x7a, 0x3f,\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\n 0x13, 0xa8, + 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, + 0x9c, 0x8b,\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\n 0x09, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, + 0x40, 0x00,\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, + 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, + 0x0a, 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, + 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, + 0x0d, 0x8e,\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\n 0x42, 0x5c, + 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, + 0xa7, 0x76,\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\n 0xb1, 0x83, + 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, + 0x34, 0x1d,\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\n 0xce, 0x13, + 0x6e, 0xa5 };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] + = \n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\n 0xa0, 0x03, 0x02, + 0x01, 0x02, 0x02, 0x10, 0x5c,\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, + 0x43,\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\n 0x0a, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, + 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, + 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, + 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, + 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, + 0x74,\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, + 0x1b, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\n 0x73, 0x74, 0x72, + 0x61, 0x70, 0x43, 0x41, 0x30,\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, + 0x31,\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\n 0x18, 0x0f, 0x32, + 0x30, 0x35, 0x32, 0x30, 0x35,\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, + 0x30,\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\n 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x47, 0x42,\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, + 0x04,\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\n 0x69, 0x64, 0x67, + 0x65, 0x73, 0x68, 0x69, 0x72,\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, + 0x55,\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, + 0x67, 0x65, 0x31, 0x10, 0x30,\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, + 0x07,\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\n 0x24, 0x30, 0x22, + 0x06, 0x03, 0x55, 0x04, 0x03,\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, + 0x6e,\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\n 0x6e, 0x20, 0x42, + 0x6f, 0x6f, 0x74, 0x73, 0x74,\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, + 0x30,\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, + 0x04,\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\n 0xe0, 0x57, 0x4e, + 0x1b, 0xac, 0x29, 0x82, 0xea,\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, + 0xbc,\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\n 0xfa, 0x41, 0xf8, + 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, + 0x78,\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\n 0x6f, 0x57, 0x04, + 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, + 0x03,\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\n 0x86, 0x30, 0x0f, + 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, + 0x01,\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\n 0x0e, 0x04, 0x16, + 0x04, 0x14, 0x13, 0xef, 0x69,\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, + 0xb8,\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\n 0x39, 0x30, 0x10, + 0x06, 0x09, 0x2b, 0x06, 0x01,\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, + 0x03,\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\n 0x86, 0x48, 0xce, + 0x3d, 0x04, 0x03, 0x02, 0x03,\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, + 0xa2,\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\n 0xf5, 0x71, 0x86, + 0x33, 0x29, 0x05, 0x4c, 0xf9,\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, + 0x5c,\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\n 0x20, 0x3e, 0xfe, + 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, + 0x26,\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\n 0x44, 0x36, 0xf9, + 0x74, 0xa1, 0x82, 0x76, 0x7a,\n 0x6e };\n\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] + = \n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\n 0xa0, 0x03, 0x02, + 0x01, 0x02, 0x02, 0x10, 0x26,\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, + 0x4a,\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\n 0x0a, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, + 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, + 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, + 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, + 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, + 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, + 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, + 0x74,\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, + 0x18, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\n 0x4d, 0x20, 0x43, + 0x41, 0x30, 0x20, 0x17, 0x0d,\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, + 0x30,\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\n 0x30, 0x35, 0x32, + 0x30, 0x32, 0x31, 0x32, 0x31,\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, + 0x6f,\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\n 0x06, 0x13, 0x02, + 0x47, 0x42, 0x31, 0x17, 0x30,\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, + 0x0e,\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x73, 0x68, + 0x69, 0x72, 0x65, 0x31, 0x12,\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13,\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\n 0x67, 0x65, 0x31, + 0x10, 0x30, 0x0e, 0x06, 0x03,\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, + 0x4d,\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\n 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x18, 0x41,\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, + 0x67,\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\n 0x57, 0x4d, 0x32, + 0x4d, 0x20, 0x43, 0x41, 0x30,\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, + 0x48,\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\n 0x48, 0xce, 0x3d, + 0x03, 0x01, 0x07, 0x03, 0x42,\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, + 0xf0,\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\n 0xa9, 0x29, 0xa1, + 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, + 0x2c,\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\n 0x14, 0x24, 0xb1, + 0xfb, 0x16, 0x34, 0x0e, 0x43,\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, + 0xaa,\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\n 0xa0, 0xc5, 0xa3, + 0x51, 0x30, 0x4f, 0x30, 0x0b,\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, + 0x03,\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\n 0x1d, 0x13, 0x01, + 0x01, 0xff, 0x04, 0x05, 0x30,\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, + 0x03,\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\n 0xa1, 0xa5, 0x94, + 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, + 0x9a,\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\n 0x06, 0x01, 0x04, + 0x01, 0x82, 0x37, 0x15, 0x01,\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, + 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, 0x49, + 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, + 0x11,\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\n 0x13, 0x30, 0x52, + 0x77, 0xaa, 0xda, 0xda, 0xcb,\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, + 0xfa,\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\n 0xb1, 0x67, 0x6b, + 0x69, 0x07, 0x0e, 0xcd, 0x77,\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, + 0xc0,\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\n 0x70, 0x98, 0xb9, + 0x1e };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = + \n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\n 0x06, 0x07, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x02,\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, + 0x3d,\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\n 0x01, 0x01, 0x04, + 0x20, 0x78, 0xa7, 0x3d, 0xed,\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, + 0x46,\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\n 0xb3, 0xc0, 0x00, + 0x98, 0x22, 0xcf, 0x3c, 0x38,\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, + 0x08,\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\n 0xa1, 0x44, 0x03, + 0x42, 0x00, 0x04, 0x44, 0x9c,\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, + 0x4d,\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\n 0x16, 0xcb, 0x48, + 0x72, 0x4f, 0xb7, 0x91, 0x36,\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, + 0xe5,\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\n 0xd7, 0xbd, 0xa4, + 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, + 0xec,\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\n\nconst char MBED_CLOUD_DEV_MANUFACTURER[] + = \"dev_manufacturer\";\n\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \"dev_model_num\";\n\nconst + char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \"0\";\n\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] + = \"dev_device_type\";\n\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = + \"dev_hardware_version\";\n\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB + = 0;\n\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE + = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE + = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\nconst uint32_t + MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\nconst + uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\n\n#endif + //__MBED_CLOUD_DEV_CREDENTIALS_H__\n' schema: foreign_key: - entity: device - group: Devices + entity: developer_certificate + group: Security properties: - - _key: certificate_name - api_fieldname: certificate_name - description: The certificate name. - entity_fieldname: certificate_name - example: customer.dlms - external_param: true - in: path - maxLength: 50 - name: certificate-name - parameter_fieldname: certificate-name - pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' - required: true + - _key: account_id + api_fieldname: account_id + description: Account to which the developer certificate belongs. + entity_fieldname: account_id type: string - _key: created_at api_fieldname: created_at description: Creation UTC time RFC3339. entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' format: date-time type: string - - _key: device_id - api_fieldname: device_id - description: The device ID. - entity_fieldname: device_id - example: 01625daa23230a580a0100bd00000000 - type: string - - _key: enroll_result - api_fieldname: enroll_result - description: The result of certificate enrollment request. - entity_fieldname: enroll_result - enum: - - success - - failure - example: success + - _key: description + api_fieldname: description + description: Description for the developer certificate. + entity_fieldname: description type: string - - _key: enroll_result_detail - api_fieldname: enroll_result_detail - description: Additional information in case of failure. - entity_fieldname: enroll_result_detail - example: The device is currently processing too many certificate renewals. + x-nullable: true + - _key: developer_certificate + api_fieldname: developer_certificate + description: PEM-format X.509 developer certificate. + entity_fieldname: developer_certificate type: string - - _key: enroll_status - api_fieldname: enroll_status - description: The status of certificate enrollment request. - entity_fieldname: enroll_status - enum: - - new - - completed + - _key: developer_private_key + api_fieldname: developer_private_key + description: PEM-format developer private key associated with the certificate. + entity_fieldname: developer_private_key type: string - _key: etag api_fieldname: etag - description: Entity instance signature. + description: API resource entity version. entity_fieldname: etag - example: '1' type: string - _key: id api_fieldname: id - description: The certificate enrollment ID. + description: ID that uniquely identifies the developer certificate. entity_fieldname: id - example: 01612df56f3b0a580a010fc700000000 - in: path - parameter_fieldname: device-id - required: true + type: string + - _key: name + api_fieldname: name + description: Name of the developer certificate. + entity_fieldname: name type: string - _key: object api_fieldname: object + description: 'Entity name: always `trusted-cert`.' entity_fieldname: object - enum: - - certificate-enrollment type: string - - _key: updated_at - api_fieldname: updated_at - description: Update UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-01-01T00:00:00Z' - format: date-time + - _key: security_file_content + api_fieldname: security_file_content + description: Content of the `security.c` file flashed to the device to provide + security credentials. + entity_fieldname: security_file_content type: string - required: - - created_at - - etag - - id - - device_id - - certificate_name type: object - _key: '400' - description: Validation error. + description: Bad request. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. + description: Message describing the error condition. type: string - - _key: message - description: Error message related to the field. + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Invalid access token. + examples: + - _key: Authentication Error + code: 401 + message: Invalid access token. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: invalid_auth schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - _key: '404' - description: Not found. + description: Developer certificate not found with given ID. + examples: + - _key: Authentication Error + code: 404 + message: 'Not Found. Not found: 016006724ff53ade90ed948d03c00001' + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: not_found schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -14123,739 +23578,1512 @@ entities: return_info: custom: false self: true - type: certificate_enrollment - return_type: certificate_enrollment - summary: Get a certificate enrollment by ID. + type: developer_certificate + return_type: developer_certificate + summary: Fetch an existing developer certificate to connect to the bootstrap server. x_deprecation: null x_filter: {} primary_key_field: id swagger_models: - - CertificateEnrollment - - CertificateEnrollmentListResponse + - DeveloperCertificateRequestData + - DeveloperCertificateResponseData + - TrustedCertificateResp tags: - - Device security - device certificate renewals -- _key: certificate_issuer + - Security and identity - developer class certificates + - Security and identity - certificates +- _key: device field_renames: [] fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the associated account. + example: '00000000000000000000000000000000' + readOnly: true + required: false + type: string + - _key: auto_update + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + readOnly: false + required: false + type: boolean + - _key: bootstrap_expiration_date + api_fieldname: bootstrap_expiration_date + description: The expiration date of the certificate used to connect to bootstrap + server. + format: date + readOnly: false + required: false + type: string + x-nullable: true + - _key: bootstrapped_timestamp + api_fieldname: bootstrapped_timestamp + description: The timestamp of the device's most recent bootstrap process. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: ca_id + api_fieldname: ca_id + description: The certificate issuer's ID. + example: '00000000000000000000000000000000' + maxLength: 500 + readOnly: false + required: false + type: string + - _key: component_attributes + additionalProperties: + maxLength: 128 + type: string + api_fieldname: component_attributes + description: Up to ten custom key-value attributes. Note that keys cannot begin + with a number. Both keys and values are limited to 128 characters. Updating + this field replaces existing contents. + example: + key: value + maxProperties: 10 + readOnly: true + required: false + type: object + - _key: connector_expiration_date + api_fieldname: connector_expiration_date + description: The expiration date of the certificate used to connect to LwM2M server. + format: date + readOnly: false + required: false + type: string + x-nullable: true - _key: created_at api_fieldname: created_at - description: Creation UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + description: The timestamp of when the device was created in the device directory. + example: '2017-05-22T12:37:55.576563Z' format: date-time readOnly: true required: false type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot begin + with a number. Both keys and values are limited to 128 characters. Updating + this field replaces existing contents. + example: + key: value + maxProperties: 5 + readOnly: false + required: false + type: object + - _key: deployed_state + api_fieldname: deployed_state + description: 'DEPRECATED: The state of the device''s deployment.' + enum: + - development + - production + enum_reference: device_deployed_state_enum + readOnly: true + required: false + type: string + - _key: deployment + api_fieldname: deployment + description: 'DEPRECATED: The last deployment used on the device.' + example: '' + readOnly: false + required: false + type: string - _key: description api_fieldname: description - description: General description for the certificate issuer. - example: GlobalSign sample issuer - maxLength: 100 + description: The description of the device. + example: Temperature measuring device + maxLength: 2000 + readOnly: false + required: false + type: string + - _key: device_class + api_fieldname: device_class + description: An ID representing the model and hardware revision of the device. + example: '' + maxLength: 32 + readOnly: false + required: false + type: string + - _key: device_execution_mode + api_fieldname: device_execution_mode + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ + \ execution mode (default if host_gateway invalid or not set). The device firmware\ + \ uses a certificate that is not identified as a developer or production certificate.\n\ + \ - 1 - Development device. The device firmware uses a developer certificate\ + \ to communicate with Device Management.\n - 5 - Production device. The device\ + \ firmware uses a factory-generated certificate to communicate with Device Management." + enum: + - 0 + - 1 + - 5 + example: 0 + readOnly: false + required: false + type: integer + - _key: device_key + api_fieldname: device_key + description: The fingerprint of the device certificate. + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 + readOnly: false + required: false + type: string + - _key: endpoint_name + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is from + the device certificate and is set by factory tool. + example: 00000000-0000-0000-0000-000000000000 + readOnly: true + required: false + type: string + - _key: endpoint_type + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is a gateway. + example: '' + maxLength: 64 + readOnly: false + required: false + type: string + - _key: enrolment_list_timestamp + api_fieldname: enrolment_list_timestamp + description: The claim date/time. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: firmware_checksum + api_fieldname: firmware_checksum + description: The SHA256 checksum of the current firmware image. + example: '0000000000000000000000000000000000000000000000000000000000000000' + readOnly: true + required: false + type: string + - _key: groups + api_fieldname: groups + description: An array containing an ID of each group this device belongs to. + items: + example: '00000000000000000000000000000000' + type: string + readOnly: true + required: false + type: array + - _key: host_gateway + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind Edge + has this host_gateway set. + example: '' readOnly: false required: false type: string - x-nullable: true - _key: id api_fieldname: id - description: The ID of the certificate issuer. - example: 01234567890ABCDEF01234567890ABCDEF + description: The ID of the device. The device ID is used across all Device Management + APIs. + example: '00000000000000000000000000000000' readOnly: false required: true type: string - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. + - _key: issuer_fingerprint + api_fieldname: issuer_fingerprint + description: SHA256 fingerprint of the certificate used to validate the signature + of the device certificate. + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' + readOnly: false + required: false + type: string + x-nullable: true + - _key: last_operator_suspended_category + api_fieldname: last_operator_suspended_category + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + readOnly: true + required: false + type: string + - _key: last_operator_suspended_description + api_fieldname: last_operator_suspended_description + description: The most recent description why the device was suspended or returned + to service. + example: Suspended for maintenance. + maxLength: 2000 + readOnly: true + required: false + type: string + - _key: last_operator_suspended_updated_at + api_fieldname: last_operator_suspended_updated_at + description: The timestamp of the most recent suspension activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: last_system_suspended_category + api_fieldname: last_system_suspended_category + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + readOnly: true + required: false + type: string + - _key: last_system_suspended_description + api_fieldname: last_system_suspended_description + description: The most recent description of why the device was blocked or unblocked + by the system. + example: A certificate in the device's certificate chain was blacklisted by the + system. + maxLength: 2000 + readOnly: true + required: false + type: string + - _key: last_system_suspended_updated_at + api_fieldname: last_system_suspended_updated_at + description: The timestamp of the most recent system block activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: lifecycle_status + api_fieldname: lifecycle_status + description: 'The lifecycle status of the device. - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. + * Enabled: The device is allowed to connect to Pelion Device Management. - ' - example: [] + * Blocked: The device is prevented from connecting to Pelion Device Management. + Device can be, for example, ''suspended''.' + enum: + - enabled + - blocked + enum_reference: device_lifecycle_status_enum + example: enabled + readOnly: true + required: false + type: string + - _key: manifest + api_fieldname: manifest + description: 'DEPRECATED: The URL for the current device manifest.' + example: '' readOnly: false required: false - type: object - - _key: issuer_type - api_fieldname: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL authenticated\ - \ signing service.\n The users must provide their own CFSSL host_url and credentials.\n" + type: string + - _key: manifest_timestamp + api_fieldname: manifest_timestamp + description: The timestamp of the current manifest version. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: mechanism + api_fieldname: mechanism + description: 'NOT USED: The ID of the channel used to communicate with the device.' enum: - - GLOBAL_SIGN - - CFSSL_AUTH - enum_reference: certificate_issuer_type_enum - example: GLOBAL_SIGN + - connector + - direct + enum_reference: device_mechanism_enum readOnly: false - required: true + required: false + type: string + - _key: mechanism_url + api_fieldname: mechanism_url + description: 'NOT USED: The address of the connector to use.' + example: '' + readOnly: false + required: false type: string - _key: name api_fieldname: name - description: Certificate issuer name, unique per account. - example: GS Issuer - maxLength: 50 + description: The name given by the web application for the device. Device itself + provides only the endpoint_name. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 readOnly: false - required: true + required: false type: string - group_id: Security + - _key: net_id + api_fieldname: net_id + default: '' + description: Private network identifier. Used to group nodes connected to a specific + border router. + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + readOnly: true + required: false + type: string + - _key: operator_suspended + api_fieldname: operator_suspended + description: Device has been suspended by operator. + readOnly: true + required: false + type: boolean + - _key: serial_number + api_fieldname: serial_number + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during manufacturing. + example: 00000000-0000-0000-0000-000000000000 + readOnly: false + required: false + type: string + - _key: state + api_fieldname: state + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped or connected + to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This state + is set only while bootstrapping is in progress. For example, an external CA + gives an error, and the device tries to bootstrap again after few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. [Device + commands](https://www.pelion.com/docs/device-management-api/connect/) can be + queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered + enum_reference: device_state_enum + readOnly: false + required: false + type: string + - _key: system_suspended + api_fieldname: system_suspended + description: Is the device suspended by the system? + readOnly: true + required: false + type: boolean + - _key: updated_at + api_fieldname: updated_at + description: The time this data object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: vendor_id + api_fieldname: vendor_id + description: The device vendor ID. + example: 00000000-0000-0000-0000-000000000000 + readOnly: false + required: false + type: string + group_id: Devices methods: - - _key: create - description: "Create a certificate issuer.\nThe maximum number of issuers is limited\ - \ to 20 per account.\nMultiple certificate issuers of the same issuer type can\ - \ be created, provided they have a different name. This allows verification\ - \ of the certificate issuer configuration before activating it.\n
\n**Example\ - \ usage:**\n\n```\ncurl -X POST \\\n-H 'authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers\ - \ \\\n-d '{\n \"issuer_type\": \"GLOBAL_SIGN\",\n \"name\": \"GS Issuer\"\ - ,\n \"description\": \"Sample GlobalSign certificate issuer\",\n \"issuer_attributes\"\ - : null,\n \"issuer_credentials\": {\n \"api_key\": \"e510e289e6cd8947\"\ - ,\n \"api_secret\": \"a477a8393d17a55ecb2ba6a61f58feb84770b621\",\n \ - \ \"client_certificate\": \"-----BEGIN CERTIFICATE-----MIIC7zCCAdegAwIBAgIJANTlU4x5S74VMA0GCSqGSIb3DQEBCwUAMA4xDDAKBgNVBAoMA0FybTAeFw0xODAzMTExMzE5MTFaFw0xOTAzMTExMzE5MTFaMA4xDDAKBgNVBAoMA0FybTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWLStsVMJULZtxdieK9qocM4ymDXMaAusmd9TZLzBgznKQe/CW2yxyA8C8K5e6MmvMYGeKDd4Lkw/ezOj2OsUj2xzNIltUxpGi/GhsNYiN/khNJa/Y1SllLoihJAPm/xbMywOBRu/dM88PiJsNZccOk0I8DYvvyAs9wCTkbKLnfHygl98DCRqXw7nBCplU6F03qpUd/4BUtMtugyqt7yboGH+4YewnUh4Yh4QNOJIvE93Ob++eKjO3pIOYEhQmUxzOLaLNuWXlv2l1WuN281hUP4XBcV8mCzRQfTBBDYTWt+5BEWoLOUkXjW0Um6EAaN3usph1IKDEH6Ia5VHP4Pj0CAwEAAaNQME4wHQYDVR0OBBYEFLsfYZxFcQTjPJKYMjHI2In316fmMB8GA1UdIwQYMBaAFLsfYZxFcQTjPJKYMjHI2In316fmMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFl08GFsIkkUs6M7QgCWmsnwP6PtD8V87wM1GAqQQlOOeztaeRR2TEOeYiKRZQugYszJ/FVfVp4ggqzepJMn6UZ42j5nmSJs+6t79i23QAzX1zNQ354lr/t7kt3fMdhuL3AP0oZGzdy+EnXXiWeAD22UwzvVmLt38ypJIl+pmTsx9jJy4PN7yoRgtP9k+50m3X6oDxVruehC/JPSeTvEhqyLW3fLcG6IoJMX3vIwfO9uXbFJumTowQeViNJJ9duWvD2KBXn/muOOBe97TPuvAms1gOtMmmPT9/jpo9b4+NsfFiAN6bMici81aIKZzLC+lLGOUmR2fFJyM5OsVLxKsko=-----END\ - \ CERTIFICATE-----\",\n \"private_key\":\"-----BEGIN RSA PRIVATE KEY-----\\\ - nProc-Type: 4,ENCRYPTED\\nDEK-Info: DES-EDE3-CBC,CCAC26A4133947CB\\n\\np3KJ4FI3wcz3I0MtiLkrznkjWFvprVmoNywySUGb5IqZViJZqCMEsyU9a9iDsSfP\\\ - nZ07cg9GviV21WYIPSxZOQrpy1g1VWILzFnH+J6z8dSH4mxXh0PwdOzYgAeqkrIVM\\nJ7KRm6t222dZFjjXK3eEcLmBLGo29XwVJxKHx+l4++gU1LZmeHZR5M8fJ4jejUly\\\ - n7sqzPlmRF0N3I4lwKVj+PfQTVz43QoCnpxOjuSEL4liBrc2agY2xH1O0PFyHimz9\\n3XM9HR/iuPHW0N2D+NPjXlWKacerupH9d4i9IYIagzB+HTgej8limdo03GmmxcZ6\\\ - nYNa58n5yQSaqu0TPRU9DsrKeGjadHTlZQGdzfq1SWsROCnHLrXFKE2ozIG3+hxA5\\nujBF/QWpX5+inXUwDJhBxp8isHbPEnBEUUd6ZRzCTjvN0jaUti5B9yFhO2G6mbE8\\\ - nCvhyzQK8oJqsjZXnlcpPf95LP+9XbcCDjLSIaWJstzXO9tPiv6+x1MVWmivtRHcC\\nSTzpx8jAGCiG6ejLqWB87ZXiZm7ujlCBheHSf5RHwNHhUvoP2JEYalDDRxjcDMSx\\\ - n4uV42Np4yJlIQEDlGHcBlXoL7vEukFpuWgkYdpcZy/Ou9qz8mXrpLcu8C8MhLmSC\\nixGoR5iRhV7cxoHLyuCzj87eYEA73Xu238DQorSEEuiVFnLzQ2+PJMs4qoI14q/L\\\ - notlBDz+Ko6DrU/EZROYmiqMkLKXR2sx9zNAJwPYRs6nSH08tZ3dwqzZbgtP3Wazi\\nhLWHt5/En7wQRA5a+/dDEHXSoLvvSQ9jvhclhWf+eCYuq2eH+g54oyJGRSY+8GV7\\\ - nujhLxkzl/3OZdhZPWoz4U13KpbSTcNWu5Y7oGDoabw19UbvqmLf1PJkpDH/tQgzB\\nxYtsLBRUcofpYoeIiIxfAA4do5WilJc8xqrGhkE4WcHfY24HXAiOvsjbxV+BRprX\\\ - n1jtgJpV/9nJESMap+8PxipGUFRGjB83/uwJaa6mLftEKflX8i4MZ+HnqraXERsqA\\nWRUcDHIWmFfpzIB3iNuxawVvPH8NdCSPmQ9qTb8Cozl0AuOK2E9S+ke8oiYQScWR\\\ - nLdu+zhej7GjuQ9R+Ub+wPWqvOA5qLXejqnCexVScDUuN+z9JWM3N2FG1MwxhAzhP\\ndEfoQHoBn6uyOmrVGP6fosV3chqhPoec42KeOAm1xDvx692isaIy1jPgIyPxeqhm\\\ - n2Tw4E+02R7dlP8Ljf7JzfLm4oKpWHWlcHeqg24x6lY/wXU1RBcWaTa0AQUwoGm2m\\nIQCPfIqOEv/QC2HpO7SVCYkl65KwR0oTd1AzYxdxEq3xHQbh69EL0FGZPVxVCPI+\\\ - nhEAyifKy1/tm3l91Rf/kGpHY7nIQKCXH49tmFwix8gke2nZJmRgX7/zAdMOAKeKH\\nAaIl4nQtv14EbaasMgnn9qgaDYnWzaReEob2QlQ/WYlTor61+KFpGtcf9jAkgudT\\\ - n2op+4CF7wT2+aTXdtkVWfmv++iB8GnlqZdxLvyG1cTYjjYHVFbMSWQnxzQqiE2ms\\nQgp+byjWCumpsWTMdTO+d9NkDOo80vDpaRxEgebmhJ0MbX+eFjBgVg==\\\ - n-----END RSA PRIVATE KEY-----\",\n \"passphrase\": \"helloworld\"\n }\n\ - }'\n```\n" + - _key: add_to_group + description: Add one device to a group. A device can be in multiple groups. drop_fields: - object - etag - type - filter - - created_at - - id field_renames: [] fields: - - _key: description - api_fieldname: description - description: General description for the certificate issuer. - entity_fieldname: description - example: GlobalSign sample issuer - in: body - maxLength: 100 - parameter_fieldname: description - required: false - type: string - x-nullable: true - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - entity_fieldname: issuer_attributes - example: [] - in: body - parameter_fieldname: issuer_attributes - required: false - type: object - - _key: issuer_credentials - additionalProperties: - type: string - api_fieldname: issuer_credentials - description: 'The credentials required for connecting to the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials. - - ' - entity_fieldname: issuer_credentials - example: [] + - _key: device-group-id + api_fieldname: device-group-id + description: The ID of the group. + entity_fieldname: device-group-id external_param: true - in: body - name: issuer_credentials - parameter_fieldname: issuer_credentials + in: path + name: device-group-id + parameter_fieldname: device-group-id required: true - schema_param: true - type: object - - _key: issuer_type - api_fieldname: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" - entity_fieldname: issuer_type - enum: - - GLOBAL_SIGN - - CFSSL_AUTH - enum_reference: certificate_issuer_type_enum - example: GLOBAL_SIGN + type: string + - _key: id + api_fieldname: device_id + entity_fieldname: id + example: '00000000000000000000000000000000' + external_param: false in: body - parameter_fieldname: issuer_type + name: device_id + parameter_fieldname: device_id required: true + schema_param: true type: string - - _key: name - api_fieldname: name - description: Certificate issuer name, unique per account. - entity_fieldname: name - example: GS Issuer - in: body - maxLength: 50 - parameter_fieldname: name - required: false - type: string - group_id: Security + group_id: Devices method: post - mode: create - operation_id: createCertificateIssuer + mode: add_to_group + operation_id: Group_members_add pagination: false parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers + device_id: id + path: /v3/device-groups/{device-group-id}/devices/add/ request_body: json request_content_type: application/json responses: - - _key: '201' - description: Created. + - _key: '204' + description: Success - device added. + - _key: '400' + description: Bad request. schema: - foreign_key: - entity: certificate_issuer - group: Security properties: - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - - _key: description - api_fieldname: description - description: General description for the certificate issuer. - entity_fieldname: description - example: GlobalSign sample issuer - maxLength: 100 - type: string - x-nullable: true - - _key: etag - api_fieldname: etag - description: Entity instance signature. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: The ID of the certificate issuer. - entity_fieldname: id - example: 01234567890ABCDEF01234567890ABCDEF + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - entity_fieldname: issuer_attributes - example: [] - type: object - - _key: issuer_type - api_fieldname: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" - entity_fieldname: issuer_type + - _key: object + description: Entity name, always `error`. enum: - - GLOBAL_SIGN - - CFSSL_AUTH - example: GLOBAL_SIGN + - error type: string - - _key: name - api_fieldname: name - description: Certificate issuer name, unique per account. - entity_fieldname: name - example: GS Issuer - maxLength: 50 + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-issuer + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - issuer_type + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: 'Validation error: The data used to create the certificate issuer - failed validation. - - ' + - _key: '401' + description: Unauthorized. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '401' - description: You are not authorized to view the resource. + - _key: '404' + description: Not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Add a device to a group. + x_deprecation: null + x_filter: {} + - _key: create + description: Create a new device in Device Management. Usually you do not need + to create a device this way, as it is automatically created when it bootstraps + or connects to Device Management. + drop_fields: + - object + - etag + - type + - filter + - groups + - operator_suspended + - last_operator_suspended_category + - last_operator_suspended_description + - last_operator_suspended_updated_at + - system_suspended + - last_system_suspended_category + - last_system_suspended_description + - last_system_suspended_updated_at + - lifecycle_status + - account_id + - bootstrapped_timestamp + - component_attributes + - created_at + - deployed_state + - id + - firmware_checksum + - manifest_timestamp + - net_id + - updated_at + - enrolment_list_timestamp + field_renames: [] + fields: + - _key: auto_update + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + entity_fieldname: auto_update + in: body + parameter_fieldname: auto_update + required: false + type: boolean + - _key: bootstrap_expiration_date + api_fieldname: bootstrap_expiration_date + description: The expiration date of the certificate used to connect to bootstrap + server. + entity_fieldname: bootstrap_expiration_date + format: date + in: body + parameter_fieldname: bootstrap_expiration_date + required: false + type: string + x-nullable: true + - _key: ca_id + api_fieldname: ca_id + description: The certificate issuer's ID. + entity_fieldname: ca_id + example: '00000000000000000000000000000000' + in: body + maxLength: 500 + parameter_fieldname: ca_id + required: false + type: string + - _key: connector_expiration_date + api_fieldname: connector_expiration_date + description: The expiration date of the certificate used to connect to LwM2M + server. + entity_fieldname: connector_expiration_date + format: date + in: body + parameter_fieldname: connector_expiration_date + required: false + type: string + x-nullable: true + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot begin + with a number. Both keys and values are limited to 128 characters. Updating + this field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + in: body + maxProperties: 5 + parameter_fieldname: custom_attributes + required: false + type: object + - _key: deployment + api_fieldname: deployment + description: 'DEPRECATED: The last deployment used on the device.' + entity_fieldname: deployment + example: '' + in: body + parameter_fieldname: deployment + required: false + type: string + - _key: description + api_fieldname: description + description: The description of the device. + entity_fieldname: description + example: Temperature measuring device + in: body + maxLength: 2000 + parameter_fieldname: description + required: false + type: string + - _key: device_class + api_fieldname: device_class + description: An ID representing the model and hardware revision of the device. + entity_fieldname: device_class + example: '' + in: body + maxLength: 32 + parameter_fieldname: device_class + required: false + type: string + - _key: device_execution_mode + api_fieldname: device_execution_mode + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ + \ execution mode (default if host_gateway invalid or not set). The device\ + \ firmware uses a certificate that is not identified as a developer or production\ + \ certificate.\n - 1 - Development device. The device firmware uses a developer\ + \ certificate to communicate with Device Management.\n - 5 - Production device.\ + \ The device firmware uses a factory-generated certificate to communicate\ + \ with Device Management." + entity_fieldname: device_execution_mode + enum: + - 0 + - 1 + - 5 + example: 0 + in: body + parameter_fieldname: device_execution_mode + required: false + type: integer + - _key: device_key + api_fieldname: device_key + description: The fingerprint of the device certificate. + entity_fieldname: device_key + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + in: body + maxLength: 512 + parameter_fieldname: device_key + required: false + type: string + - _key: endpoint_name + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is from + the device certificate and is set by factory tool. + entity_fieldname: endpoint_name + example: 00000000-0000-0000-0000-000000000000 + in: body + parameter_fieldname: endpoint_name + readOnly: true + required: false + type: string + - _key: endpoint_type + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is a gateway. + entity_fieldname: endpoint_type + example: '' + in: body + maxLength: 64 + parameter_fieldname: endpoint_type + required: false + type: string + - _key: host_gateway + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind Edge + has this host_gateway set. + entity_fieldname: host_gateway + example: '' + in: body + parameter_fieldname: host_gateway + required: false + type: string + - _key: issuer_fingerprint + api_fieldname: issuer_fingerprint + description: SHA256 fingerprint of the certificate used to validate the signature + of the device certificate. + entity_fieldname: issuer_fingerprint + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + in: body + parameter_fieldname: issuer_fingerprint + pattern: '[A-Fa-f0-9]{64}' + required: false + type: string + x-nullable: true + - _key: manifest + api_fieldname: manifest + description: 'DEPRECATED: The URL for the current device manifest.' + entity_fieldname: manifest + example: '' + in: body + parameter_fieldname: manifest + required: false + type: string + - _key: mechanism + api_fieldname: mechanism + description: 'NOT USED: The ID of the channel used to communicate with the device.' + entity_fieldname: mechanism + enum: + - connector + - direct + enum_reference: device_mechanism_enum + in: body + parameter_fieldname: mechanism + required: false + type: string + - _key: mechanism_url + api_fieldname: mechanism_url + description: 'NOT USED: The address of the connector to use.' + entity_fieldname: mechanism_url + example: '' + in: body + parameter_fieldname: mechanism_url + required: false + type: string + - _key: name + api_fieldname: name + description: The name given by the web application for the device. Device itself + provides only the endpoint_name. + entity_fieldname: name + example: 00000000-0000-0000-0000-000000000000 + in: body + maxLength: 128 + parameter_fieldname: name + required: false + type: string + - _key: serial_number + api_fieldname: serial_number + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during manufacturing. + entity_fieldname: serial_number + example: 00000000-0000-0000-0000-000000000000 + in: body + parameter_fieldname: serial_number + required: false + type: string + - _key: state + api_fieldname: state + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped or + connected to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This state + is set only while bootstrapping is in progress. For example, an external CA + gives an error, and the device tries to bootstrap again after few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. [Device + commands](https://www.pelion.com/docs/device-management-api/connect/) can + be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + entity_fieldname: state + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered + enum_reference: device_state_enum + in: body + parameter_fieldname: state + required: false + type: string + - _key: vendor_id + api_fieldname: vendor_id + description: The device vendor ID. + entity_fieldname: vendor_id + example: 00000000-0000-0000-0000-000000000000 + in: body + parameter_fieldname: vendor_id + required: false + type: string + group_id: Devices + method: post + mode: create + operation_id: Device_create + pagination: false + path: /v3/devices/ + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: Device created. + schema: + - _key: foreign_key + entity: device + group: Devices + - _key: properties + account_id: + api_fieldname: account_id + description: The ID of the associated account. + entity_fieldname: account_id + example: '00000000000000000000000000000000' + type: string + auto_update: + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + entity_fieldname: auto_update + type: boolean + bootstrap_expiration_date: + api_fieldname: bootstrap_expiration_date + description: The expiration date of the certificate used to connect to bootstrap + server. + entity_fieldname: bootstrap_expiration_date + format: date + type: string + x-nullable: true + bootstrapped_timestamp: + api_fieldname: bootstrapped_timestamp + description: The timestamp of the device's most recent bootstrap process. + entity_fieldname: bootstrapped_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: object - description: 'Entity name: `error`.' + ca_id: + api_fieldname: ca_id + description: The certificate issuer's ID. + entity_fieldname: ca_id + example: '00000000000000000000000000000000' + maxLength: 500 type: string - - _key: request_id - description: Request ID from JWT. + component_attributes: + additionalProperties: + maxLength: 128 + type: string + api_fieldname: component_attributes + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: component_attributes + example: + key: value + maxProperties: 10 + type: object + connector_expiration_date: + api_fieldname: connector_expiration_date + description: The expiration date of the certificate used to connect to LwM2M + server. + entity_fieldname: connector_expiration_date + format: date type: string - - _key: type - description: Error type. + x-nullable: true + created_at: + api_fieldname: created_at + description: The timestamp of when the device was created in the device + directory. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 5 + type: object + deployed_state: + api_fieldname: deployed_state + description: 'DEPRECATED: The state of the device''s deployment.' + entity_fieldname: deployed_state + enum: + - development + - production type: string - - _key: object - description: 'Entity name: `error`.' + deployment: + api_fieldname: deployment + description: 'DEPRECATED: The last deployment used on the device.' + entity_fieldname: deployment + example: '' type: string - - _key: request_id - description: Request ID from JWT. + description: + api_fieldname: description + description: The description of the device. + entity_fieldname: description + example: Temperature measuring device + maxLength: 2000 type: string - - _key: type - description: Error type. + device_class: + api_fieldname: device_class + description: An ID representing the model and hardware revision of the device. + entity_fieldname: device_class + example: '' + maxLength: 32 type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '409' - description: 'Conflict. A certificate issuer with this name already exists. - - ' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 + device_execution_mode: + api_fieldname: device_execution_mode + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ + \ Unspecified execution mode (default if host_gateway invalid or not set).\ + \ The device firmware uses a certificate that is not identified as a developer\ + \ or production certificate.\n - 1 - Development device. The device firmware\ + \ uses a developer certificate to communicate with Device Management.\n\ + \ - 5 - Production device. The device firmware uses a factory-generated\ + \ certificate to communicate with Device Management." + entity_fieldname: device_execution_mode + enum: + - 0 + - 1 + - 5 + example: 0 type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. + device_key: + api_fieldname: device_key + description: The fingerprint of the device certificate. + entity_fieldname: device_key + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 type: string - - _key: type - description: Error type. + endpoint_name: + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is + from the device certificate and is set by factory tool. + entity_fieldname: endpoint_name + example: 00000000-0000-0000-0000-000000000000 + readOnly: true type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '424' - description: 'The request failed due to customer configured external service. - - ' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + endpoint_type: + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is + a gateway. + entity_fieldname: endpoint_type + example: '' + maxLength: 64 type: string - - _key: object - description: 'Entity name: `error`.' + enrolment_list_timestamp: + api_fieldname: enrolment_list_timestamp + description: The claim date/time. + entity_fieldname: enrolment_list_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: request_id - description: Request ID from JWT. + etag: + api_fieldname: etag + description: The entity instance signature. + entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: type - description: Error type. + firmware_checksum: + api_fieldname: firmware_checksum + description: The SHA256 checksum of the current firmware image. + entity_fieldname: firmware_checksum + example: '0000000000000000000000000000000000000000000000000000000000000000' type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: certificate_issuer - return_type: certificate_issuer - summary: Create certificate issuer. - x_deprecation: null - x_filter: {} - - _key: delete - description: 'Delete a certificate issuer by ID. - -
- - **Example usage:** - - - ``` - - curl -X DELETE \ - - -H ''authorization: '' \ - - https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/0162155dc77d507b9d48a91b00000000 - - ``` - - ' - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: id - api_fieldname: certificate-issuer-id - description: 'Certificate issuer ID.
The ID of the certificate issuer. - - An active certificate issuer may not be deleted. - - ' - entity_fieldname: id - external_param: false - in: path - name: certificate-issuer-id - parameter_fieldname: certificate-issuer-id - required: true - type: string - group_id: Security - method: delete - mode: delete - operation_id: deleteCertificateIssuer - pagination: false - parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers/{certificate-issuer-id} - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Certificate issuer deleted. - - _key: '400' - description: 'Validation error: An active certificate issuer cannot be deleted. - - ' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. + groups: + api_fieldname: groups + description: An array containing an ID of each group this device belongs + to. + entity_fieldname: groups items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object + example: '00000000000000000000000000000000' + type: string type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' + host_gateway: + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind + Edge has this host_gateway set. + entity_fieldname: host_gateway + example: '' type: string - - _key: request_id - description: Request ID from JWT. + id: + api_fieldname: id + description: The ID of the device. The device ID is used across all Device + Management APIs. + entity_fieldname: id + example: '00000000000000000000000000000000' type: string - - _key: type - description: Error type. + issuer_fingerprint: + api_fieldname: issuer_fingerprint + description: SHA256 fingerprint of the certificate used to validate the + signature of the device certificate. + entity_fieldname: issuer_fingerprint + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + x-nullable: true + last_operator_suspended_category: + api_fieldname: last_operator_suspended_category + description: The reference of the block category. + entity_fieldname: last_operator_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' type: string - - _key: object - description: 'Entity name: `error`.' + last_operator_suspended_description: + api_fieldname: last_operator_suspended_description + description: The most recent description why the device was suspended or + returned to service. + entity_fieldname: last_operator_suspended_description + example: Suspended for maintenance. + maxLength: 2000 type: string - - _key: request_id - description: Request ID from JWT. + last_operator_suspended_updated_at: + api_fieldname: last_operator_suspended_updated_at + description: The timestamp of the most recent suspension activity. + entity_fieldname: last_operator_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: type - description: Error type. + last_system_suspended_category: + api_fieldname: last_system_suspended_category + description: The reference of the block category. + entity_fieldname: last_system_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + last_system_suspended_description: + api_fieldname: last_system_suspended_description + description: The most recent description of why the device was blocked or + unblocked by the system. + entity_fieldname: last_system_suspended_description + example: A certificate in the device's certificate chain was blacklisted + by the system. + maxLength: 2000 type: string - - _key: object - description: 'Entity name: `error`.' + last_system_suspended_updated_at: + api_fieldname: last_system_suspended_updated_at + description: The timestamp of the most recent system block activity. + entity_fieldname: last_system_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: request_id - description: Request ID from JWT. + lifecycle_status: + api_fieldname: lifecycle_status + description: 'The lifecycle status of the device. + + * Enabled: The device is allowed to connect to Pelion Device Management. + + * Blocked: The device is prevented from connecting to Pelion Device Management. + Device can be, for example, ''suspended''.' + entity_fieldname: lifecycle_status + enum: + - enabled + - blocked + example: enabled type: string - - _key: type - description: Error type. + manifest: + api_fieldname: manifest + description: 'DEPRECATED: The URL for the current device manifest.' + entity_fieldname: manifest + example: '' type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Not found. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + manifest_timestamp: + api_fieldname: manifest_timestamp + description: The timestamp of the current manifest version. + entity_fieldname: manifest_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: object - description: 'Entity name: `error`.' + mechanism: + api_fieldname: mechanism + description: 'NOT USED: The ID of the channel used to communicate with the + device.' + entity_fieldname: mechanism + enum: + - connector + - direct type: string - - _key: request_id - description: Request ID from JWT. + mechanism_url: + api_fieldname: mechanism_url + description: 'NOT USED: The address of the connector to use.' + entity_fieldname: mechanism_url + example: '' type: string - - _key: type - description: Error type. + name: + api_fieldname: name + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. + entity_fieldname: name + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object + net_id: + api_fieldname: net_id + default: '' + description: Private network identifier. Used to group nodes connected to + a specific border router. + entity_fieldname: net_id + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: + api_fieldname: object + description: The API resource entity. + entity_fieldname: object + example: device + type: string + operator_suspended: + api_fieldname: operator_suspended + description: Device has been suspended by operator. + entity_fieldname: operator_suspended + type: boolean + serial_number: + api_fieldname: serial_number + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + entity_fieldname: serial_number + example: 00000000-0000-0000-0000-000000000000 + type: string + state: + api_fieldname: state + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This + state is set only while bootstrapping is in progress. For example, an + external CA gives an error, and the device tries to bootstrap again after + few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. + [Device commands](https://www.pelion.com/docs/device-management-api/connect/) + can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + entity_fieldname: state + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered + type: string + system_suspended: + api_fieldname: system_suspended + description: Is the device suspended by the system? + entity_fieldname: system_suspended + type: boolean + updated_at: + api_fieldname: updated_at + description: The time this data object was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + vendor_id: + api_fieldname: vendor_id + description: The device vendor ID. + entity_fieldname: vendor_id + example: 00000000-0000-0000-0000-000000000000 + type: string + - _key: '400' + description: 'Validation error: The data used to create the device did not validate.' + - _key: '401' + description: Not authenticated. + - _key: '403' + description: Account limit reached. Could not create device. + - _key: '409' + description: Unique-constrained fields are used by other resources. return_info: custom: false self: true - type: certificate_issuer - return_type: certificate_issuer - summary: Delete certificate issuer. + type: device + return_type: device + summary: Create a device. + x_deprecation: null + x_filter: {} + - _key: delete + description: Delete device. Only available for devices with a developer certificate. + Attempting to delete a device with a production certificate returns a 400 response. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: The [Device ID](https://www.pelion.com/docs/device-management/current/connecting/device-identity.html) + created by Device Management. + entity_fieldname: id + external_param: false + in: path + name: id + parameter_fieldname: id + required: true + type: string + group_id: Devices + method: delete + mode: delete + operation_id: Device_destroy + pagination: false + path: /v3/devices/{id}/ + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Device deleted. + - _key: '400' + description: Bad request. + - _key: '401' + description: Not authenticated. + - _key: '404' + description: Unable to delete device because it can't be found. + return_info: + custom: false + self: true + type: device + return_type: device + summary: Delete a device. x_deprecation: null x_filter: {} - _key: list - description: 'Note: This endpoint does not implement pagination and therefore, - list control parameters such as `limit` or `after` will be ignored by the system. + description: 'List all devices enrolled to Device Management for the account. - ' + + **Example:** + + Following example filters devices according to state field and returns only + devices in ''registered'' state: + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter + - data - has_more - total_count - - data + - lifecycle_status__eq + - lifecycle_status__neq + - lifecycle_status__in + - lifecycle_status__nin + - operator_suspended__eq + - operator_suspended__neq + - last_operator_suspended_category__eq + - last_operator_suspended_category__neq + - last_operator_suspended_category__in + - last_operator_suspended_category__nin + - last_operator_suspended_updated_at__in + - last_operator_suspended_updated_at__nin + - last_operator_suspended_updated_at__lte + - last_operator_suspended_updated_at__gte + - system_suspended__eq + - system_suspended__neq + - last_system_suspended_category__eq + - last_system_suspended_category__neq + - last_system_suspended_category__in + - last_system_suspended_category__nin + - last_system_suspended_updated_at__in + - last_system_suspended_updated_at__nin + - last_system_suspended_updated_at__lte + - last_system_suspended_updated_at__gte + - account_id__eq + - account_id__neq + - account_id__in + - account_id__nin + - auto_update__eq + - auto_update__neq + - bootstrap_expiration_date__in + - bootstrap_expiration_date__nin + - bootstrap_expiration_date__lte + - bootstrap_expiration_date__gte + - bootstrapped_timestamp__in + - bootstrapped_timestamp__nin + - bootstrapped_timestamp__lte + - bootstrapped_timestamp__gte + - ca_id__eq + - ca_id__neq + - ca_id__in + - ca_id__nin + - connector_expiration_date__in + - connector_expiration_date__nin + - connector_expiration_date__lte + - connector_expiration_date__gte + - created_at__in + - created_at__nin + - created_at__lte + - created_at__gte + - deployed_state__eq + - deployed_state__neq + - deployed_state__in + - deployed_state__nin + - deployment__eq + - deployment__neq + - deployment__in + - deployment__nin + - description__eq + - description__neq + - description__in + - description__nin + - device_class__eq + - device_class__neq + - device_class__in + - device_class__nin + - device_execution_mode__eq + - device_execution_mode__neq + - device_execution_mode__in + - device_execution_mode__nin + - device_key__eq + - device_key__neq + - device_key__in + - device_key__nin + - endpoint_name__eq + - endpoint_name__neq + - endpoint_name__in + - endpoint_name__nin + - endpoint_type__eq + - endpoint_type__neq + - endpoint_type__in + - endpoint_type__nin + - enrolment_list_timestamp__in + - enrolment_list_timestamp__nin + - enrolment_list_timestamp__lte + - enrolment_list_timestamp__gte + - firmware_checksum__eq + - firmware_checksum__neq + - firmware_checksum__in + - firmware_checksum__nin + - host_gateway__eq + - host_gateway__neq + - host_gateway__in + - host_gateway__nin + - id__eq + - id__neq + - id__in + - id__nin + - manifest__eq + - manifest__neq + - manifest__in + - manifest__nin + - manifest_timestamp__in + - manifest_timestamp__nin + - manifest_timestamp__lte + - manifest_timestamp__gte + - mechanism__eq + - mechanism__neq + - mechanism__in + - mechanism__nin + - mechanism_url__eq + - mechanism_url__neq + - mechanism_url__in + - mechanism_url__nin + - name__eq + - name__neq + - name__in + - name__nin + - net_id__eq + - net_id__neq + - net_id__in + - net_id__nin + - serial_number__eq + - serial_number__neq + - serial_number__in + - serial_number__nin + - state__eq + - state__neq + - state__in + - state__nin + - updated_at__in + - updated_at__nin + - updated_at__lte + - updated_at__gte + - vendor_id__eq + - vendor_id__neq + - vendor_id__in + - vendor_id__nin field_renames: [] fields: - _key: after api_fieldname: after - description: The ID of The item after which to retrieve the next page. + description: The ID of the item after which to retrieve the next page. entity_fieldname: after example: '01631667477600000000000100100374' external_param: true @@ -14867,7 +25095,7 @@ entities: - _key: include api_fieldname: include description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`' + `total_count`.' entity_fieldname: include external_param: true in: query @@ -14877,9 +25105,8 @@ entities: type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to the - closest limit. + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. entity_fieldname: limit example: 50 external_param: true @@ -14892,8 +25119,7 @@ entities: type: integer - _key: order api_fieldname: order - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order example: DESC external_param: true @@ -14903,102 +25129,322 @@ entities: required: false type: string foreign_key: - entity: certificate_issuer - group: Security + entity: device + group: Devices foreign_key_priority: self - group_id: Security + group_id: Devices method: get mode: list - operation_id: getCertificateIssuers + operation_id: Device_list pagination: true - parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers + path: /v3/devices/ request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. + description: Request successful. schema: foreign_key: - entity: certificate_issuer - group: Security + entity: device + group: Devices pagination: true properties: - _key: after api_fieldname: after - description: The ID of The item after which to retrieve the next page. + description: An offset token for current page. entity_fieldname: after example: '01631667477600000000000100100374' - external_param: true - in: query - name: after - parameter_fieldname: after - required: false type: string - _key: data api_fieldname: data - description: List of certificate issuers. entity_fieldname: data items: - foreign_key: - entity: certificate_issuer - group: Security - properties: - - _key: created_at - description: Creation UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + - _key: foreign_key + entity: device + group: Devices + - _key: properties + account_id: + description: The ID of the associated account. + example: '00000000000000000000000000000000' + type: string + auto_update: + description: 'DEPRECATED: Mark this device for automatic firmware update.' + type: boolean + bootstrap_expiration_date: + description: The expiration date of the certificate used to connect + to bootstrap server. + format: date + type: string + x-nullable: true + bootstrapped_timestamp: + description: The timestamp of the device's most recent bootstrap process. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + ca_id: + description: The certificate issuer's ID. + example: '00000000000000000000000000000000' + maxLength: 500 + type: string + component_attributes: + additionalProperties: + maxLength: 128 + type: string + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 10 + type: object + connector_expiration_date: + description: The expiration date of the certificate used to connect + to LwM2M server. + format: date + type: string + x-nullable: true + created_at: + description: The timestamp of when the device was created in the device + directory. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to five custom key-value attributes. Note that keys + cannot begin with a number. Both keys and values are limited to 128 + characters. Updating this field replaces existing contents. + example: + key: value + maxProperties: 5 + type: object + deployed_state: + description: 'DEPRECATED: The state of the device''s deployment.' + enum: + - development + - production + type: string + deployment: + description: 'DEPRECATED: The last deployment used on the device.' + example: '' + type: string + description: + description: The description of the device. + example: Temperature measuring device + maxLength: 2000 + type: string + device_class: + description: An ID representing the model and hardware revision of the + device. + example: '' + maxLength: 32 + type: string + device_execution_mode: + default: 0 + description: "The execution mode from the certificate of the device.\ + \ Defaults to inheriting from host_gateway device.\nPermitted values:\n\ + \ - 0 - Unspecified execution mode (default if host_gateway invalid\ + \ or not set). The device firmware uses a certificate that is not\ + \ identified as a developer or production certificate.\n - 1 - Development\ + \ device. The device firmware uses a developer certificate to communicate\ + \ with Device Management.\n - 5 - Production device. The device firmware\ + \ uses a factory-generated certificate to communicate with Device\ + \ Management." + enum: + - 0 + - 1 + - 5 + example: 0 + type: integer + device_key: + description: The fingerprint of the device certificate. + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 + type: string + endpoint_name: + description: The endpoint name given to the device. The endpoint_name + is from the device certificate and is set by factory tool. + example: 00000000-0000-0000-0000-000000000000 + readOnly: true + type: string + endpoint_type: + description: The endpoint type of the device. For example, the device + is a gateway. + example: '' + maxLength: 64 + type: string + enrolment_list_timestamp: + description: The claim date/time. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + description: The entity instance signature. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + firmware_checksum: + description: The SHA256 checksum of the current firmware image. + example: '0000000000000000000000000000000000000000000000000000000000000000' + type: string + groups: + description: An array containing an ID of each group this device belongs + to. + items: + example: '00000000000000000000000000000000' + type: string + type: array + host_gateway: + description: The ID of the host gateway, if appropriate. A device behind + Edge has this host_gateway set. + example: '' + type: string + id: + description: The ID of the device. The device ID is used across all + Device Management APIs. + example: '00000000000000000000000000000000' + type: string + issuer_fingerprint: + description: SHA256 fingerprint of the certificate used to validate + the signature of the device certificate. + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' + type: string + x-nullable: true + last_operator_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_operator_suspended_description: + description: The most recent description why the device was suspended + or returned to service. + example: Suspended for maintenance. + maxLength: 2000 + type: string + last_operator_suspended_updated_at: + description: The timestamp of the most recent suspension activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + last_system_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_system_suspended_description: + description: The most recent description of why the device was blocked + or unblocked by the system. + example: A certificate in the device's certificate chain was blacklisted + by the system. + maxLength: 2000 + type: string + last_system_suspended_updated_at: + description: The timestamp of the most recent system block activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + lifecycle_status: + description: 'The lifecycle status of the device. + + * Enabled: The device is allowed to connect to Pelion Device Management. + + * Blocked: The device is prevented from connecting to Pelion Device + Management. Device can be, for example, ''suspended''.' + enum: + - enabled + - blocked + example: enabled + type: string + manifest: + description: 'DEPRECATED: The URL for the current device manifest.' + example: '' + type: string + manifest_timestamp: + description: The timestamp of the current manifest version. + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - - _key: description - description: General description for the certificate issuer. - example: GlobalSign sample issuer - maxLength: 100 + mechanism: + description: 'NOT USED: The ID of the channel used to communicate with + the device.' + enum: + - connector + - direct type: string - x-nullable: true - - _key: etag - description: Entity instance signature. - example: '1' + mechanism_url: + description: 'NOT USED: The address of the connector to use.' + example: '' type: string - - _key: id - description: The ID of the certificate issuer. - example: 01234567890ABCDEF01234567890ABCDEF + name: + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 type: string - - _key: issuer_attributes - additionalProperties: - type: string - description: 'General attributes for connecting the certificate issuer. + net_id: + default: '' + description: Private network identifier. Used to group nodes connected + to a specific border router. + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: + description: The API resource entity. + example: device + type: string + operator_suspended: + description: Device has been suspended by operator. + type: boolean + serial_number: + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + example: 00000000-0000-0000-0000-000000000000 + type: string + state: + description: 'The current state of the device. - When the issuer_type is GLOBAL_SIGN, the value shall be empty. + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. + * Cloud_enrolling: The device is bootstrapping for the first time. + This state is set only while bootstrapping is in progress. For example, + an external CA gives an error, and the device tries to bootstrap again + after few seconds. - ' - example: [] - type: object - - _key: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n\ - \ Certificates are issued by GlobalSign service. The users must provide\ - \ their own GlobalSign account credentials.\n- CFSSL_AUTH:\n Certificates\ - \ are issued by CFSSL authenticated signing service.\n The users\ - \ must provide their own CFSSL host_url and credentials.\n" + * Bootstrapped: The device has bootstrapped, and has credentials to + connect to Device Management. + + * Registered: The device has registered with Pelion Device Management. + [Device commands](https://www.pelion.com/docs/device-management-api/connect/) + can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' enum: - - GLOBAL_SIGN - - CFSSL_AUTH - example: GLOBAL_SIGN + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered type: string - - _key: name - description: Certificate issuer name, unique per account. - example: GS Issuer - maxLength: 50 + system_suspended: + description: Is the device suspended by the system? + type: boolean + updated_at: + description: The time this data object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: object - enum: - - certificate-issuer + vendor_id: + description: The device vendor ID. + example: 00000000-0000-0000-0000-000000000000 type: string - required: - - issuer_type - type: object type: array - _key: has_more api_fieldname: has_more @@ -15013,17 +25459,12 @@ entities: to the closest limit. entity_fieldname: limit example: 50 - external_param: true - in: query maximum: 1000 minimum: 2 - name: limit - parameter_fieldname: limit - required: false type: integer - _key: object api_fieldname: object - description: The type of this API object is a `list`. + description: The type of this API object is a "list". entity_fieldname: object example: list type: string @@ -15033,11 +25474,6 @@ entities: by default `ASC`. entity_fieldname: order example: DESC - external_param: true - in: query - name: order - parameter_fieldname: order - required: false type: string - _key: total_count api_fieldname: total_count @@ -15045,585 +25481,754 @@ entities: example: 1 format: integer type: integer - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: certificate_issuer - return_type: paginated_response(certificate_issuer) - summary: Get certificate issuers list. - x_deprecation: null - x_filter: {} - - _key: read - description: (No description provided) - drop_fields: - - object - - etag - - type - - filter - - created_at - - issuer_type - - name - - description - - issuer_attributes - field_renames: [] - fields: - - _key: id - api_fieldname: id - description: The ID of the certificate issuer. - entity_fieldname: id - example: 01234567890ABCDEF01234567890ABCDEF - in: path - parameter_fieldname: certificate-issuer-id - required: true - type: string - group_id: Security - method: get - mode: read - operation_id: getCertificateIssuer - pagination: false - parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers/{certificate-issuer-id} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: OK. - schema: - foreign_key: - entity: certificate_issuer - group: Security - properties: - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - - _key: description - api_fieldname: description - description: General description for the certificate issuer. - entity_fieldname: description - example: GlobalSign sample issuer - maxLength: 100 - type: string - x-nullable: true - - _key: etag - api_fieldname: etag - description: Entity instance signature. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: The ID of the certificate issuer. - entity_fieldname: id - example: 01234567890ABCDEF01234567890ABCDEF - type: string - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - entity_fieldname: issuer_attributes - example: [] - type: object - - _key: issuer_type - api_fieldname: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" - entity_fieldname: issuer_type - enum: - - GLOBAL_SIGN - - CFSSL_AUTH - example: GLOBAL_SIGN - type: string - - _key: name - api_fieldname: name - description: Certificate issuer name, unique per account. - entity_fieldname: name - example: GS Issuer - maxLength: 50 - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-issuer - type: string - required: - - issuer_type - type: object - _key: '400' - description: 'Validation error: The data used to get the certificate issuer - failed validation. - - ' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object + description: Bad request. - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object + description: Not authenticated. - _key: '404' - description: Not found. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object + description: Unable to find page. return_info: custom: false self: true - type: certificate_issuer - return_type: certificate_issuer - summary: Get certificate issuer by ID. + type: device + return_type: paginated_response(device) + summary: List all devices. x_deprecation: null - x_filter: {} - - _key: update - description: "Update a certificate issuer.\n
\n**Example usage:**\n\n```\n\ - curl -X PUT \\\n-H 'authorization: ' \\\n-H 'content-type:\ - \ application/json;charset=UTF-8' \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621560be51507b9d48a91b00000000\ - \ \\\n-d '{\n \"description\": \"Sample GlobalSign certificate issuer - updated.\"\ - ,\n \"name\": \"GlobalSign Issuer\"\n}'\n```\n" + x_filter: + account_id: + - eq + - neq + - in + - nin + auto_update: + - eq + - neq + bootstrap_expiration_date: + - in + - nin + - lte + - gte + bootstrapped_timestamp: + - in + - nin + - lte + - gte + ca_id: + - eq + - neq + - in + - nin + connector_expiration_date: + - in + - nin + - lte + - gte + created_at: + - in + - nin + - lte + - gte + deployed_state: + - eq + - neq + - in + - nin + deployment: + - eq + - neq + - in + - nin + description: + - eq + - neq + - in + - nin + device_class: + - eq + - neq + - in + - nin + device_execution_mode: + - eq + - neq + - in + - nin + device_key: + - eq + - neq + - in + - nin + endpoint_name: + - eq + - neq + - in + - nin + endpoint_type: + - eq + - neq + - in + - nin + enrolment_list_timestamp: + - in + - nin + - lte + - gte + firmware_checksum: + - eq + - neq + - in + - nin + host_gateway: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + last_operator_suspended_category: + - eq + - neq + - in + - nin + last_operator_suspended_updated_at: + - in + - nin + - lte + - gte + last_system_suspended_category: + - eq + - neq + - in + - nin + last_system_suspended_updated_at: + - in + - nin + - lte + - gte + lifecycle_status: + - eq + - neq + - in + - nin + manifest: + - eq + - neq + - in + - nin + manifest_timestamp: + - in + - nin + - lte + - gte + mechanism: + - eq + - neq + - in + - nin + mechanism_url: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + net_id: + - eq + - neq + - in + - nin + operator_suspended: + - eq + - neq + serial_number: + - eq + - neq + - in + - nin + state: + - eq + - neq + - in + - nin + system_suspended: + - eq + - neq + updated_at: + - in + - nin + - lte + - gte + vendor_id: + - eq + - neq + - in + - nin + - _key: read + description: 'Retrieve information about a specific device. This API returns [DeviceData](https://www.pelion.com/docs/device-management-api/device-directory/). + If you want to see the structure of resources in the device or the actual resource + values, use the [Connect API](https://www.pelion.com/docs/device-management-api/connect/). + + + **Example:** + + Following example must be updated with the device''s ID to the URL. The id is + from of "01667c6e992c00000000000100100370" + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter + - device_execution_mode + - groups + - issuer_fingerprint + - operator_suspended + - last_operator_suspended_category + - last_operator_suspended_description + - last_operator_suspended_updated_at + - system_suspended + - last_system_suspended_category + - last_system_suspended_description + - last_system_suspended_updated_at + - lifecycle_status + - account_id + - auto_update + - bootstrap_expiration_date + - bootstrapped_timestamp + - ca_id + - component_attributes + - connector_expiration_date - created_at - - issuer_type + - custom_attributes + - deployed_state + - deployment + - description + - device_class + - device_key + - endpoint_name + - endpoint_type + - firmware_checksum + - host_gateway + - manifest + - manifest_timestamp + - mechanism + - mechanism_url + - name + - net_id + - serial_number + - state + - updated_at + - vendor_id + - enrolment_list_timestamp field_renames: [] fields: - - _key: description - api_fieldname: description - description: General description for the certificate issuer. - entity_fieldname: description - example: GlobalSign sample issuer - in: body - maxLength: 100 - parameter_fieldname: description - required: false - type: string - x-nullable: true - _key: id api_fieldname: id - description: The ID of the certificate issuer. + description: The ID of the device. The device ID is used across all Device Management + APIs. entity_fieldname: id - example: 01234567890ABCDEF01234567890ABCDEF + example: '00000000000000000000000000000000' in: path - parameter_fieldname: certificate-issuer-id + parameter_fieldname: id required: true type: string - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. - - ' - entity_fieldname: issuer_attributes - example: [] - in: body - parameter_fieldname: issuer_attributes - required: false - type: object - - _key: issuer_credentials - additionalProperties: - type: string - api_fieldname: issuer_credentials - description: 'The credentials required for connecting to the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, see definition of GlobalSignCredentials. - - When the issuer_type is CFSSL_AUTH, see definition of CfsslAuthCredentials. - - ' - entity_fieldname: issuer_credentials - example: [] - external_param: true - in: body - name: issuer_credentials - parameter_fieldname: issuer_credentials - required: false - schema_param: true - type: object - - _key: name - api_fieldname: name - description: Certificate issuer name, unique per account. - entity_fieldname: name - example: GS Issuer - in: body - maxLength: 50 - parameter_fieldname: name - required: false - type: string - group_id: Security - method: put - mode: update - operation_id: updateCertificateIssuer + group_id: Devices + method: get + mode: read + operation_id: Device_retrieve pagination: false - parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers/{certificate-issuer-id} + path: /v3/devices/{id}/ request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. + description: Retrieved result successfully. schema: - foreign_key: - entity: certificate_issuer - group: Security - properties: - - _key: created_at + - _key: foreign_key + entity: device + group: Devices + - _key: properties + account_id: + api_fieldname: account_id + description: The ID of the associated account. + entity_fieldname: account_id + example: '00000000000000000000000000000000' + type: string + auto_update: + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + entity_fieldname: auto_update + type: boolean + bootstrap_expiration_date: + api_fieldname: bootstrap_expiration_date + description: The expiration date of the certificate used to connect to bootstrap + server. + entity_fieldname: bootstrap_expiration_date + format: date + type: string + x-nullable: true + bootstrapped_timestamp: + api_fieldname: bootstrapped_timestamp + description: The timestamp of the device's most recent bootstrap process. + entity_fieldname: bootstrapped_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + ca_id: + api_fieldname: ca_id + description: The certificate issuer's ID. + entity_fieldname: ca_id + example: '00000000000000000000000000000000' + maxLength: 500 + type: string + component_attributes: + additionalProperties: + maxLength: 128 + type: string + api_fieldname: component_attributes + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: component_attributes + example: + key: value + maxProperties: 10 + type: object + connector_expiration_date: + api_fieldname: connector_expiration_date + description: The expiration date of the certificate used to connect to LwM2M + server. + entity_fieldname: connector_expiration_date + format: date + type: string + x-nullable: true + created_at: api_fieldname: created_at - description: Creation UTC time RFC3339. + description: The timestamp of when the device was created in the device + directory. entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - - _key: description + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 5 + type: object + deployed_state: + api_fieldname: deployed_state + description: 'DEPRECATED: The state of the device''s deployment.' + entity_fieldname: deployed_state + enum: + - development + - production + type: string + deployment: + api_fieldname: deployment + description: 'DEPRECATED: The last deployment used on the device.' + entity_fieldname: deployment + example: '' + type: string + description: api_fieldname: description - description: General description for the certificate issuer. + description: The description of the device. entity_fieldname: description - example: GlobalSign sample issuer - maxLength: 100 + example: Temperature measuring device + maxLength: 2000 type: string - x-nullable: true - - _key: etag + device_class: + api_fieldname: device_class + description: An ID representing the model and hardware revision of the device. + entity_fieldname: device_class + example: '' + maxLength: 32 + type: string + device_execution_mode: + api_fieldname: device_execution_mode + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ + \ Unspecified execution mode (default if host_gateway invalid or not set).\ + \ The device firmware uses a certificate that is not identified as a developer\ + \ or production certificate.\n - 1 - Development device. The device firmware\ + \ uses a developer certificate to communicate with Device Management.\n\ + \ - 5 - Production device. The device firmware uses a factory-generated\ + \ certificate to communicate with Device Management." + entity_fieldname: device_execution_mode + enum: + - 0 + - 1 + - 5 + example: 0 + type: integer + device_key: + api_fieldname: device_key + description: The fingerprint of the device certificate. + entity_fieldname: device_key + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 + type: string + endpoint_name: + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is + from the device certificate and is set by factory tool. + entity_fieldname: endpoint_name + example: 00000000-0000-0000-0000-000000000000 + readOnly: true + type: string + endpoint_type: + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is + a gateway. + entity_fieldname: endpoint_type + example: '' + maxLength: 64 + type: string + enrolment_list_timestamp: + api_fieldname: enrolment_list_timestamp + description: The claim date/time. + entity_fieldname: enrolment_list_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: api_fieldname: etag - description: Entity instance signature. + description: The entity instance signature. entity_fieldname: etag - example: '1' + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: id + firmware_checksum: + api_fieldname: firmware_checksum + description: The SHA256 checksum of the current firmware image. + entity_fieldname: firmware_checksum + example: '0000000000000000000000000000000000000000000000000000000000000000' + type: string + groups: + api_fieldname: groups + description: An array containing an ID of each group this device belongs + to. + entity_fieldname: groups + items: + example: '00000000000000000000000000000000' + type: string + type: array + host_gateway: + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind + Edge has this host_gateway set. + entity_fieldname: host_gateway + example: '' + type: string + id: api_fieldname: id - description: The ID of the certificate issuer. + description: The ID of the device. The device ID is used across all Device + Management APIs. entity_fieldname: id - example: 01234567890ABCDEF01234567890ABCDEF + example: '00000000000000000000000000000000' type: string - - _key: issuer_attributes - additionalProperties: - type: string - api_fieldname: issuer_attributes - description: 'General attributes for connecting the certificate issuer. - - When the issuer_type is GLOBAL_SIGN, the value shall be empty. + issuer_fingerprint: + api_fieldname: issuer_fingerprint + description: SHA256 fingerprint of the certificate used to validate the + signature of the device certificate. + entity_fieldname: issuer_fingerprint + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' + type: string + x-nullable: true + last_operator_suspended_category: + api_fieldname: last_operator_suspended_category + description: The reference of the block category. + entity_fieldname: last_operator_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_operator_suspended_description: + api_fieldname: last_operator_suspended_description + description: The most recent description why the device was suspended or + returned to service. + entity_fieldname: last_operator_suspended_description + example: Suspended for maintenance. + maxLength: 2000 + type: string + last_operator_suspended_updated_at: + api_fieldname: last_operator_suspended_updated_at + description: The timestamp of the most recent suspension activity. + entity_fieldname: last_operator_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + last_system_suspended_category: + api_fieldname: last_system_suspended_category + description: The reference of the block category. + entity_fieldname: last_system_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_system_suspended_description: + api_fieldname: last_system_suspended_description + description: The most recent description of why the device was blocked or + unblocked by the system. + entity_fieldname: last_system_suspended_description + example: A certificate in the device's certificate chain was blacklisted + by the system. + maxLength: 2000 + type: string + last_system_suspended_updated_at: + api_fieldname: last_system_suspended_updated_at + description: The timestamp of the most recent system block activity. + entity_fieldname: last_system_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + lifecycle_status: + api_fieldname: lifecycle_status + description: 'The lifecycle status of the device. - When the issuer_type is CFSSL_AUTH, see definition of CfsslAttributes. + * Enabled: The device is allowed to connect to Pelion Device Management. - ' - entity_fieldname: issuer_attributes - example: [] - type: object - - _key: issuer_type - api_fieldname: issuer_type - description: "The type of the certificate issuer.\n- GLOBAL_SIGN:\n Certificates\ - \ are issued by GlobalSign service. The users must provide their own GlobalSign\ - \ account credentials.\n- CFSSL_AUTH:\n Certificates are issued by CFSSL\ - \ authenticated signing service.\n The users must provide their own CFSSL\ - \ host_url and credentials.\n" - entity_fieldname: issuer_type + * Blocked: The device is prevented from connecting to Pelion Device Management. + Device can be, for example, ''suspended''.' + entity_fieldname: lifecycle_status + enum: + - enabled + - blocked + example: enabled + type: string + manifest: + api_fieldname: manifest + description: 'DEPRECATED: The URL for the current device manifest.' + entity_fieldname: manifest + example: '' + type: string + manifest_timestamp: + api_fieldname: manifest_timestamp + description: The timestamp of the current manifest version. + entity_fieldname: manifest_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + mechanism: + api_fieldname: mechanism + description: 'NOT USED: The ID of the channel used to communicate with the + device.' + entity_fieldname: mechanism enum: - - GLOBAL_SIGN - - CFSSL_AUTH - example: GLOBAL_SIGN + - connector + - direct type: string - - _key: name + mechanism_url: + api_fieldname: mechanism_url + description: 'NOT USED: The address of the connector to use.' + entity_fieldname: mechanism_url + example: '' + type: string + name: api_fieldname: name - description: Certificate issuer name, unique per account. + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. entity_fieldname: name - example: GS Issuer - maxLength: 50 + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 type: string - - _key: object + net_id: + api_fieldname: net_id + default: '' + description: Private network identifier. Used to group nodes connected to + a specific border router. + entity_fieldname: net_id + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: api_fieldname: object + description: The API resource entity. entity_fieldname: object + example: device + type: string + operator_suspended: + api_fieldname: operator_suspended + description: Device has been suspended by operator. + entity_fieldname: operator_suspended + type: boolean + serial_number: + api_fieldname: serial_number + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + entity_fieldname: serial_number + example: 00000000-0000-0000-0000-000000000000 + type: string + state: + api_fieldname: state + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This + state is set only while bootstrapping is in progress. For example, an + external CA gives an error, and the device tries to bootstrap again after + few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. + [Device commands](https://www.pelion.com/docs/device-management-api/connect/) + can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + entity_fieldname: state enum: - - certificate-issuer + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered + type: string + system_suspended: + api_fieldname: system_suspended + description: Is the device suspended by the system? + entity_fieldname: system_suspended + type: boolean + updated_at: + api_fieldname: updated_at + description: The time this data object was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + vendor_id: + api_fieldname: vendor_id + description: The device vendor ID. + entity_fieldname: vendor_id + example: 00000000-0000-0000-0000-000000000000 type: string - required: - - issuer_type - type: object - _key: '400' - description: 'Validation error: The data used to update the certificate issuer - failed validation. - - ' + description: Bad request. + - _key: '401' + description: Not authenticated. + - _key: '404' + description: Unable to find device. + return_info: + custom: false + self: true + type: device + return_type: device + summary: Get a device. + x_deprecation: null + x_filter: {} + - _key: remove_from_group + description: Remove one device from a group. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: device-group-id + api_fieldname: device-group-id + description: The ID of the group. + entity_fieldname: device-group-id + external_param: true + in: path + name: device-group-id + parameter_fieldname: device-group-id + required: true + type: string + - _key: id + api_fieldname: device_id + entity_fieldname: id + example: '00000000000000000000000000000000' + external_param: false + in: body + name: device_id + parameter_fieldname: device_id + required: true + schema_param: true + type: string + group_id: Devices + method: post + mode: remove_from_group + operation_id: Group_members_remove + pagination: false + parameter_map: + device_id: id + path: /v3/device-groups/{device-group-id}/devices/remove/ + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Success - device removed. + - _key: '400' + description: Bad request. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -15634,125 +26239,259 @@ entities: schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '404' + description: Not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '404' - description: Not found. + return_info: + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Remove a device from a group. + x_deprecation: null + x_filter: {} + - _key: renew_certificate + description: 'Request a certificate renewal. + + + **Example:** + + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-length: 0'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - device_id + - enroll_status + - enroll_result + - enroll_result_detail + - updated_at + field_renames: [] + fields: + - _key: certificate_name + api_fieldname: certificate-name + description: The certificate name. + entity_fieldname: certificate_name + example: customer.dlms + external_param: true + in: path + maxLength: 50 + name: certificate-name + parameter_fieldname: certificate-name + pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' + required: true + type: string + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + entity_fieldname: id + example: 01612df56f3b0a580a010fc700000000 + in: path + parameter_fieldname: device-id + required: true + type: string + foreign_key: + entity: certificate_enrollment + group: Security + group_id: Devices + method: post + mode: renew_certificate + operation_id: RequestCertificateRenewal + pagination: false + parameter_map: + certificate-name: certificate_name + device-id: id + path: /v3/devices/{device-id}/certificates/{certificate-name}/renew + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: Created. schema: + foreign_key: + entity: certificate_enrollment + group: Security properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. + - _key: certificate_name + api_fieldname: certificate_name + description: The certificate name. + entity_fieldname: certificate_name + example: customer.dlms + maxLength: 50 type: string - - _key: object - description: 'Entity name: `error`.' + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2017-01-01T00:00:00Z' + format: date-time type: string - - _key: request_id - description: Request ID from JWT. + - _key: device_id + api_fieldname: device_id + description: The device ID. + entity_fieldname: device_id + example: 01625daa23230a580a0100bd00000000 type: string - - _key: type - description: Error type. + - _key: enroll_result + api_fieldname: enroll_result + description: The result of certificate enrollment request. + entity_fieldname: enroll_result + enum: + - success + - failure + example: success + type: string + - _key: enroll_result_detail + api_fieldname: enroll_result_detail + description: Additional information in case of failure. + entity_fieldname: enroll_result_detail + example: The device is currently processing too many certificate renewals. + type: string + - _key: enroll_status + api_fieldname: enroll_status + description: The status of certificate enrollment request. + entity_fieldname: enroll_status + enum: + - new + - completed + type: string + - _key: etag + api_fieldname: etag + description: Entity instance signature. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The certificate enrollment ID. + entity_fieldname: id + example: 01612df56f3b0a580a010fc700000000 + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - certificate-enrollment + type: string + - _key: updated_at + api_fieldname: updated_at + description: Update UTC time RFC3339. + entity_fieldname: updated_at + example: '2017-01-01T00:00:00Z' + format: date-time type: string required: - - code - - fields - - message - - object - - request_id - - type + - created_at + - etag + - id + - device_id + - certificate_name type: object - - _key: '409' - description: 'Conflict. A certificate issuer with this name already exists. - - ' + - _key: '400' + description: 'Validation error: There is no certificate issuer configured for + this certificate.' schema: properties: - _key: code @@ -15791,10 +26530,8 @@ entities: - request_id - type type: object - - _key: '424' - description: 'The request failed due to customer configured external service. - - ' + - _key: '401' + description: You are not authorized to perform the action. schema: properties: - _key: code @@ -15833,108 +26570,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: certificate_issuer - return_type: certificate_issuer - summary: Update certificate issuer. - x_deprecation: null - x_filter: {} - - _key: verify - description: 'A utility API that can be used to validate the user configuration - before activating a certificate issuer. - - Verifies that the certificate issuer is accessible and can be used to generate - certificates by Device Management. - -
- - **Note:** - - The API requests the 3rd party CA to sign a test certificate. - - For some 3rd party CAs, this operation may make use of the account quota. - -
- - **Example usage:** - - - ``` - - curl -X POST \ - - -H ''authorization: '' \ - - -H ''content-type: application/json;charset=UTF-8'' \ - - https://api.us-east-1.mbedcloud.com/v3/certificate-issuers/01621a36719d507b9d48a91b00000000/verify - - ``` - - ' - drop_fields: - - object - - etag - - type - - filter - - successful - - message - field_renames: [] - fields: - - _key: id - api_fieldname: certificate-issuer-id - description: 'Certificate issuer ID.
The ID of the certificate issuer. - - ' - entity_fieldname: id - external_param: false - in: path - name: certificate-issuer-id - parameter_fieldname: certificate-issuer-id - required: true - type: string - foreign_key: - entity: verification_response - group: Security - group_id: Security - method: post - mode: verify - operation_id: verifyCertificateIssuer - pagination: false - parameter_map: - certificate-issuer-id: id - path: /v3/certificate-issuers/{certificate-issuer-id}/verify - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: OK. - schema: - foreign_key: - entity: verification_response - group: Security - properties: - - _key: message - api_fieldname: message - description: 'Provides details in case of failure. - - ' - entity_fieldname: message - example: message describing the verification failure - type: string - - _key: successful - api_fieldname: successful - description: 'Indicates whether the certificate issuer was verified successfully. - - ' - entity_fieldname: successful - example: false - type: boolean - type: object - - _key: '400' - description: Validation error + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -15973,8 +26610,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Unauthorized. + - _key: '404' + description: The device ID or certificate name is not found. schema: properties: - _key: code @@ -16013,8 +26650,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '409' + description: Conflict. A renewal request for this certificate is in progress. schema: properties: - _key: code @@ -16053,8 +26690,12 @@ entities: - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '423' + description: 'Either: + + - Operation not supported for this device. + + - The device is not connected.' schema: properties: - _key: code @@ -16093,599 +26734,922 @@ entities: - request_id - type type: object - - _key: '424' - description: 'The request failed due to customer configured external service. + return_info: + custom: false + self: false + type: certificate_enrollment + return_type: certificate_enrollment + summary: Request certificate renewal. + unaggregated: true + x_deprecation: null + x_filter: {} + - _key: update + description: 'Update a specific device. - ' + + **Example:** + + Following example will update the specific devices description field to contain + "Testing description field". + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"description": "Testing description field"}'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - device_execution_mode + - groups + - issuer_fingerprint + - operator_suspended + - last_operator_suspended_category + - last_operator_suspended_description + - last_operator_suspended_updated_at + - system_suspended + - last_system_suspended_category + - last_system_suspended_description + - last_system_suspended_updated_at + - lifecycle_status + - account_id + - bootstrap_expiration_date + - bootstrapped_timestamp + - component_attributes + - connector_expiration_date + - created_at + - deployed_state + - deployment + - device_class + - firmware_checksum + - manifest + - manifest_timestamp + - mechanism + - mechanism_url + - net_id + - serial_number + - state + - updated_at + - vendor_id + - enrolment_list_timestamp + field_renames: [] + fields: + - _key: auto_update + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + entity_fieldname: auto_update + in: body + parameter_fieldname: auto_update + required: false + type: boolean + - _key: ca_id + api_fieldname: ca_id + description: The certificate issuer's ID. + entity_fieldname: ca_id + example: '00000000000000000000000000000000' + in: body + maxLength: 500 + parameter_fieldname: ca_id + required: false + type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot begin + with a number. Both keys and values are limited to 128 characters. Updating + this field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + in: body + maxProperties: 5 + parameter_fieldname: custom_attributes + required: false + type: object + - _key: description + api_fieldname: description + description: The description of the device. + entity_fieldname: description + example: Temperature measuring device + in: body + maxLength: 2000 + parameter_fieldname: description + required: false + type: string + - _key: device_key + api_fieldname: device_key + description: The fingerprint of the device certificate. + entity_fieldname: device_key + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + in: body + maxLength: 512 + parameter_fieldname: device_key + required: false + type: string + - _key: endpoint_name + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is from + the device certificate and is set by factory tool. + entity_fieldname: endpoint_name + example: 00000000-0000-0000-0000-000000000000 + in: body + parameter_fieldname: endpoint_name + readOnly: true + required: false + type: string + - _key: endpoint_type + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is a gateway. + entity_fieldname: endpoint_type + example: '' + in: body + maxLength: 64 + parameter_fieldname: endpoint_type + required: false + type: string + - _key: host_gateway + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind Edge + has this host_gateway set. + entity_fieldname: host_gateway + example: '' + in: body + parameter_fieldname: host_gateway + required: false + type: string + - _key: id + api_fieldname: id + description: The ID of the device. The device ID is used across all Device Management + APIs. + entity_fieldname: id + example: '00000000000000000000000000000000' + in: path + parameter_fieldname: id + required: true + type: string + - _key: name + api_fieldname: name + description: The name given by the web application for the device. Device itself + provides only the endpoint_name. + entity_fieldname: name + example: 00000000-0000-0000-0000-000000000000 + in: body + maxLength: 128 + parameter_fieldname: name + required: false + type: string + group_id: Devices + method: put + mode: update + operation_id: Device_update + pagination: false + path: /v3/devices/{id}/ + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Device updated. schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 + - _key: foreign_key + entity: device + group: Devices + - _key: properties + account_id: + api_fieldname: account_id + description: The ID of the associated account. + entity_fieldname: account_id + example: '00000000000000000000000000000000' + type: string + auto_update: + api_fieldname: auto_update + description: 'DEPRECATED: Mark this device for automatic firmware update.' + entity_fieldname: auto_update + type: boolean + bootstrap_expiration_date: + api_fieldname: bootstrap_expiration_date + description: The expiration date of the certificate used to connect to bootstrap + server. + entity_fieldname: bootstrap_expiration_date + format: date + type: string + x-nullable: true + bootstrapped_timestamp: + api_fieldname: bootstrapped_timestamp + description: The timestamp of the device's most recent bootstrap process. + entity_fieldname: bootstrapped_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + ca_id: + api_fieldname: ca_id + description: The certificate issuer's ID. + entity_fieldname: ca_id + example: '00000000000000000000000000000000' + maxLength: 500 + type: string + component_attributes: + additionalProperties: + maxLength: 128 + type: string + api_fieldname: component_attributes + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: component_attributes + example: + key: value + maxProperties: 10 + type: object + connector_expiration_date: + api_fieldname: connector_expiration_date + description: The expiration date of the certificate used to connect to LwM2M + server. + entity_fieldname: connector_expiration_date + format: date + type: string + x-nullable: true + created_at: + api_fieldname: created_at + description: The timestamp of when the device was created in the device + directory. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to five custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 5 + type: object + deployed_state: + api_fieldname: deployed_state + description: 'DEPRECATED: The state of the device''s deployment.' + entity_fieldname: deployed_state + enum: + - development + - production + type: string + deployment: + api_fieldname: deployment + description: 'DEPRECATED: The last deployment used on the device.' + entity_fieldname: deployment + example: '' + type: string + description: + api_fieldname: description + description: The description of the device. + entity_fieldname: description + example: Temperature measuring device + maxLength: 2000 + type: string + device_class: + api_fieldname: device_class + description: An ID representing the model and hardware revision of the device. + entity_fieldname: device_class + example: '' + maxLength: 32 + type: string + device_execution_mode: + api_fieldname: device_execution_mode + default: 0 + description: "The execution mode from the certificate of the device. Defaults\ + \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ + \ Unspecified execution mode (default if host_gateway invalid or not set).\ + \ The device firmware uses a certificate that is not identified as a developer\ + \ or production certificate.\n - 1 - Development device. The device firmware\ + \ uses a developer certificate to communicate with Device Management.\n\ + \ - 5 - Production device. The device firmware uses a factory-generated\ + \ certificate to communicate with Device Management." + entity_fieldname: device_execution_mode + enum: + - 0 + - 1 + - 5 + example: 0 type: integer - - _key: fields - description: A list of request fields that failed validation. + device_key: + api_fieldname: device_key + description: The fingerprint of the device certificate. + entity_fieldname: device_key + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 + type: string + endpoint_name: + api_fieldname: endpoint_name + description: The endpoint name given to the device. The endpoint_name is + from the device certificate and is set by factory tool. + entity_fieldname: endpoint_name + example: 00000000-0000-0000-0000-000000000000 + readOnly: true + type: string + endpoint_type: + api_fieldname: endpoint_type + description: The endpoint type of the device. For example, the device is + a gateway. + entity_fieldname: endpoint_type + example: '' + maxLength: 64 + type: string + enrolment_list_timestamp: + api_fieldname: enrolment_list_timestamp + description: The claim date/time. + entity_fieldname: enrolment_list_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + etag: + api_fieldname: etag + description: The entity instance signature. + entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + firmware_checksum: + api_fieldname: firmware_checksum + description: The SHA256 checksum of the current firmware image. + entity_fieldname: firmware_checksum + example: '0000000000000000000000000000000000000000000000000000000000000000' + type: string + groups: + api_fieldname: groups + description: An array containing an ID of each group this device belongs + to. + entity_fieldname: groups items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object + example: '00000000000000000000000000000000' + type: string type: array - - _key: message - description: Error message. + host_gateway: + api_fieldname: host_gateway + description: The ID of the host gateway, if appropriate. A device behind + Edge has this host_gateway set. + entity_fieldname: host_gateway + example: '' type: string - - _key: object - description: 'Entity name: `error`.' + id: + api_fieldname: id + description: The ID of the device. The device ID is used across all Device + Management APIs. + entity_fieldname: id + example: '00000000000000000000000000000000' + type: string + issuer_fingerprint: + api_fieldname: issuer_fingerprint + description: SHA256 fingerprint of the certificate used to validate the + signature of the device certificate. + entity_fieldname: issuer_fingerprint + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' + type: string + x-nullable: true + last_operator_suspended_category: + api_fieldname: last_operator_suspended_category + description: The reference of the block category. + entity_fieldname: last_operator_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_operator_suspended_description: + api_fieldname: last_operator_suspended_description + description: The most recent description why the device was suspended or + returned to service. + entity_fieldname: last_operator_suspended_description + example: Suspended for maintenance. + maxLength: 2000 + type: string + last_operator_suspended_updated_at: + api_fieldname: last_operator_suspended_updated_at + description: The timestamp of the most recent suspension activity. + entity_fieldname: last_operator_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + last_system_suspended_category: + api_fieldname: last_system_suspended_category + description: The reference of the block category. + entity_fieldname: last_system_suspended_category + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_system_suspended_description: + api_fieldname: last_system_suspended_description + description: The most recent description of why the device was blocked or + unblocked by the system. + entity_fieldname: last_system_suspended_description + example: A certificate in the device's certificate chain was blacklisted + by the system. + maxLength: 2000 + type: string + last_system_suspended_updated_at: + api_fieldname: last_system_suspended_updated_at + description: The timestamp of the most recent system block activity. + entity_fieldname: last_system_suspended_updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + lifecycle_status: + api_fieldname: lifecycle_status + description: 'The lifecycle status of the device. + + * Enabled: The device is allowed to connect to Pelion Device Management. + + * Blocked: The device is prevented from connecting to Pelion Device Management. + Device can be, for example, ''suspended''.' + entity_fieldname: lifecycle_status + enum: + - enabled + - blocked + example: enabled + type: string + manifest: + api_fieldname: manifest + description: 'DEPRECATED: The URL for the current device manifest.' + entity_fieldname: manifest + example: '' + type: string + manifest_timestamp: + api_fieldname: manifest_timestamp + description: The timestamp of the current manifest version. + entity_fieldname: manifest_timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + mechanism: + api_fieldname: mechanism + description: 'NOT USED: The ID of the channel used to communicate with the + device.' + entity_fieldname: mechanism + enum: + - connector + - direct + type: string + mechanism_url: + api_fieldname: mechanism_url + description: 'NOT USED: The address of the connector to use.' + entity_fieldname: mechanism_url + example: '' + type: string + name: + api_fieldname: name + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. + entity_fieldname: name + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 + type: string + net_id: + api_fieldname: net_id + default: '' + description: Private network identifier. Used to group nodes connected to + a specific border router. + entity_fieldname: net_id + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: + api_fieldname: object + description: The API resource entity. + entity_fieldname: object + example: device + type: string + operator_suspended: + api_fieldname: operator_suspended + description: Device has been suspended by operator. + entity_fieldname: operator_suspended + type: boolean + serial_number: + api_fieldname: serial_number + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + entity_fieldname: serial_number + example: 00000000-0000-0000-0000-000000000000 + type: string + state: + api_fieldname: state + description: 'The current state of the device. + + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. + + * Cloud_enrolling: The device is bootstrapping for the first time. This + state is set only while bootstrapping is in progress. For example, an + external CA gives an error, and the device tries to bootstrap again after + few seconds. + + * Bootstrapped: The device has bootstrapped, and has credentials to connect + to Device Management. + + * Registered: The device has registered with Pelion Device Management. + [Device commands](https://www.pelion.com/docs/device-management-api/connect/) + can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + entity_fieldname: state + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered type: string - - _key: request_id - description: Request ID from JWT. + system_suspended: + api_fieldname: system_suspended + description: Is the device suspended by the system? + entity_fieldname: system_suspended + type: boolean + updated_at: + api_fieldname: updated_at + description: The time this data object was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: type - description: Error type. + vendor_id: + api_fieldname: vendor_id + description: The device vendor ID. + entity_fieldname: vendor_id + example: 00000000-0000-0000-0000-000000000000 type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object + - _key: '400' + description: 'Validation error: The data used to update the device did not validate.' + - _key: '401' + description: Not authenticated. + - _key: '404' + description: Unable to update device because it can't be found. return_info: custom: false - self: false - type: verification_response - return_type: verification_response - summary: Verify certificate issuer. - unaggregated: true + self: true + type: device + return_type: device + summary: Update a device. x_deprecation: null x_filter: {} primary_key_field: id swagger_models: - - CertificateIssuerInfo - - CertificateIssuerInfoListResponse - - CertificateIssuerRequest - - CertificateIssuerUpdateRequest - - CertificateIssuerVerifyResponse + - CertificateEnrollment + - DeviceData + - DeviceDataPostRequest + - DeviceDataPutRequest + - DeviceGroupManipulation + - DevicePage tags: - - Certificate Issuers -- _key: certificate_issuer_config + - Device directory - devices + - Device security - device certificate renewals + - Device directory - groups +- _key: device_enrollment field_renames: [] fields: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - example: 01648415a2a30242ac18000500000000 - readOnly: false - required: true + - _key: account_id + api_fieldname: account_id + description: ID + example: 00005a4e027f0a580a01081c00000000 + readOnly: true + required: false + type: string + - _key: claimed_at + api_fieldname: claimed_at + description: The time the device was claimed. + format: date-time + readOnly: true + required: false type: string - x-nullable: true - _key: created_at api_fieldname: created_at - description: Created UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + description: The time of the enrollment identity creation. format: date-time readOnly: true required: false type: string - - _key: id - api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' - example: 01648415a2a30242ac18000500000000 - readOnly: false - required: true + - _key: enrolled_device_id + api_fieldname: enrolled_device_id + description: The ID of the device in the Device Directory once it is registered. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + readOnly: true + required: false type: string - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - example: customer.dlms + - _key: enrollment_identity + api_fieldname: enrollment_identity + description: Enrollment identity. + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ readOnly: false required: true type: string - - _key: updated_at - api_fieldname: updated_at - description: Updated UTC time RFC3339. - example: '2017-02-01T00:00:00Z' + - _key: expires_at + api_fieldname: expires_at + description: The enrollment claim expiration time. If the device does not connect + to Device Management before expiration, the claim is removed without separate + notice. format: date-time readOnly: true required: false type: string - group_id: Security + - _key: id + api_fieldname: id + description: Enrollment identity. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + readOnly: false + required: true + type: string + group_id: Devices methods: - _key: create - description: "Configure the certificate issuer to be used when creating the device\ - \ custom certificates.\n
\n**Example usage:**\n\n```\ncurl -X POST \\\n-H\ - \ 'authorization: ' \\\n-H 'content-type: application/json;charset=UTF-8'\ - \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations\ - \ \\\n-d '{\n \"reference\": \"customer.dlms\",\n \"certificate_issuer_id\"\ - : \"01621a36719d507b9d48a91b00000000\"\n}'\n```\n" + description: 'When the device connects to the bootstrap server and provides the + enrollment ID, it is assigned to your account. + +
+ + **Example:** + + ``` + + curl -X POST \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + https://api.us-east-1.mbedcloud.com/v3/device-enrollments \ + + -d ''{"enrollment_identity": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5"}'' + + ```' drop_fields: - object - etag - type - filter - - is_custom - id - created_at - - updated_at + - claimed_at + - account_id + - expires_at + - enrolled_device_id field_renames: [] fields: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 - in: body - parameter_fieldname: certificate_issuer_id - required: false - type: string - x-nullable: true - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - entity_fieldname: reference - example: customer.dlms + - _key: enrollment_identity + api_fieldname: enrollment_identity + description: Enrollment identity. + entity_fieldname: enrollment_identity + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 in: body - parameter_fieldname: reference + parameter_fieldname: enrollment_identity + pattern: ^A-[A-Za-z0-9:]{95}$ required: true type: string - group_id: Security + group_id: Devices method: post mode: create - operation_id: createCertificateIssuerConfig + operation_id: createDeviceEnrollment pagination: false - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations + path: /v3/device-enrollments request_body: json request_content_type: application/json responses: - _key: '201' - description: OK. + description: Created. The enrollment claim has been created and is waiting for + the device to connect. schema: foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment + group: Devices properties: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: claimed_at + api_fieldname: claimed_at + description: The time the device was claimed. + entity_fieldname: claimed_at + format: date-time type: string - x-nullable: true - _key: created_at api_fieldname: created_at - description: Created UTC time RFC3339. + description: The time of the enrollment identity creation. entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' format: date-time type: string + - _key: enrolled_device_id + api_fieldname: enrolled_device_id + description: The ID of the device in the Device Directory once it is registered. + entity_fieldname: enrolled_device_id + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + - _key: enrollment_identity + api_fieldname: enrollment_identity + description: Enrollment identity. + entity_fieldname: enrollment_identity + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ + type: string - _key: etag api_fieldname: etag - description: Entity instance signature. entity_fieldname: etag - example: '1' + example: 7642xfaxz + pattern: '[A-Za-z0-9]{1,256}' + type: string + - _key: expires_at + api_fieldname: expires_at + description: The enrollment claim expiration time. If the device does not + connect to Device Management before expiration, the claim is removed without + separate notice. + entity_fieldname: expires_at + format: date-time type: string - _key: id api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' + description: Enrollment identity. entity_fieldname: id - example: 01648415a2a30242ac18000500000000 - type: string - - _key: is_custom - api_fieldname: is_custom - entity_fieldname: is_custom - example: true - type: boolean - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-issuer-configuration - type: string - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - entity_fieldname: reference - example: customer.dlms - type: string - - _key: updated_at - api_fieldname: updated_at - description: Updated UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-02-01T00:00:00Z' - format: date-time - type: string - type: object - - _key: '400' - description: Validation error. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '409' - description: 'A certificate issuer configuration with this reference already - exists. - - ' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: certificate_issuer_config - return_type: certificate_issuer_config - summary: Create certificate issuer configuration. - x_deprecation: null - x_filter: {} - - _key: delete - description: 'Delete the configured certificate issuer configuration. - - You can only delete the configurations of custom certificates. - - ' - drop_fields: - - object - - etag - - type - - filter - - is_custom - field_renames: [] - fields: - - _key: id - api_fieldname: certificate-issuer-configuration-id - description: 'The ID of the certificate issuer configuration. - - ' - entity_fieldname: id - external_param: false - in: path - name: certificate-issuer-configuration-id - parameter_fieldname: certificate-issuer-configuration-id - required: true - type: string - group_id: Security - method: delete - mode: delete - operation_id: deleteCertificateIssuerConfigByID - pagination: false - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: No content. - - _key: '400' - description: Validation error. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} type: string - - _key: type - description: Error type. + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - enrollment + example: enrollment type: string required: - - code - - fields - - message - object - - request_id - - type + - id + - etag + - account_id + - created_at + - expires_at + - claimed_at + - enrollment_identity + - enrolled_device_id type: object - - _key: '401' - description: Unauthorized. + - _key: '400' + description: Bad request. The enrollment identity is not valid. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: The provided access token is not valid. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '409' + description: Conflict. The requested identity to add already exists on this + or another account. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -16694,222 +27658,148 @@ entities: return_info: custom: false self: true - type: certificate_issuer_config - return_type: certificate_issuer_config - summary: Delete certificate issuer configuration. + type: device_enrollment + return_type: device_enrollment + summary: Create a single enrollment. x_deprecation: null x_filter: {} - - _key: get_default - description: 'Provides the configured certificate issuer to be used when creating - device + - _key: delete + description: 'To free a device from your account, delete the enrollment claim. + To bypass the device ownership, you need to delete the enrollment and factory + reset the device. For more information, see [Transferring ownership using First-to-Claim](https://www.pelion.com/docs/device-management/current/connecting/device-ownership-first-to-claim-by-enrollment-list.html). - certificates for LwM2M communication.
+
- ' + **Example:** + + ``` + + curl -X DELETE \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} + + ```' drop_fields: - object - etag - type - filter - - is_custom - - id - - certificate_issuer_id - - reference - - created_at - - updated_at field_renames: [] - fields: [] - group_id: Security - method: get - mode: get_default - operation_id: getCertificateIssuerConfig + fields: + - _key: id + api_fieldname: id + description: Enrollment identity. + entity_fieldname: id + external_param: false + in: path + name: id + parameter_fieldname: id + required: true + type: string + group_id: Devices + method: delete + mode: delete + operation_id: deleteDeviceEnrollment pagination: false - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations/lwm2m + path: /v3/device-enrollments/{id} request_body: json request_content_type: application/json responses: - - _key: '200' - description: OK. - schema: - foreign_key: - entity: certificate_issuer_config - group: Security - properties: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 - type: string - x-nullable: true - - _key: created_at - api_fieldname: created_at - description: Created UTC time RFC3339. - entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - - _key: etag - api_fieldname: etag - description: Entity instance signature. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' - entity_fieldname: id - example: 01648415a2a30242ac18000500000000 - type: string - - _key: is_custom - api_fieldname: is_custom - entity_fieldname: is_custom - example: true - type: boolean - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-issuer-configuration - type: string - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - entity_fieldname: reference - example: customer.dlms - type: string - - _key: updated_at - api_fieldname: updated_at - description: Updated UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-02-01T00:00:00Z' - format: date-time - type: string - type: object + - _key: '204' + description: No content. The enrollment claim has been deleted. - _key: '400' - description: Validation error. + description: Bad request. Invalid enrollment identity. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. + description: Message describing the error condition. type: string - - _key: message - description: Error message related to the field. + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '404' + description: Not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -16918,75 +27808,64 @@ entities: return_info: custom: false self: true - type: certificate_issuer_config - return_type: certificate_issuer_config - summary: Get certificate issuer configuration. + type: device_enrollment + return_type: device_enrollment + summary: Delete an enrollment by ID. x_deprecation: null x_filter: {} - _key: list - description: 'Get certificate issuer configurations, optionally filtered by reference. - -
+ description: 'Provides a list of pending and claimed enrollments. - **Example usage:** + **Example:** ``` - curl \ - - -H ''authorization: '' \ - - -H ''content-type: application/json;charset=UTF-8'' \ + curl -X GET \ - https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations \ + -H ''Authorization: Bearer '' \ - ``` + https://api.us-east-1.mbedcloud.com/v3/device-enrollments ``` - curl \ - - -H ''authorization: '' \ + With query parameters: - -H ''content-type: application/json;charset=UTF-8'' \ + ``` - https://api.us-east-1.mbedcloud.com/v3/certificate-issuer-configurations?reference__eq=dlms - \ + curl -X GET \ - ``` + -H ''Authorization: Bearer '' \ - Note: This endpoint does not implement pagination and therefore, list control - parameters such as `limit` or `after` will be ignored by the system. + ''https://api.us-east-1.mbedcloud.com/v3/device-enrollments?limit=10'' - ' + ```' drop_fields: - object - etag - type - filter - - is_custom - has_more - total_count - data - - reference__eq field_renames: [] fields: - _key: after api_fieldname: after - description: The ID of The item after which to retrieve the next page. + description: Entity ID to fetch after. entity_fieldname: after - example: '01631667477600000000000100100374' + example: 00005a4e027f0a580a01081c00000000 external_param: true in: query name: after parameter_fieldname: after + pattern: ^[A-Za-z0-9]{32} required: false type: string - _key: include api_fieldname: include - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`' + description: 'Comma-separated additional data to return. Currently supported: + total_count.' entity_fieldname: include external_param: true in: query @@ -16996,9 +27875,7 @@ entities: type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to the - closest limit. + description: Number of results to return (2-1000). entity_fieldname: limit example: 50 external_param: true @@ -17011,10 +27888,14 @@ entities: type: integer - _key: order api_fieldname: order - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. + default: ASC + description: ASC or DESC entity_fieldname: order - example: DESC + enum: + - ASC + - DESC + enum_reference: device_enrollment_order_enum + example: ASC external_param: true in: query name: order @@ -17022,17 +27903,15 @@ entities: required: false type: string foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment + group: Devices foreign_key_priority: self - group_id: Security + group_id: Devices method: get mode: list - operation_id: getCertificateIssuerConfigs + operation_id: getDeviceEnrollments pagination: true - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations + path: /v3/device-enrollments request_body: json request_content_type: application/json responses: @@ -17040,79 +27919,88 @@ entities: description: OK. schema: foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment + group: Devices pagination: true properties: - _key: after api_fieldname: after - description: An offset token for current page. + description: ID entity_fieldname: after - example: '01631667477600000000000100100374' + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} type: string - _key: data api_fieldname: data - description: List of certificate issuers. entity_fieldname: data items: foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment + group: Devices properties: - - _key: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - example: 01648415a2a30242ac18000500000000 + - _key: account_id + description: ID + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: claimed_at + description: The time the device was claimed. + format: date-time type: string - x-nullable: true - _key: created_at - description: Created UTC time RFC3339. - example: '2017-01-01T00:00:00Z' + description: The time of the enrollment identity creation. format: date-time type: string + - _key: enrolled_device_id + description: The ID of the device in the Device Directory once it is + registered. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + - _key: enrollment_identity + description: Enrollment identity. + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ + type: string - _key: etag - description: Entity instance signature. - example: '1' + example: 7642xfaxz + pattern: '[A-Za-z0-9]{1,256}' + type: string + - _key: expires_at + description: The enrollment claim expiration time. If the device does + not connect to Device Management before expiration, the claim is removed + without separate notice. + format: date-time type: string - _key: id - description: 'The ID of the certificate issuer configuration. - - ' - example: 01648415a2a30242ac18000500000000 + description: Enrollment identity. + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} type: string - - _key: is_custom - example: true - type: boolean - _key: object enum: - - certificate-issuer-configuration - type: string - - _key: reference - description: The certificate name to which the certificate issuer configuration - applies. - example: customer.dlms - type: string - - _key: updated_at - description: Updated UTC time RFC3339. - example: '2017-02-01T00:00:00Z' - format: date-time + - enrollment + example: enrollment type: string + required: + - object + - id + - etag + - account_id + - created_at + - expires_at + - claimed_at + - enrollment_identity + - enrolled_device_id type: object type: array - _key: has_more api_fieldname: has_more - description: Are there more results available. entity_fieldname: has_more - example: false + example: true type: boolean - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit - is 2 and the maximum is 1000. Limit values outside of this range are set - to the closest limit. + description: Range 2-1000, or default. entity_fieldname: limit example: 50 maximum: 1000 @@ -17120,138 +28008,357 @@ entities: type: integer - _key: object api_fieldname: object - description: The type of this API object is a `list`. entity_fieldname: object + enum: + - list example: list type: string - _key: order api_fieldname: order - description: The creation time based order of the entries. + default: ASC entity_fieldname: order - example: DESC + enum: + - ASC + - DESC + example: ASC type: string - _key: total_count api_fieldname: total_count entity_fieldname: total_count - example: 1 - format: integer + example: 100 + format: int32 + minimum: 1 type: integer + required: + - object + - limit + - after + - order + - has_more + - total_count + - data type: object - _key: '400' - description: Validation error. + description: Bad request. The access token could not be read. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - _key: '401' - description: Unauthorized. + description: The provided access token is not valid. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + return_info: + custom: false + self: true + type: device_enrollment + return_type: paginated_response(device_enrollment) + summary: Get a list of enrollments per account. + x_deprecation: null + x_filter: {} + - _key: read + description: 'Check detailed enrollment info, for example, date of claim or expiration + date. + + + **Example:** + + ``` + + curl -X GET \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - claimed_at + - enrollment_identity + - account_id + - expires_at + - enrolled_device_id + field_renames: [] + fields: + - _key: id + api_fieldname: id + description: Enrollment identity. + entity_fieldname: id + example: 00005a4e027f0a580a01081c00000000 + in: path + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} + required: true + type: string + group_id: Devices + method: get + mode: read + operation_id: getDeviceEnrollment + pagination: false + path: /v3/device-enrollments/{id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: OK. Pending enrollment data. + schema: + foreign_key: + entity: device_enrollment + group: Devices + properties: + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: claimed_at + api_fieldname: claimed_at + description: The time the device was claimed. + entity_fieldname: claimed_at + format: date-time + type: string + - _key: created_at + api_fieldname: created_at + description: The time of the enrollment identity creation. + entity_fieldname: created_at + format: date-time + type: string + - _key: enrolled_device_id + api_fieldname: enrolled_device_id + description: The ID of the device in the Device Directory once it is registered. + entity_fieldname: enrolled_device_id + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + - _key: enrollment_identity + api_fieldname: enrollment_identity + description: Enrollment identity. + entity_fieldname: enrollment_identity + example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + pattern: ^A-[A-Za-z0-9:]{95}$ + type: string + - _key: etag + api_fieldname: etag + entity_fieldname: etag + example: 7642xfaxz + pattern: '[A-Za-z0-9]{1,256}' + type: string + - _key: expires_at + api_fieldname: expires_at + description: The enrollment claim expiration time. If the device does not + connect to Device Management before expiration, the claim is removed without + separate notice. + entity_fieldname: expires_at + format: date-time + type: string + - _key: id + api_fieldname: id + description: Enrollment identity. + entity_fieldname: id + example: 00005a4e027f0a580a01081c00000000 + pattern: ^[A-Za-z0-9]{32} + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - enrollment + example: enrollment + type: string + required: + - object + - id + - etag + - account_id + - created_at + - expires_at + - claimed_at + - enrollment_identity + - enrolled_device_id + type: object + - _key: '400' + description: Bad request. Invalid enrollment identity. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -17260,271 +28367,379 @@ entities: return_info: custom: false self: true - type: certificate_issuer_config - return_type: paginated_response(certificate_issuer_config) - summary: Get certificate issuer configurations. + type: device_enrollment + return_type: device_enrollment + summary: Get details of an single enrollment by ID. x_deprecation: null - x_filter: - reference: - - eq - - _key: read - description: 'Provides the configured certificate issuer. + x_filter: {} + primary_key_field: id + swagger_models: + - EnrollmentId + - EnrollmentIdentities + - EnrollmentIdentity + tags: + - Device ownership - enrollments +- _key: device_enrollment_bulk_create + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: ID + example: 00005a4e027f0a580a01081c00000000 + readOnly: true + required: false + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. - ' + Null when creating bulk upload or delete.' + format: date-time + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: The time of receiving the bulk creation task. + format: date-time + readOnly: true + required: false + type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + example: 0 + readOnly: true + required: false + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + readOnly: true + required: false + type: string + x-nullable: true + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv + readOnly: true + required: false + type: string + x-nullable: true + - _key: id + api_fieldname: id + description: Bulk ID + pattern: ^[A-Za-z0-9]{32} + readOnly: false + required: true + type: string + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + example: 0 + readOnly: true + required: false + type: integer + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. If creation + is still in progress, the state shows as 'processing'. When the request is fully + processed, the state changes to 'completed'. + enum: + - new + - processing + - completed + enum_reference: device_enrollment_bulk_create_status_enum + example: new + readOnly: true + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + example: 10 + readOnly: true + required: false + type: integer + group_id: Devices + methods: + - _key: create + description: "With bulk upload, you can upload a `CSV` file containing a number\ + \ of enrollment IDs.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ + \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ + \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads\n\ + \n```\n **To ensure your CSV file is valid:**\n 1. The first line of the file\ + \ (header) is ignored.\n 1. Each line can contain comma-separated values, where\ + \ the first value is the Enrollment ID. Everything after the first comma is\ + \ ignored.\n 1. Valid enrollments begin with A followed by a - and 95 characters\ + \ (examples below).\n 1. One enrollment ID per line. Empty lines are ignored.\n\ + \ 1. Trailing comma at the end of the line is optional.\n 1. Lines are terminated\ + \ with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n 1.\ + \ Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed\ + \ from the identity before validation.\n 1. Empty identities are ignored.\n\ + \ 1. Valid enrollment identities may be enclosed within quotation marks. Whitespace\ + \ inside quotation marks is not trimmed and will cause validation to fail. Empty\ + \ quotation marks are also invalid.\n 1. Use UTF-8 encoding.\n\n\n**A valid\ + \ enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ + ,\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\ + \nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\n\ + A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12,\ + \ This text is ignored.\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\ + \ , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\"\ + \ , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file\ + \ containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ + , First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ + \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ + \ Too-short identity.\n\"\", Empty quotation marks are an invalid identity\n\ + \" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\ + \ \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n\ + ```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored\"\ + \n\n,,\n, This is also considered a blank line.\n```" drop_fields: - object - etag - type - filter - - is_custom - - certificate_issuer_id - - reference + - id + - account_id - created_at - - updated_at + - status + - total_count + - processed_count + - errors_count + - completed_at + - full_report_file + - errors_report_file field_renames: [] fields: - - _key: id - api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' - entity_fieldname: id - example: 01648415a2a30242ac18000500000000 - in: path - parameter_fieldname: certificate-issuer-configuration-id + - _key: enrollment_identities + api_fieldname: enrollment_identities + description: The `CSV` file containing the enrollment IDs. The maximum file + size is 10 MB. + entity_fieldname: enrollment_identities + external_param: true + in: stream + name: enrollment_identities + parameter_fieldname: enrollment_identities required: true - type: string - group_id: Security - method: get - mode: read - operation_id: getCertificateIssuerConfigByID + type: file + group_id: Devices + method: post + mode: create + operation_id: createBulkDeviceEnrollment pagination: false - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} - request_body: json - request_content_type: application/json + path: /v3/device-enrollments-bulk-uploads + request_body: file + request_content_type: multipart/form-data responses: - - _key: '200' - description: OK. + - _key: '201' + description: Bulk upload data received and asynchronous processing started. schema: foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment_bulk_delete + group: Devices properties: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 + Null when creating bulk upload or delete.' + entity_fieldname: completed_at + format: date-time type: string - x-nullable: true - _key: created_at api_fieldname: created_at - description: Created UTC time RFC3339. + description: The time of receiving the bulk creation task. entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' format: date-time type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + entity_fieldname: errors_count + example: 0 + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + entity_fieldname: errors_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + type: string + x-nullable: true - _key: etag api_fieldname: etag - description: Entity instance signature. + description: etag entity_fieldname: etag example: '1' + pattern: '[A-Za-z0-9]{0,256}' + type: string + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + entity_fieldname: full_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv type: string + x-nullable: true - _key: id api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' + description: Bulk ID entity_fieldname: id - example: 01648415a2a30242ac18000500000000 + pattern: ^[A-Za-z0-9]{32} type: string - - _key: is_custom - api_fieldname: is_custom - entity_fieldname: is_custom - example: true - type: boolean - _key: object api_fieldname: object entity_fieldname: object enum: - - certificate-issuer-configuration - type: string - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - entity_fieldname: reference - example: customer.dlms - type: string - - _key: updated_at - api_fieldname: updated_at - description: Updated UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-02-01T00:00:00Z' - format: date-time + - enrollment-identity-bulk-uploads + example: enrollment-identity-bulk-uploads type: string - type: object - - _key: '400' - description: Validation error. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + entity_fieldname: processed_count + example: 0 type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. + If creation is still in progress, the state shows as 'processing'. When + the request is fully processed, the state changes to 'completed'. + entity_fieldname: status + enum: + - new + - processing + - completed + example: new type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Unauthorized. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + entity_fieldname: total_count + example: 10 type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string required: - - code - - fields - - message - object - - request_id - - type + - id + - etag + - created_at + - account_id + - status + - total_count + - processed_count + - errors_count + - completet_at + - full_report_file + - errors_report_file type: object - - _key: '403' - description: Forbidden. + - _key: '400' + description: Bad request. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '401' + description: Invalid access token. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -17533,286 +28748,790 @@ entities: return_info: custom: false self: true - type: certificate_issuer_config - return_type: certificate_issuer_config - summary: Get certificate issuer configuration. + type: device_enrollment_bulk_create + return_type: device_enrollment_bulk_create + summary: Bulk upload. x_deprecation: null x_filter: {} - - _key: update - additional_operations: - - notes: After retrieving the resource using the `lwm2m` method, it can modified - using using this SDK method. - operation_id: updateCertificateIssuerConfig - description: 'Update the configured certificate issuer configuration. + - _key: download_errors_report_file + custom_method: download_errors_report_file + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: [] + group_id: Devices + method: null + mode: download_errors_report_file + path: null + request_body: json + request_content_type: application/json + responses: [] + return_info: + custom: true + self: false + type: file + return_type: file + spec: + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + return_type: file + summary: Download the error report file for the created the bulk enrollment. + summary: Download the error report file for the created the bulk enrollment. + x_deprecation: null + x_filter: {} + - _key: download_full_report_file + custom_method: download_full_report_file + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: [] + group_id: Devices + method: null + mode: download_full_report_file + path: null + request_body: json + request_content_type: application/json + responses: [] + return_info: + custom: true + self: false + type: file + return_type: file + spec: + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + return_type: file + summary: Download the full report file for the created of the bulk enrollment. + summary: Download the full report file for the created of the bulk enrollment. + x_deprecation: null + x_filter: {} + - _key: read + description: 'Provides information on bulk upload for the given ID, for example, + bulk status and number of processed enrollment identities. Provides links to + bulk upload reports as well. - ' + + **Report file format:** + + The report files have a header line, and the values are separated by commas. + Delimit lines with a line break (CRLF). Make sure the report file is compliant + with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180). + + + An example of a full report file: + + ``` + + "entity__id","entity__created_at","error__code","error__type","error__message","error__fields" + + "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","2018-09-07T12:10:58.428Z","","","","" + + "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","2018-09-07T12:10:58.428Z","","","","" + + ``` + + An example of an error report file: + + ``` + + "entity__id","error__code","error__type","error__message","error__fields" + + "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","409","duplicate","Enrollment + identity is already claimed in the mbed Cloud.","" + + "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","409","duplicate","Enrollment + identity is already claimed in the mbed Cloud.","" + + ``` + + **Example:** + + ``` + + curl -X GET \ + + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/{id} + + ```' drop_fields: - object - etag - type - filter - - is_custom - - reference + - account_id - created_at - - updated_at + - status + - total_count + - processed_count + - errors_count + - completed_at + - full_report_file + - errors_report_file field_renames: [] fields: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. - - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 - in: body - parameter_fieldname: certificate_issuer_id - required: false - type: string - x-nullable: true - _key: id api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' + description: Bulk ID entity_fieldname: id - example: 01648415a2a30242ac18000500000000 in: path - parameter_fieldname: certificate-issuer-configuration-id + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} required: true type: string - group_id: Security - method: put - mode: update - operation_id: updateCertificateIssuerConfigByID + group_id: Devices + method: get + mode: read + operation_id: getBulkDeviceEnrollment pagination: false - parameter_map: - certificate-issuer-configuration-id: id - path: /v3/certificate-issuer-configurations/{certificate-issuer-configuration-id} + path: /v3/device-enrollments-bulk-uploads/{id} request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. + description: Bulk upload entity found. schema: foreign_key: - entity: certificate_issuer_config - group: Security + entity: device_enrollment_bulk_delete + group: Devices properties: - - _key: certificate_issuer_id - api_fieldname: certificate_issuer_id - description: 'The ID of the certificate issuer. - - Null if Device Management internal HSM is used. + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. - ' - entity_fieldname: certificate_issuer_id - example: 01648415a2a30242ac18000500000000 + Null when creating bulk upload or delete.' + entity_fieldname: completed_at + format: date-time type: string - x-nullable: true - _key: created_at api_fieldname: created_at - description: Created UTC time RFC3339. + description: The time of receiving the bulk creation task. entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' format: date-time type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + entity_fieldname: errors_count + example: 0 + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + entity_fieldname: errors_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + type: string + x-nullable: true - _key: etag api_fieldname: etag - description: Entity instance signature. + description: etag entity_fieldname: etag example: '1' + pattern: '[A-Za-z0-9]{0,256}' + type: string + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + entity_fieldname: full_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv type: string + x-nullable: true - _key: id api_fieldname: id - description: 'The ID of the certificate issuer configuration. - - ' + description: Bulk ID entity_fieldname: id - example: 01648415a2a30242ac18000500000000 + pattern: ^[A-Za-z0-9]{32} + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - enrollment-identity-bulk-uploads + example: enrollment-identity-bulk-uploads + type: string + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + entity_fieldname: processed_count + example: 0 + type: integer + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. + If creation is still in progress, the state shows as 'processing'. When + the request is fully processed, the state changes to 'completed'. + entity_fieldname: status + enum: + - new + - processing + - completed + example: new + type: string + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + entity_fieldname: total_count + example: 10 + type: integer + required: + - object + - id + - etag + - created_at + - account_id + - status + - total_count + - processed_count + - errors_count + - completet_at + - full_report_file + - errors_report_file + type: object + - _key: '400' + description: Bad request. Invalid bulk identity. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: is_custom - api_fieldname: is_custom - entity_fieldname: is_custom - example: true - type: boolean - _key: object - api_fieldname: object - entity_fieldname: object + description: Entity name, always `error`. enum: - - certificate-issuer-configuration + - error type: string - - _key: reference - api_fieldname: reference - description: The certificate name to which the certificate issuer configuration - applies. - entity_fieldname: reference - example: customer.dlms + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: updated_at - api_fieldname: updated_at - description: Updated UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-02-01T00:00:00Z' - format: date-time + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: Validation error. + - _key: '401' + description: Invalid access token. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '401' - description: Unauthorized. + - _key: '404' + description: Not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '403' - description: Forbidden. + return_info: + custom: false + self: true + type: device_enrollment_bulk_create + return_type: device_enrollment_bulk_create + summary: Get bulk upload entity. + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - BulkResponse + tags: + - Device ownership - enrollments +- _key: device_enrollment_bulk_delete + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: ID + example: 00005a4e027f0a580a01081c00000000 + readOnly: true + required: false + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. + + Null when creating bulk upload or delete.' + format: date-time + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: The time of receiving the bulk creation task. + format: date-time + readOnly: true + required: false + type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + example: 0 + readOnly: true + required: false + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + readOnly: true + required: false + type: string + x-nullable: true + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv + readOnly: true + required: false + type: string + x-nullable: true + - _key: id + api_fieldname: id + description: Bulk ID + in: path + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} + readOnly: false + required: true + type: string + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + example: 0 + readOnly: true + required: false + type: integer + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. If creation + is still in progress, the state shows as 'processing'. When the request is fully + processed, the state changes to 'completed'. + enum: + - new + - processing + - completed + enum_reference: device_enrollment_bulk_delete_status_enum + example: new + readOnly: true + required: false + type: string + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + example: 10 + readOnly: true + required: false + type: integer + group_id: Devices + methods: + - _key: delete + description: "With bulk delete, you can upload a `CSV` file containing a number\ + \ of enrollment IDs to delete.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ + \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ + \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes\n\ + \n```\n**To ensure your CSV file is valid:**\n1. The first line of the file\ + \ (header) is ignored.\n1. Each line can contain comma-separated values, where\ + \ the first value is the Enrollment ID. Everything after the first comma is\ + \ ignored.\n1. Valid enrollments begin with A followed by a - and 95 characters\ + \ (examples below).\n1. One enrollment ID per line. Empty lines are ignored.\n\ + 1. Trailing comma at the end of the line is optional.\n1. Lines are terminated\ + \ with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n1. Leading\ + \ and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from\ + \ the identity before validation.\n1. Empty identities are ignored.\n1. Valid\ + \ enrollment identities may be enclosed within quotation marks. Whitespace inside\ + \ quotation marks is not trimmed and will cause validation to fail. Empty quotation\ + \ marks are also invalid.\n1. Use UTF-8 encoding.\n\n**A valid enrollment file:**\n\ + ```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ + ,\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\ + \nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\n\ + A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12,\ + \ This text is ignored,\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\ + \ , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\"\ + \ , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file\ + \ containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ + , First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ + \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23,\ + \ Too-short identity.\n\"\", Empty quotation marks are an invalid identity.\n\ + \" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\ + \ \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n\ + ```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored.\"\ + \n\n,,\n, This is also considered to a blank line.\n```" + drop_fields: + - object + - etag + - type + - filter + - id + - account_id + - created_at + - status + - total_count + - processed_count + - errors_count + - completed_at + - full_report_file + - errors_report_file + field_renames: [] + fields: + - _key: enrollment_identities + api_fieldname: enrollment_identities + description: The `CSV` file containing the enrollment IDs. The maximum file + size is 10MB. + entity_fieldname: enrollment_identities + external_param: true + in: stream + name: enrollment_identities + parameter_fieldname: enrollment_identities + required: true + type: file + group_id: Devices + method: post + mode: delete + operation_id: deleteBulkDeviceEnrollment + pagination: false + path: /v3/device-enrollments-bulk-deletes + request_body: file + request_content_type: multipart/form-data + responses: + - _key: '201' + description: Bulk delete data received and asynchronous processing started. + schema: + foreign_key: + entity: device_enrollment_bulk_create + group: Devices + properties: + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. + + Null when creating bulk upload or delete.' + entity_fieldname: completed_at + format: date-time + type: string + - _key: created_at + api_fieldname: created_at + description: The time of receiving the bulk creation task. + entity_fieldname: created_at + format: date-time + type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + entity_fieldname: errors_count + example: 0 + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + entity_fieldname: errors_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + type: string + x-nullable: true + - _key: etag + api_fieldname: etag + description: etag + entity_fieldname: etag + example: '1' + pattern: '[A-Za-z0-9]{0,256}' + type: string + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + entity_fieldname: full_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv + type: string + x-nullable: true + - _key: id + api_fieldname: id + description: Bulk ID + entity_fieldname: id + in: path + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} + required: true + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - enrollment-identity-bulk-uploads + example: enrollment-identity-bulk-uploads + type: string + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + entity_fieldname: processed_count + example: 0 + type: integer + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. + If creation is still in progress, the state shows as 'processing'. When + the request is fully processed, the state changes to 'completed'. + entity_fieldname: status + enum: + - new + - processing + - completed + example: new + type: string + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + entity_fieldname: total_count + example: 10 + type: integer + required: + - object + - id + - etag + - created_at + - account_id + - status + - total_count + - processed_count + - errors_count + - completet_at + - full_report_file + - errors_report_file + type: object + - _key: '400' + description: Bad request. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '401' + description: Invalid access token. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -17821,78 +29540,121 @@ entities: return_info: custom: false self: true - type: certificate_issuer_config - return_type: certificate_issuer_config - summary: Update certificate issuer configuration. + type: device_enrollment_bulk_delete + return_type: device_enrollment_bulk_delete + summary: Bulk delete. + x_deprecation: null + x_filter: {} + - _key: download_errors_report_file + custom_method: download_errors_report_file + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: [] + group_id: Devices + method: null + mode: download_errors_report_file + path: null + request_body: json + request_content_type: application/json + responses: [] + return_info: + custom: true + self: false + type: file + return_type: file + spec: + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + return_type: file + summary: Download the error report file for the bulk enrollment deletion. + summary: Download the error report file for the bulk enrollment deletion. + x_deprecation: null + x_filter: {} + - _key: download_full_report_file + custom_method: download_full_report_file + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: [] + group_id: Devices + method: null + mode: download_full_report_file + path: null + request_body: json + request_content_type: application/json + responses: [] + return_info: + custom: true + self: false + type: file + return_type: file + spec: + description: This method will download the CSV file containing detailed information + on status of the bulk enrollment. + return_type: file + summary: Download the full report file for the bulk enrollment deletion. + summary: Download the full report file for the bulk enrollment deletion. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - CertificateIssuerConfigListResponse - - CertificateIssuerConfigRequest - - CertificateIssuerConfigResponse - - CreateCertificateIssuerConfig - tags: - - Certificate Issuers Activation -- _key: dark_theme_color - field_renames: [] - fields: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - readOnly: false - required: false - type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: dark_theme_color_reference_enum - is_primary_key: true - readOnly: false - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Branding - methods: - - _key: delete - description: 'Resets the branding color to its dark theme default. + - _key: read + description: 'Provides information on bulk delete for the given ID, for example, + bulk status and the number of processed enrollment identities. Provides links + to bulk delete reports as well. + + + **Report file format:** + + The report files have a header line and the value are separated by commas. The + lines are delimited by a line break (CRLF). Make sure the report file is compliant + with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180). + + + An example of a full report file: + + ``` + + "entity__id","entity__deleted_at","error__code","error__type","error__message","error__fields" + + "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","2018-09-07T12:10:58.428Z","","","","" + + "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","2018-09-07T12:10:58.428Z","","","","" + + ``` + + An example of an error report file: + + ``` + + "entity__id","error__code","error__type","error__message","error__fields" + "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","409","duplicate","Enrollment + identity is already claimed in the mbed Cloud.","" + + "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","409","duplicate","Enrollment + identity is already claimed in the mbed Cloud.","" + + ``` **Example:** ``` - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} - \ + curl -X GET \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes/{id} ```' drop_fields: @@ -17900,49 +29662,150 @@ entities: - etag - type - filter + - account_id + - created_at + - status + - total_count + - processed_count + - errors_count + - completed_at + - full_report_file + - errors_report_file field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - description: The name of the branding color. - entity_fieldname: reference - enum: &id002 - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: dark_theme_color_reference_enum + - _key: id + api_fieldname: id + description: Bulk ID + entity_fieldname: id in: path - is_primary_key: true - name: reference + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} required: true type: string - group_id: Branding - method: delete - mode: delete - operation_id: resetDarkColor + group_id: Devices + method: get + mode: read + operation_id: getBulkDeviceEnrollmentDelete pagination: false - path: /v3/branding-colors/dark/{reference} + path: /v3/device-enrollments-bulk-deletes/{id} request_body: json request_content_type: application/json responses: - - _key: '204' - description: Deleted successfully. - - _key: '401' - description: Authentication failure. + - _key: '200' + description: Bulk delete entity found. + schema: + foreign_key: + entity: device_enrollment_bulk_create + group: Devices + properties: + - _key: account_id + api_fieldname: account_id + description: ID + entity_fieldname: account_id + example: 00005a4e027f0a580a01081c00000000 + type: string + - _key: completed_at + api_fieldname: completed_at + description: 'The time the bulk creation task was completed. + + Null when creating bulk upload or delete.' + entity_fieldname: completed_at + format: date-time + type: string + - _key: created_at + api_fieldname: created_at + description: The time of receiving the bulk creation task. + entity_fieldname: created_at + format: date-time + type: string + - _key: errors_count + api_fieldname: errors_count + description: The number of enrollment identities with failed processing. + entity_fieldname: errors_count + example: 0 + type: integer + - _key: errors_report_file + api_fieldname: errors_report_file + description: 'Link to error report file. + + Null when creating bulk upload or delete.' + entity_fieldname: errors_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + type: string + x-nullable: true + - _key: etag + api_fieldname: etag + description: etag + entity_fieldname: etag + example: '1' + pattern: '[A-Za-z0-9]{0,256}' + type: string + - _key: full_report_file + api_fieldname: full_report_file + description: 'Link to full report file. + + Null when creating bulk upload or delete.' + entity_fieldname: full_report_file + example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv + type: string + x-nullable: true + - _key: id + api_fieldname: id + description: Bulk ID + entity_fieldname: id + in: path + parameter_fieldname: id + pattern: ^[A-Za-z0-9]{32} + required: true + type: string + - _key: object + api_fieldname: object + entity_fieldname: object + enum: + - enrollment-identity-bulk-uploads + example: enrollment-identity-bulk-uploads + type: string + - _key: processed_count + api_fieldname: processed_count + description: The number of enrollment identities processed until now. + entity_fieldname: processed_count + example: 0 + type: integer + - _key: status + api_fieldname: status + default: new + description: The state of the process is 'new' at the time of creation. + If creation is still in progress, the state shows as 'processing'. When + the request is fully processed, the state changes to 'completed'. + entity_fieldname: status + enum: + - new + - processing + - completed + example: new + type: string + - _key: total_count + api_fieldname: total_count + description: Total number of enrollment identities found in the input CSV. + entity_fieldname: total_count + example: 10 + type: integer + required: + - object + - id + - etag + - created_at + - account_id + - status + - total_count + - processed_count + - errors_count + - completet_at + - full_report_file + - errors_report_file + type: object + - _key: '400' + description: Bad request. Invalid bulk identity. schema: properties: - _key: code @@ -17989,8 +29852,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Invalid access token. schema: properties: - _key: code @@ -18038,7 +29901,7 @@ entities: - type type: object - _key: '404' - description: Color not found. + description: Not found. schema: properties: - _key: code @@ -18086,284 +29949,373 @@ entities: - type type: object return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Reset branding color to default. + custom: false + self: true + type: device_enrollment_bulk_delete + return_type: device_enrollment_bulk_delete + summary: Get bulk delete entity. x_deprecation: null x_filter: {} + primary_key_field: id + swagger_models: + - BulkResponse + tags: + - Device ownership - enrollments +- _key: device_events + field_renames: [] + fields: + - _key: changes + additionalProperties: + type: object + api_fieldname: changes + example: [] + readOnly: true + required: false + type: object + x-deprecation: + comment: This field is not used. + end_of_life_at: '2020-01-15T14:55:20+00:00' + issued_at: '2019-01-15T14:55:20+00:00' + links: [] + - _key: created_at + api_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: data + additionalProperties: + type: string + api_fieldname: data + description: Additional data relevant to the event. + example: + campaign_id: '00000000000000000000000000000000' + readOnly: true + required: false + type: object + - _key: date_time + api_fieldname: date_time + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + example: Device record created + readOnly: true + required: false + type: string + - _key: device_id + api_fieldname: device_id + example: '00000000000000000000000000000000' + readOnly: true + required: false + type: string + - _key: event_type + api_fieldname: event_type + description: Event code + example: UPD2_100 + maxLength: 100 + readOnly: true + required: false + type: string + - _key: event_type_category + api_fieldname: event_type_category + description: Category code that groups the event type by a summary category. + example: FAIL_MANIFEST_REJECTED + readOnly: true + required: false + type: string + - _key: event_type_description + api_fieldname: event_type_description + description: Generic description of the event. + example: FAIL + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + example: '00000000000000000000000000000000' + readOnly: false + required: true + type: string + - _key: state_change + api_fieldname: state_change + readOnly: true + required: false + type: boolean + group_id: Devices + methods: - _key: list - description: 'Retrieve the dark theme branding colors. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark \ - - -H ''Authorization: Bearer '' - - ```' + description: "List all or a filtered list of device events for the account. Device\ + \ events are events significant to operation or lifetime, such as creation,\ + \ firmware update, and suspension.\n\nTo see statistics for device connectivity\ + \ and usage, use the [Statistics API](https://www.pelion.com/docs/device-management-api/connect-statistics/).\n\ + \n **Example:**\n Following example gets device-events limiting returned results\ + \ to max 5 events\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5\ + \ \\\n -H 'Authorization: Bearer '\n ```\n or to get events for certain\ + \ device filter based on device_id:\n ```\n curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id=\ + \ \\\n -H 'Authorization: Bearer '\n ```" drop_fields: - object - etag - type - filter - - limit - - after - - order - - total_count - - has_more - data + - has_more + - total_count + - date_time__in + - date_time__nin + - date_time__lte + - date_time__gte + - description__eq + - description__neq + - description__in + - description__nin + - id__eq + - id__neq + - id__in + - id__nin + - device_id__eq + - device_id__neq + - device_id__in + - device_id__nin + - event_type__eq + - event_type__neq + - event_type__in + - event_type__nin + - state_change__eq + - state_change__neq field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - entity_fieldname: reference - is_primary_key: true + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: null + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + entity_fieldname: limit + example: 1000 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string foreign_key: - entity: dark_theme_color - group: Branding + entity: device_events + group: Devices foreign_key_priority: self - group_id: Branding + group_id: Devices method: get mode: list - operation_id: getDarkColors + operation_id: Device_Event_list pagination: true - path: /v3/branding-colors/dark + path: /v3/device-events/ request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: Request successful. schema: foreign_key: - entity: dark_theme_color - group: Branding + entity: device_events + group: Devices pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + example: null type: string - _key: data api_fieldname: data - description: A list of entities. entity_fieldname: data + example: '[]' items: foreign_key: - entity: dark_theme_color - group: Branding + entity: device_events + group: Devices properties: - - _key: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' + - _key: changes + additionalProperties: + type: object + example: [] + type: object + x-deprecation: + comment: This field is not used. + end_of_life_at: '2020-01-15T14:55:20+00:00' + issued_at: '2019-01-15T14:55:20+00:00' + links: [] + - _key: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - x-nullable: true - - _key: object - description: 'Entity name: always ''branding_color''' - enum: - - branding_color - readOnly: true + - _key: data + additionalProperties: + type: string + description: Additional data relevant to the event. + example: + campaign_id: '00000000000000000000000000000000' + type: object + - _key: date_time + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: reference - _override: true - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - is_primary_key: true + - _key: description + example: Device record created type: string - - _key: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' + - _key: device_id + example: '00000000000000000000000000000000' + type: string + - _key: etag + example: '2017-05-22T12:37:55.576563Z' format: date-time - readOnly: true type: string - type: object + - _key: event_type + description: Event code + example: UPD2_100 + maxLength: 100 + type: string + - _key: event_type_category + description: Category code that groups the event type by a summary category. + example: FAIL_MANIFEST_REJECTED + type: string + - _key: event_type_description + description: Generic description of the event. + example: FAIL + type: string + - _key: id + example: '00000000000000000000000000000000' + type: string + - _key: object + description: The API resource entity. + example: device-event + type: string + - _key: state_change + type: boolean + required: + - date_time + - id type: array - _key: has_more api_fieldname: has_more - description: Flag indicating whether there are more results. entity_fieldname: has_more example: false type: boolean - _key: limit api_fieldname: limit - description: The number of results to return, or equal to `total_count`. entity_fieldname: limit - example: 50 - format: int32 + example: 1000 type: integer - _key: object api_fieldname: object - description: 'Entity name: always `list`.' entity_fieldname: object - enum: - - list + example: list type: string - _key: order api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' entity_fieldname: order - enum: - - ASC - - DESC + example: DESC type: string - _key: total_count api_fieldname: total_count - description: The total number of records, if requested. entity_fieldname: total_count - example: 20 - format: int32 + example: 1 type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object + - _key: '400' + description: Bad request. - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object + description: Not authenticated. + - _key: '404' + description: Unable to find page. return_info: custom: false self: true - type: dark_theme_color - return_type: paginated_response(dark_theme_color) - summary: Get dark theme branding colors. + type: device_events + return_type: paginated_response(device_events) + summary: List all device events. x_deprecation: null - x_filter: {} + x_filter: + date_time: + - in + - nin + - lte + - gte + description: + - eq + - neq + - in + - nin + device_id: + - eq + - neq + - in + - nin + event_type: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + state_change: + - eq + - neq - _key: read - description: 'Retrieve the requested dark theme branding color. + description: '"Retrieve a specific device event. See ''/v3/device-events/'' for + information on device events, and how to get the device_event_id." **Example:** + To fetch a specific event you can use the ''id'' field from ''/v3/device-events''. + Form of ''016c03d40a4e000000000001001003b4'' + ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/{reference} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -18371,88 +30323,261 @@ entities: - etag - type - filter - - color - - updated_at + - created_at + - changes + - data + - date_time + - description + - device_id + - event_type + - event_type_category + - event_type_description + - state_change field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id002 - enum_reference: dark_theme_color_reference_enum + - _key: id + api_fieldname: id + entity_fieldname: id + example: '00000000000000000000000000000000' in: path - is_primary_key: true - name: reference + parameter_fieldname: device_event_id required: true type: string - group_id: Branding + group_id: Devices method: get mode: read - operation_id: getDarkColor + operation_id: Device_Event_retrieve pagination: false - path: /v3/branding-colors/dark/{reference} + parameter_map: + device_event_id: id + path: /v3/device-events/{device_event_id}/ request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: Retrieved result successfully. schema: foreign_key: - entity: subtenant_light_theme_color - group: Branding + entity: device_events + group: Devices properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' + - _key: changes + additionalProperties: + type: object + api_fieldname: changes + entity_fieldname: changes + example: [] + type: object + x-deprecation: + comment: This field is not used. + end_of_life_at: '2020-01-15T14:55:20+00:00' + issued_at: '2019-01-15T14:55:20+00:00' + links: [] + - _key: created_at + api_fieldname: created_at + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - x-nullable: true - - _key: object - api_fieldname: object - description: 'Entity name: always ''branding_color''' - entity_fieldname: object - enum: - - branding_color - readOnly: true + - _key: data + additionalProperties: + type: string + api_fieldname: data + description: Additional data relevant to the event. + entity_fieldname: data + example: + campaign_id: '00000000000000000000000000000000' + type: object + - _key: date_time + api_fieldname: date_time + entity_fieldname: date_time + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - is_primary_key: true + - _key: description + api_fieldname: description + entity_fieldname: description + example: Device record created type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' + - _key: device_id + api_fieldname: device_id + entity_fieldname: device_id + example: '00000000000000000000000000000000' + type: string + - _key: etag + api_fieldname: etag + entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' format: date-time - readOnly: true type: string - type: object + - _key: event_type + api_fieldname: event_type + description: Event code + entity_fieldname: event_type + example: UPD2_100 + maxLength: 100 + type: string + - _key: event_type_category + api_fieldname: event_type_category + description: Category code that groups the event type by a summary category. + entity_fieldname: event_type_category + example: FAIL_MANIFEST_REJECTED + type: string + - _key: event_type_description + api_fieldname: event_type_description + description: Generic description of the event. + entity_fieldname: event_type_description + example: FAIL + type: string + - _key: id + api_fieldname: id + entity_fieldname: id + example: '00000000000000000000000000000000' + type: string + - _key: object + api_fieldname: object + description: The API resource entity. + entity_fieldname: object + example: device-event + type: string + - _key: state_change + api_fieldname: state_change + entity_fieldname: state_change + type: boolean + required: + - date_time + - id + - _key: '400' + description: Bad request. - _key: '401' - description: Authentication failure. + description: Not authenticated. + - _key: '404' + description: Unable to find device. + return_info: + custom: false + self: true + type: device_events + return_type: device_events + summary: Retrieve a device event. + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - DeviceEventData + - DeviceEventPage + tags: + - Device directory - events +- _key: device_group + field_renames: [] + fields: + - _key: created_at + api_fieldname: created_at + description: The time the group was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with a number. + Both key and value are limited to 128 characters. Updating this field replaces + existing contents. + example: + key: value + maxProperties: 10 + readOnly: false + required: false + type: object + - _key: description + api_fieldname: description + description: The description of the group. + example: Devices on the factory floor. + maxLength: 1024 + readOnly: false + required: false + type: string + - _key: devices_count + api_fieldname: devices_count + description: The number of devices in this group. + example: 10 + readOnly: true + required: false + type: integer + - _key: id + api_fieldname: id + description: The group ID. + example: 015c3029f6f7000000000001001000c3 + readOnly: false + required: true + type: string + - _key: name + api_fieldname: name + description: Name of the group. + example: My devices + maxLength: 128 + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time this object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Devices + methods: + - _key: add_device + description: Add one device to a group. A device can be in multiple groups. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: device_id + api_fieldname: device_id + entity_fieldname: device_id + example: '00000000000000000000000000000000' + external_param: true + in: body + name: device_id + parameter_fieldname: device_id + required: false + schema_param: true + type: string + - _key: id + api_fieldname: device-group-id + description: The ID of the group. + entity_fieldname: id + external_param: false + in: path + name: device-group-id + parameter_fieldname: device-group-id + required: true + type: string + group_id: Devices + method: post + mode: add_device + operation_id: Group_members_add + pagination: false + parameter_map: + device-group-id: id + path: /v3/device-groups/{device-group-id}/devices/add/ + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Success - device added. + - _key: '400' + description: Bad request. schema: properties: - _key: code @@ -18499,8 +30624,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -18548,7 +30673,7 @@ entities: - type type: object - _key: '404' - description: Color not found. + description: Not found. schema: properties: - _key: code @@ -18596,141 +30721,158 @@ entities: - type type: object return_info: - custom: false - self: true - type: dark_theme_color - return_type: dark_theme_color - summary: Get dark theme branding color. + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Add a device to a group. x_deprecation: null x_filter: {} - - _key: update - additional_operations: - - notes: Bulk operation is not appriate for SDK's entity model, this functionality - is covered by the update method. - operation_id: bulkSetDarkColors - description: 'Update a dark theme branding color. - - - **Example:** - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/dark/primary - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{ "color": "#f3f93e" }'' - - ```' + - _key: create + description: Create a group. drop_fields: - object - etag - type - filter + - id + - devices_count + - created_at + - updated_at field_renames: [] fields: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with a + number. Both key and value are limited to 128 characters. Updating this field + replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value in: body - parameter_fieldname: color + maxProperties: 10 + name: custom_attributes + parameter_fieldname: custom_attributes required: false + schema_param: true + type: object + - _key: description + api_fieldname: description + description: The description of the group. + entity_fieldname: description + example: Devices on the factory floor. + in: body + maxLength: 1024 + name: description + parameter_fieldname: description + required: false + schema_param: true type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id002 - enum_reference: dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: name + api_fieldname: name + description: Name of the group. + entity_fieldname: name + example: My devices in: body - parameter_fieldname: updated_at - readOnly: true + maxLength: 128 + name: name + parameter_fieldname: name required: false + schema_param: true type: string - group_id: Branding - method: put - mode: update - operation_id: setDarkColor + group_id: Devices + method: post + mode: create + operation_id: Group_create pagination: false - path: /v3/branding-colors/dark/{reference} + parameter_map: + device-group-id: id + path: /v3/device-groups/ request_body: json request_content_type: application/json responses: - - _key: '200' - description: Color has been set successfully. + - _key: '201' + description: Created. schema: foreign_key: - entity: subtenant_light_theme_color - group: Branding + entity: device_group + group: Devices properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' + - _key: created_at + api_fieldname: created_at + description: The time the group was created. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with + a number. Both key and value are limited to 128 characters. Updating this + field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 10 + type: object + - _key: description + api_fieldname: description + description: The description of the group. + entity_fieldname: description + example: Devices on the factory floor. + maxLength: 1024 + type: string + - _key: devices_count + api_fieldname: devices_count + description: The number of devices in this group. + entity_fieldname: devices_count + example: 10 + type: integer + - _key: etag + api_fieldname: etag + entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: id + api_fieldname: id + description: The group ID. + entity_fieldname: id + example: 015c3029f6f7000000000001001000c3 + type: string + - _key: name + api_fieldname: name + description: Name of the group. + entity_fieldname: name + example: My devices + maxLength: 128 type: string - x-nullable: true - _key: object api_fieldname: object - description: 'Entity name: always ''branding_color''' + description: 'Entity name: always `device-group`.' entity_fieldname: object - enum: - - branding_color - readOnly: true - type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - is_primary_key: true + example: device-group type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: The time this object was updated. entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' + example: '2017-05-22T12:37:55.576563Z' format: date-time - readOnly: true type: string type: object - _key: '400' - description: Error in input data format. + description: Bad request. schema: properties: - _key: code @@ -18778,55 +30920,7 @@ entities: - type type: object - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. + description: Unauthorized. schema: properties: - _key: code @@ -18873,8 +30967,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Color not found. + - _key: '409' + description: Conflict - Group name already exists. schema: properties: - _key: code @@ -18924,99 +31018,14 @@ entities: return_info: custom: false self: true - type: dark_theme_color - return_type: dark_theme_color - summary: Updates a dark theme branding color. + type: device_group + return_type: device_group + summary: Create a group. x_deprecation: null x_filter: {} - primary_key_field: reference - swagger_models: - - BrandingColor - - BrandingColorList - tags: - - User interface configuration - colors -- _key: dark_theme_image - field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: dark_theme_image_reference_enum - is_primary_key: true - readOnly: false - required: false - type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Branding - methods: - _key: delete - description: 'Revert an account branding image to dark theme default. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference}/clear - \ - - -H ''Authorization: Bearer '' - - ```' + description: Delete a group. This deletes the group, but not the devices in the + group. drop_fields: - object - etag @@ -19024,116 +31033,31 @@ entities: - filter field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the branding images (icon or picture). - entity_fieldname: reference - enum: &id003 - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: dark_theme_image_reference_enum + - _key: id + api_fieldname: device-group-id + description: The ID of the group. + entity_fieldname: id + external_param: false in: path - is_primary_key: true - name: reference + name: device-group-id + parameter_fieldname: device-group-id required: true type: string - group_id: Branding - method: post - mode: delete - operation_id: clearDarkImage - pagination: false - path: /v3/branding-images/dark/{reference}/clear - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Image reverted successfully. - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. + group_id: Devices + method: delete + mode: delete + operation_id: Group_delete + pagination: false + parameter_map: + device-group-id: id + path: /v3/device-groups/{device-group-id}/ + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Success - group deleted. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -19181,7 +31105,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: Not Found. schema: properties: - _key: code @@ -19231,694 +31155,634 @@ entities: return_info: custom: false self: true - type: dark_theme_image - return_type: dark_theme_image - summary: Revert an image to dark theme default. + type: device_group + return_type: device_group + summary: Delete a group. x_deprecation: null x_filter: {} - - _key: list - description: 'Retrieve metadata for all dark theme branding images. - - - **Example:** - - `curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark \ - - -H ''Authorization: Bearer '' - - ```' + - _key: devices + description: Get a page of devices in a specified group. drop_fields: - object - etag - type - filter - - limit - - after - - order - - total_count - - has_more - data + - has_more + - total_count + - lifecycle_status__eq + - lifecycle_status__neq + - lifecycle_status__in + - lifecycle_status__nin + - operator_suspended__eq + - operator_suspended__neq + - last_operator_suspended_category__eq + - last_operator_suspended_category__neq + - last_operator_suspended_category__in + - last_operator_suspended_category__nin + - last_operator_suspended_updated_at__in + - last_operator_suspended_updated_at__nin + - last_operator_suspended_updated_at__lte + - last_operator_suspended_updated_at__gte + - system_suspended__eq + - system_suspended__neq + - last_system_suspended_category__eq + - last_system_suspended_category__neq + - last_system_suspended_category__in + - last_system_suspended_category__nin + - last_system_suspended_updated_at__in + - last_system_suspended_updated_at__nin + - last_system_suspended_updated_at__lte + - last_system_suspended_updated_at__gte + - account_id__eq + - account_id__neq + - account_id__in + - account_id__nin + - auto_update__eq + - auto_update__neq + - bootstrap_expiration_date__in + - bootstrap_expiration_date__nin + - bootstrap_expiration_date__lte + - bootstrap_expiration_date__gte + - bootstrapped_timestamp__in + - bootstrapped_timestamp__nin + - bootstrapped_timestamp__lte + - bootstrapped_timestamp__gte + - ca_id__eq + - ca_id__neq + - ca_id__in + - ca_id__nin + - connector_expiration_date__in + - connector_expiration_date__nin + - connector_expiration_date__lte + - connector_expiration_date__gte + - created_at__in + - created_at__nin + - created_at__lte + - created_at__gte + - deployed_state__eq + - deployed_state__neq + - deployed_state__in + - deployed_state__nin + - deployment__eq + - deployment__neq + - deployment__in + - deployment__nin + - description__eq + - description__neq + - description__in + - description__nin + - device_class__eq + - device_class__neq + - device_class__in + - device_class__nin + - device_execution_mode__eq + - device_execution_mode__neq + - device_execution_mode__in + - device_execution_mode__nin + - device_key__eq + - device_key__neq + - device_key__in + - device_key__nin + - endpoint_name__eq + - endpoint_name__neq + - endpoint_name__in + - endpoint_name__nin + - endpoint_type__eq + - endpoint_type__neq + - endpoint_type__in + - endpoint_type__nin + - enrolment_list_timestamp__in + - enrolment_list_timestamp__nin + - enrolment_list_timestamp__lte + - enrolment_list_timestamp__gte + - firmware_checksum__eq + - firmware_checksum__neq + - firmware_checksum__in + - firmware_checksum__nin + - host_gateway__eq + - host_gateway__neq + - host_gateway__in + - host_gateway__nin + - id__eq + - id__neq + - id__in + - id__nin + - manifest__eq + - manifest__neq + - manifest__in + - manifest__nin + - manifest_timestamp__in + - manifest_timestamp__nin + - manifest_timestamp__lte + - manifest_timestamp__gte + - mechanism__eq + - mechanism__neq + - mechanism__in + - mechanism__nin + - mechanism_url__eq + - mechanism_url__neq + - mechanism_url__in + - mechanism_url__nin + - name__eq + - name__neq + - name__in + - name__nin + - net_id__eq + - net_id__neq + - net_id__in + - net_id__nin + - serial_number__eq + - serial_number__neq + - serial_number__in + - serial_number__nin + - state__eq + - state__neq + - state__in + - state__nin + - updated_at__in + - updated_at__nin + - updated_at__lte + - updated_at__gte + - vendor_id__eq + - vendor_id__neq + - vendor_id__in + - vendor_id__nin field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - entity_fieldname: reference - is_primary_key: true + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: id + api_fieldname: device-group-id + entity_fieldname: id + external_param: false + in: path + name: device-group-id + parameter_fieldname: device-group-id + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string foreign_key: - entity: dark_theme_image - group: Branding - foreign_key_priority: self - group_id: Branding + entity: device + group: Devices + group_id: Devices method: get - mode: list - operation_id: getAllDarkImageData + mode: devices + operation_id: Group_members_retrieve pagination: true - path: /v3/branding-images/dark + parameter_map: + device-group-id: id + path: /v3/device-groups/{device-group-id}/devices/ request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: Ok. schema: foreign_key: - entity: dark_theme_image - group: Branding + entity: device + group: Devices pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The ID of the item after which to retrieve the next page. entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false type: string - _key: data api_fieldname: data - description: A list of entities. entity_fieldname: data items: - foreign_key: - entity: dark_theme_image - group: Branding - properties: - - _key: object - description: 'Entity name: always ''branding_image''' + - _key: foreign_key + entity: device + group: Devices + - _key: properties + account_id: + description: The ID of the associated account. + example: '00000000000000000000000000000000' + type: string + auto_update: + description: 'DEPRECATED: Mark this device for automatic firmware update.' + type: boolean + bootstrap_expiration_date: + description: The expiration date of the certificate used to connect + to bootstrap server. + format: date + type: string + x-nullable: true + bootstrapped_timestamp: + description: The timestamp of the device's most recent bootstrap process. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + ca_id: + description: The certificate issuer's ID. + example: '00000000000000000000000000000000' + maxLength: 500 + type: string + component_attributes: + additionalProperties: + maxLength: 128 + type: string + description: Up to ten custom key-value attributes. Note that keys cannot + begin with a number. Both keys and values are limited to 128 characters. + Updating this field replaces existing contents. + example: + key: value + maxProperties: 10 + type: object + connector_expiration_date: + description: The expiration date of the certificate used to connect + to LwM2M server. + format: date + type: string + x-nullable: true + created_at: + description: The timestamp of when the device was created in the device + directory. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + custom_attributes: + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to five custom key-value attributes. Note that keys + cannot begin with a number. Both keys and values are limited to 128 + characters. Updating this field replaces existing contents. + example: + key: value + maxProperties: 5 + type: object + deployed_state: + description: 'DEPRECATED: The state of the device''s deployment.' enum: - - branding_image - readOnly: true + - development + - production type: string - - _key: reference - _override: true - description: Name of the image. + deployment: + description: 'DEPRECATED: The last deployment used on the device.' + example: '' + type: string + description: + description: The description of the device. + example: Temperature measuring device + maxLength: 2000 + type: string + device_class: + description: An ID representing the model and hardware revision of the + device. + example: '' + maxLength: 32 + type: string + device_execution_mode: + default: 0 + description: "The execution mode from the certificate of the device.\ + \ Defaults to inheriting from host_gateway device.\nPermitted values:\n\ + \ - 0 - Unspecified execution mode (default if host_gateway invalid\ + \ or not set). The device firmware uses a certificate that is not\ + \ identified as a developer or production certificate.\n - 1 - Development\ + \ device. The device firmware uses a developer certificate to communicate\ + \ with Device Management.\n - 5 - Production device. The device firmware\ + \ uses a factory-generated certificate to communicate with Device\ + \ Management." enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - is_primary_key: true + - 0 + - 1 + - 5 + example: 0 + type: integer + device_key: + description: The fingerprint of the device certificate. + example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 + maxLength: 512 type: string - - _key: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri + endpoint_name: + description: The endpoint name given to the device. The endpoint_name + is from the device certificate and is set by factory tool. + example: 00000000-0000-0000-0000-000000000000 readOnly: true type: string - - _key: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' + endpoint_type: + description: The endpoint type of the device. For example, the device + is a gateway. + example: '' + maxLength: 64 + type: string + enrolment_list_timestamp: + description: The claim date/time. + example: '2017-05-22T12:37:55.576563Z' format: date-time - readOnly: true type: string - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: The number of results to return, or equal to `total_count`. - entity_fieldname: limit - example: 50 - format: int32 - type: integer - - _key: object - api_fieldname: object - description: 'Entity name: always `list`.' - entity_fieldname: object - enum: - - list - type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + etag: + description: The entity instance signature. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + firmware_checksum: + description: The SHA256 checksum of the current firmware image. + example: '0000000000000000000000000000000000000000000000000000000000000000' + type: string + groups: + description: An array containing an ID of each group this device belongs + to. + items: + example: '00000000000000000000000000000000' + type: string + type: array + host_gateway: + description: The ID of the host gateway, if appropriate. A device behind + Edge has this host_gateway set. + example: '' + type: string + id: + description: The ID of the device. The device ID is used across all + Device Management APIs. + example: '00000000000000000000000000000000' type: string - - _key: name - description: Name of the field which caused the error. + issuer_fingerprint: + description: SHA256 fingerprint of the certificate used to validate + the signature of the device certificate. + example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 + pattern: '[A-Fa-f0-9]{64}' type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + x-nullable: true + last_operator_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' type: string - - _key: name - description: Name of the field which caused the error. + last_operator_suspended_description: + description: The most recent description why the device was suspended + or returned to service. + example: Suspended for maintenance. + maxLength: 2000 type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: dark_theme_image - return_type: paginated_response(dark_theme_image) - summary: Get metadata of all dark theme images. - x_deprecation: null - x_filter: {} - - _key: read - description: 'Retrieve metadata for one account dark theme branding image. + last_operator_suspended_updated_at: + description: The timestamp of the most recent suspension activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + last_system_suspended_category: + description: The reference of the block category. + example: maintenance + pattern: '[a-f0-9_]{32}' + type: string + last_system_suspended_description: + description: The most recent description of why the device was blocked + or unblocked by the system. + example: A certificate in the device's certificate chain was blacklisted + by the system. + maxLength: 2000 + type: string + last_system_suspended_updated_at: + description: The timestamp of the most recent system block activity. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + lifecycle_status: + description: 'The lifecycle status of the device. + * Enabled: The device is allowed to connect to Pelion Device Management. - **Example:** + * Blocked: The device is prevented from connecting to Pelion Device + Management. Device can be, for example, ''suspended''.' + enum: + - enabled + - blocked + example: enabled + type: string + manifest: + description: 'DEPRECATED: The URL for the current device manifest.' + example: '' + type: string + manifest_timestamp: + description: The timestamp of the current manifest version. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + mechanism: + description: 'NOT USED: The ID of the channel used to communicate with + the device.' + enum: + - connector + - direct + type: string + mechanism_url: + description: 'NOT USED: The address of the connector to use.' + example: '' + type: string + name: + description: The name given by the web application for the device. Device + itself provides only the endpoint_name. + example: 00000000-0000-0000-0000-000000000000 + maxLength: 128 + type: string + net_id: + default: '' + description: Private network identifier. Used to group nodes connected + to a specific border router. + example: 0000:0000:0000:0000:0000:0000:0000:0000 + maxLength: 40 + type: string + object: + description: The API resource entity. + example: device + type: string + operator_suspended: + description: Device has been suspended by operator. + type: boolean + serial_number: + description: The [serial number](https://www.pelion.com/docs/device-management-provision/latest/provisioning-info/lwm2m-device-object.html#serial-number) + of the device. The serial number is injected by the factory tool during + manufacturing. + example: 00000000-0000-0000-0000-000000000000 + type: string + state: + description: 'The current state of the device. - ``` + * Unenrolled: The device has been created, but has not yet bootstrapped + or connected to Device Management. - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/dark/{reference} - \ + * Cloud_enrolling: The device is bootstrapping for the first time. + This state is set only while bootstrapping is in progress. For example, + an external CA gives an error, and the device tries to bootstrap again + after few seconds. - -H ''Authorization: Bearer '' + * Bootstrapped: The device has bootstrapped, and has credentials to + connect to Device Management. - ```' - drop_fields: - - object - - etag - - type - - filter - - static_uri - - updated_at - field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id003 - enum_reference: dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - group_id: Branding - method: get - mode: read - operation_id: getDarkImageData - pagination: false - path: /v3/branding-images/dark/{reference} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: subtenant_light_theme_image - group: Branding - properties: - - _key: object - api_fieldname: object - description: 'Entity name: always ''branding_image''' - entity_fieldname: object - enum: - - branding_image - readOnly: true - type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - is_primary_key: true - type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - type: string - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. + * Registered: The device has registered with Pelion Device Management. + [Device commands](https://www.pelion.com/docs/device-management-api/connect/) + can be queued. The device sends events for [subscribed](https://www.pelion.com/docs/device-management/current/resources/handle-resource-webapp.html) + resources. + + * Deregistered: The device has requested deregistration, or its registration + has expired.' + enum: + - unenrolled + - cloud_enrolling + - bootstrapped + - registered + - deregistered type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Unknown image reference. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + system_suspended: + description: Is the device suspended by the system? + type: boolean + updated_at: + description: The time this data object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - - _key: name - description: Name of the field which caused the error. + vendor_id: + description: The device vendor ID. + example: 00000000-0000-0000-0000-000000000000 type: string - required: - - name - - message - type: object type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: dark_theme_image - return_type: dark_theme_image - summary: Get metadata of a dark theme image. - x_deprecation: null - x_filter: {} - - _key: update - additional_operations: - - notes: The multipart endpoint is used by the SDKs as it offers the same functionality - as the standard upload endpoint. - operation_id: uploadDarkImage - description: Upload a new account branding image as form data in the dark theme - in PNG or JPEG format. - drop_fields: - - object - - etag - - type - - filter - - static_uri - - updated_at - field_renames: [] - fields: - - _key: image - api_fieldname: image - description: The image in PNG or JPEG format as multipart form data. - entity_fieldname: image - external_param: true - in: stream - name: image - parameter_fieldname: image - required: true - type: file - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id003 - enum_reference: dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - group_id: Branding - method: post - mode: update - operation_id: uploadDarkImageMultipart - pagination: false - path: /v3/branding-images/dark/{reference}/upload-multipart - request_body: file - request_content_type: multipart/form-data - responses: - - _key: '201' - description: Image uploaded successfully. - headers: - - _key: Content-Location - description: Location of the image metadata. - type: string - - _key: Location - description: Location of the image binary. - type: string - schema: - foreign_key: - entity: subtenant_light_theme_image - group: Branding - properties: + - _key: has_more + api_fieldname: has_more + description: Are there more results available. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer - _key: object api_fieldname: object - description: 'Entity name: always ''branding_image''' + description: The type of this API object is a "list". entity_fieldname: object - enum: - - branding_image - readOnly: true + example: list type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + example: 1 + format: integer + type: integer + - _key: '400' + description: Bad request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - is_primary_key: true + - error type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: Error in input data format, for example, image is too large. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -19965,8 +31829,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Authentication failure. + - _key: '404' + description: Not found. schema: properties: - _key: code @@ -20006,15 +31870,399 @@ entities: description: Error type used to categorise the error. example: validation_error type: string - required: - - code - - message - - object - - request_id - - type + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: false + type: device + return_type: paginated_response(device) + summary: Get a page of devices. + x_deprecation: null + x_filter: + account_id: + - eq + - neq + - in + - nin + auto_update: + - eq + - neq + bootstrap_expiration_date: + - in + - nin + - lte + - gte + bootstrapped_timestamp: + - in + - nin + - lte + - gte + ca_id: + - eq + - neq + - in + - nin + connector_expiration_date: + - in + - nin + - lte + - gte + created_at: + - in + - nin + - lte + - gte + deployed_state: + - eq + - neq + - in + - nin + deployment: + - eq + - neq + - in + - nin + description: + - eq + - neq + - in + - nin + device_class: + - eq + - neq + - in + - nin + device_execution_mode: + - eq + - neq + - in + - nin + device_key: + - eq + - neq + - in + - nin + endpoint_name: + - eq + - neq + - in + - nin + endpoint_type: + - eq + - neq + - in + - nin + enrolment_list_timestamp: + - in + - nin + - lte + - gte + firmware_checksum: + - eq + - neq + - in + - nin + host_gateway: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + last_operator_suspended_category: + - eq + - neq + - in + - nin + last_operator_suspended_updated_at: + - in + - nin + - lte + - gte + last_system_suspended_category: + - eq + - neq + - in + - nin + last_system_suspended_updated_at: + - in + - nin + - lte + - gte + lifecycle_status: + - eq + - neq + - in + - nin + manifest: + - eq + - neq + - in + - nin + manifest_timestamp: + - in + - nin + - lte + - gte + mechanism: + - eq + - neq + - in + - nin + mechanism_url: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + net_id: + - eq + - neq + - in + - nin + operator_suspended: + - eq + - neq + serial_number: + - eq + - neq + - in + - nin + state: + - eq + - neq + - in + - nin + system_suspended: + - eq + - neq + updated_at: + - in + - nin + - lte + - gte + vendor_id: + - eq + - neq + - in + - nin + - _key: list + description: List all groups. + drop_fields: + - object + - etag + - type + - filter + - data + - has_more + - total_count + - id__eq + - id__neq + - id__in + - id__nin + - devices_count__eq + - devices_count__neq + - devices_count__in + - devices_count__nin + - devices_count__lte + - devices_count__gte + - name__eq + - name__neq + - name__in + - name__nin + - created_at__in + - created_at__nin + - created_at__lte + - created_at__gte + - updated_at__in + - updated_at__nin + - updated_at__lte + - updated_at__gte + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: '01631667477600000000000100100374' + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated list of data fields to return. Currently supported: + `total_count`.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + entity_fieldname: limit + example: 50 + external_param: true + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + entity_fieldname: order + example: DESC + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: device_group + group: Devices + foreign_key_priority: self + group_id: Devices + method: get + mode: list + operation_id: Group_list + pagination: true + parameter_map: + device-group-id: id + path: /v3/device-groups/ + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Ok. + schema: + foreign_key: + entity: device_group + group: Devices + pagination: true + properties: + - _key: after + api_fieldname: after + description: An offset token for current page. + entity_fieldname: after + example: '01631667477600000000000100100374' + type: string + - _key: data + api_fieldname: data + entity_fieldname: data + items: + foreign_key: + entity: device_group + group: Devices + properties: + - _key: created_at + description: The time the group was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + description: Up to ten custom key-value attributes. Keys cannot begin + with a number. Both key and value are limited to 128 characters. Updating + this field replaces existing contents. + example: + key: value + maxProperties: 10 + type: object + - _key: description + description: The description of the group. + example: Devices on the factory floor. + maxLength: 1024 + type: string + - _key: devices_count + description: The number of devices in this group. + example: 10 + type: integer + - _key: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: id + description: The group ID. + example: 015c3029f6f7000000000001001000c3 + type: string + - _key: name + description: Name of the group. + example: My devices + maxLength: 128 + type: string + - _key: object + description: 'Entity name: always `device-group`.' + example: device-group + type: string + - _key: updated_at + description: The time this object was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: More results are available. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page (2-1000). Limit values + outside of this range are set to the closest limit. + entity_fieldname: limit + example: 50 + maximum: 1000 + minimum: 2 + type: integer + - _key: object + api_fieldname: object + description: The type of this API object is 'list'. + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: Record order based on creation time. + entity_fieldname: order + example: DESC + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + example: 1 + format: integer + type: integer type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -20062,7 +32310,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: Not Found. schema: properties: - _key: code @@ -20112,418 +32360,247 @@ entities: return_info: custom: false self: true - type: dark_theme_image - return_type: dark_theme_image - summary: Upload a dark theme image. + type: device_group + return_type: paginated_response(device_group) + summary: List all groups. x_deprecation: null - x_filter: {} - primary_key_field: reference - swagger_models: - - BrandingImage - - BrandingImageList - tags: - - User interface configuration - images -- _key: developer_certificate - field_renames: - - _key: certificate - api_fieldname: developer_certificate - fields: - - _key: account_id - api_fieldname: account_id - description: Account to which the developer certificate belongs. - readOnly: true - required: false - type: string - - _key: certificate - api_fieldname: developer_certificate - description: PEM-format X.509 developer certificate. - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - format: date-time - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - description: Description for the developer certificate. - readOnly: false - required: false - type: string - x-nullable: true - - _key: developer_private_key - api_fieldname: developer_private_key - description: PEM-format developer private key associated with the certificate. - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: ID that uniquely identifies the developer certificate. - in: path - parameter_fieldname: developerCertificateId - readOnly: false - required: true - type: string - - _key: name - api_fieldname: name - description: Name of the developer certificate. - readOnly: false - required: true - type: string - - _key: security_file_content - api_fieldname: security_file_content - description: Content of the `security.c` file flashed to the device to provide - security credentials. - readOnly: true - required: false - type: string - group_id: Security - methods: - - _key: create - description: 'Create a developer certificate (a certificate that can be flashed - to multiple devices to connect to the bootstrap server). - - - **Note:** The number of developer certificates allowed per account is limited. - Please see [Using your own certificate authority](../provisioning-process/using-CA.html). - - - **Example:** - - ``` - - curl -X POST http://api.us-east-1.mbedcloud.com/v3/developer-certificates \ - - -H "Authorization: Bearer " \ - - -H "content-type: application/json" \ - - -d { "name": "", "description": "" - } - - ```' + x_filter: + created_at: + - in + - nin + - lte + - gte + devices_count: + - eq + - neq + - in + - nin + - lte + - gte + id: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + updated_at: + - in + - nin + - lte + - gte + - _key: read + description: Returns [DeviceGroup](https://www.pelion.com/docs/device-management-api/device-directory/) + info what contains info of the group, for example, name and updated date. To + list the devices in the group, use '/v3/device-groups/{device-group-id}/devices/'. drop_fields: - object - etag - type - filter - - id + - name + - description + - custom_attributes + - devices_count - created_at - - account_id - - developer_private_key - - security_file_content - - certificate - field_renames: - - _key: certificate - api_fieldname: developer_certificate + - updated_at + field_renames: [] fields: - - _key: description - api_fieldname: description - description: Description for the developer certificate. - entity_fieldname: description - in: body - parameter_fieldname: description - required: false - type: string - x-nullable: true - - _key: name - api_fieldname: name - description: Name of the developer certificate. - entity_fieldname: name - in: body - parameter_fieldname: name + - _key: id + api_fieldname: id + description: The group ID. + entity_fieldname: id + example: 015c3029f6f7000000000001001000c3 + in: path + parameter_fieldname: device-group-id required: true type: string - group_id: Security - method: post - mode: create - operation_id: createDeveloperCertificate + group_id: Devices + method: get + mode: read + operation_id: Group_retrieve pagination: false parameter_map: - developerCertificateId: id - path: /v3/developer-certificates + device-group-id: id + path: /v3/device-groups/{device-group-id}/ request_body: json request_content_type: application/json responses: - - _key: '201' - description: Developer certificate created successfully. - examples: - - _key: Success - account_id: 015fee5d9b3538c98640fbfb00000000 - created_at: '2017-12-11T14:22:20.009Z' - description: This certificate will be used with multiple developer devices. - developer_certificate: '-----BEGIN CERTIFICATE-----\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\nzhNupQ==\n-----END - CERTIFICATE-----\n' - developer_private_key: '-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\nQTuqnIv2\n-----END - PRIVATE KEY-----\n' - etag: '1' - id: 015fee4431fd38c98640fbfb00000000 - name: DeveloperCertificate - object: trusted-cert - security_file_content: '/*\n * Copyright (c) 2017 ARM Limited. All rights - reserved.\n * SPDX-License-Identifier: Apache-2.0\n * Licensed under the - Apache License, Version 2.0 (the License); you may\n * not use this file - except in compliance with the License.\n * You may obtain a copy of the - License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless - required by applicable law or agreed to in writing, software\n * distributed - under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES - OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License - for the specific language governing permissions and\n * limitations under - the License.\n */\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\n\n#include - \n\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \"0161dbbcdd660a580a010c3403c00000\";\nconst - char MBED_CLOUD_DEV_ACCOUNT_ID[] = \"015843e32ec902420a015e0700000000\";\nconst - char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \"coaps://coap-integration-lab.dev.mbed.com:5684?aid=015843e32ec902420a015e0700000000\";\n\nconst - uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \n{ 0x30, 0x82, - 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, - 0x11, 0x00,\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\n 0x91, 0x07, - 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, - 0x48, 0xce,\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\n 0x0b, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, - 0x30, 0x15,\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\n 0x61, 0x6d, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, - 0x12, 0x30,\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\n 0x43, 0x61, - 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, - 0x03, 0x55,\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\n 0x4c, 0x74, - 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, - 0x30, 0x31,\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\n 0x63, 0x39, - 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, - 0x30, 0x30,\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\n 0x30, 0x27, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, - 0x62, 0x62,\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\n 0x38, 0x30, - 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, - 0x30, 0x30,\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\n 0x32, 0x32, - 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, - 0x30, 0x32,\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\n 0x5a, 0x30, - 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x47,\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\n 0x04, 0x08, - 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, - 0x68, 0x69,\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\n 0x55, 0x04, - 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x31, 0x10,\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\n 0x07, 0x41, - 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, - 0x55, 0x04,\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\n 0x33, 0x65, - 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, - 0x31, 0x35,\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\n 0x30, 0x30, - 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, - 0x30, 0x31,\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\n 0x36, 0x36, - 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, - 0x30, 0x33,\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\n 0x30, 0x13, - 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, - 0x86, 0x48,\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\n 0x04, 0x44, - 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, - 0x3d, 0xa3,\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\n 0xb7, 0x91, - 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, - 0x7a, 0x3f,\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\n 0x13, 0xa8, - 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, - 0x9c, 0x8b,\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\n 0x09, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, - 0x40, 0x00,\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, - 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, - 0x0a, 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, - 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, - 0x0d, 0x8e,\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\n 0x42, 0x5c, - 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, - 0xa7, 0x76,\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\n 0xb1, 0x83, - 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, - 0x34, 0x1d,\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\n 0xce, 0x13, - 0x6e, 0xa5 };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] - = \n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\n 0xa0, 0x03, 0x02, - 0x01, 0x02, 0x02, 0x10, 0x5c,\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, - 0x43,\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\n 0x0a, 0x06, 0x08, - 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, - 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, - 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, - 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, - 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, - 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, - 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, - 0x74,\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, - 0x1b, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\n 0x73, 0x74, 0x72, - 0x61, 0x70, 0x43, 0x41, 0x30,\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, - 0x31,\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\n 0x18, 0x0f, 0x32, - 0x30, 0x35, 0x32, 0x30, 0x35,\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, - 0x30,\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\n 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x47, 0x42,\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, - 0x04,\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\n 0x69, 0x64, 0x67, - 0x65, 0x73, 0x68, 0x69, 0x72,\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, - 0x55,\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, - 0x67, 0x65, 0x31, 0x10, 0x30,\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, - 0x07,\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\n 0x24, 0x30, 0x22, - 0x06, 0x03, 0x55, 0x04, 0x03,\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, - 0x6e,\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\n 0x6e, 0x20, 0x42, - 0x6f, 0x6f, 0x74, 0x73, 0x74,\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, - 0x30,\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x02, 0x01, 0x06, - 0x08, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, - 0x04,\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\n 0xe0, 0x57, 0x4e, - 0x1b, 0xac, 0x29, 0x82, 0xea,\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, - 0xbc,\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\n 0xfa, 0x41, 0xf8, - 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, - 0x78,\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\n 0x6f, 0x57, 0x04, - 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, - 0x03,\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\n 0x86, 0x30, 0x0f, - 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, - 0x01,\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\n 0x0e, 0x04, 0x16, - 0x04, 0x14, 0x13, 0xef, 0x69,\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, - 0xb8,\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\n 0x39, 0x30, 0x10, - 0x06, 0x09, 0x2b, 0x06, 0x01,\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, - 0x03,\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\n 0x86, 0x48, 0xce, - 0x3d, 0x04, 0x03, 0x02, 0x03,\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, - 0xa2,\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\n 0xf5, 0x71, 0x86, - 0x33, 0x29, 0x05, 0x4c, 0xf9,\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, - 0x5c,\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\n 0x20, 0x3e, 0xfe, - 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, - 0x26,\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\n 0x44, 0x36, 0xf9, - 0x74, 0xa1, 0x82, 0x76, 0x7a,\n 0x6e };\n\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] - = \n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\n 0xa0, 0x03, 0x02, - 0x01, 0x02, 0x02, 0x10, 0x26,\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, - 0x4a,\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\n 0x0a, 0x06, 0x08, - 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, - 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, - 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, - 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, - 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, - 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, - 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, - 0x74,\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, - 0x18, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\n 0x4d, 0x20, 0x43, - 0x41, 0x30, 0x20, 0x17, 0x0d,\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, - 0x30,\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\n 0x30, 0x35, 0x32, - 0x30, 0x32, 0x31, 0x32, 0x31,\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, - 0x6f,\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\n 0x06, 0x13, 0x02, - 0x47, 0x42, 0x31, 0x17, 0x30,\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, - 0x0e,\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x73, 0x68, - 0x69, 0x72, 0x65, 0x31, 0x12,\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, - 0x13,\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\n 0x67, 0x65, 0x31, - 0x10, 0x30, 0x0e, 0x06, 0x03,\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, - 0x4d,\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\n 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x18, 0x41,\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, - 0x67,\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\n 0x57, 0x4d, 0x32, - 0x4d, 0x20, 0x43, 0x41, 0x30,\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, - 0x48,\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\n 0x48, 0xce, 0x3d, - 0x03, 0x01, 0x07, 0x03, 0x42,\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, - 0xf0,\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\n 0xa9, 0x29, 0xa1, - 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, - 0x2c,\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\n 0x14, 0x24, 0xb1, - 0xfb, 0x16, 0x34, 0x0e, 0x43,\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, - 0xaa,\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\n 0xa0, 0xc5, 0xa3, - 0x51, 0x30, 0x4f, 0x30, 0x0b,\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, - 0x03,\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\n 0x1d, 0x13, 0x01, - 0x01, 0xff, 0x04, 0x05, 0x30,\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, - 0x03,\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\n 0xa1, 0xa5, 0x94, - 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, - 0x9a,\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\n 0x06, 0x01, 0x04, - 0x01, 0x82, 0x37, 0x15, 0x01,\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, - 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, 0x49, - 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, - 0x11,\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\n 0x13, 0x30, 0x52, - 0x77, 0xaa, 0xda, 0xda, 0xcb,\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, - 0xfa,\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\n 0xb1, 0x67, 0x6b, - 0x69, 0x07, 0x0e, 0xcd, 0x77,\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, - 0xc0,\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\n 0x70, 0x98, 0xb9, - 0x1e };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = - \n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\n 0x06, 0x07, 0x2a, - 0x86, 0x48, 0xce, 0x3d, 0x02,\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, - 0x3d,\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\n 0x01, 0x01, 0x04, - 0x20, 0x78, 0xa7, 0x3d, 0xed,\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, - 0x46,\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\n 0xb3, 0xc0, 0x00, - 0x98, 0x22, 0xcf, 0x3c, 0x38,\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, - 0x08,\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\n 0xa1, 0x44, 0x03, - 0x42, 0x00, 0x04, 0x44, 0x9c,\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, - 0x4d,\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\n 0x16, 0xcb, 0x48, - 0x72, 0x4f, 0xb7, 0x91, 0x36,\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, - 0xe5,\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\n 0xd7, 0xbd, 0xa4, - 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, - 0xec,\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\n\nconst char MBED_CLOUD_DEV_MANUFACTURER[] - = \"dev_manufacturer\";\n\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \"dev_model_num\";\n\nconst - char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \"0\";\n\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] - = \"dev_device_type\";\n\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = - \"dev_hardware_version\";\n\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB - = 0;\n\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE - = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE - = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\nconst uint32_t - MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\nconst - uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\n\n#endif - //__MBED_CLOUD_DEV_CREDENTIALS_H__\n' + - _key: '200' + description: Ok. schema: foreign_key: - entity: subtenant_trusted_certificate - group: Security + entity: device_group + group: Devices properties: - - _key: account_id - api_fieldname: account_id - description: Account to which the developer certificate belongs. - entity_fieldname: account_id - type: string - _key: created_at api_fieldname: created_at - description: Creation UTC time RFC3339. + description: The time the group was created. entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with + a number. Both key and value are limited to 128 characters. Updating this + field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 10 + type: object - _key: description api_fieldname: description - description: Description for the developer certificate. + description: The description of the group. entity_fieldname: description + example: Devices on the factory floor. + maxLength: 1024 type: string - x-nullable: true - - _key: developer_certificate - api_fieldname: developer_certificate - description: PEM-format X.509 developer certificate. - entity_fieldname: certificate - type: string - - _key: developer_private_key - api_fieldname: developer_private_key - description: PEM-format developer private key associated with the certificate. - entity_fieldname: developer_private_key - type: string + - _key: devices_count + api_fieldname: devices_count + description: The number of devices in this group. + entity_fieldname: devices_count + example: 10 + type: integer - _key: etag api_fieldname: etag - description: API resource entity version. entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - _key: id api_fieldname: id - description: ID that uniquely identifies the developer certificate. + description: The group ID. entity_fieldname: id - in: path - parameter_fieldname: developerCertificateId - required: true + example: 015c3029f6f7000000000001001000c3 + type: string + - _key: name + api_fieldname: name + description: Name of the group. + entity_fieldname: name + example: My devices + maxLength: 128 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `device-group`.' + entity_fieldname: object + example: device-group + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time this object was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: object + - _key: '400' + description: Bad request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: name - api_fieldname: name - description: Name of the developer certificate. - entity_fieldname: name + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Unauthorized. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: 'Entity name: always `trusted-cert`.' - entity_fieldname: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: security_file_content - api_fieldname: security_file_content - description: Content of the `security.c` file flashed to the device to provide - security credentials. - entity_fieldname: security_file_content + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: Bad request. - examples: - - _key: Bad Request Error - code: 400 - fields: - message: Missing certificate name. - name: name - message: Bad Request. Missing certificate name. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: validation_error + - _key: '404' + description: Not Found. schema: properties: - _key: code @@ -20570,15 +32647,59 @@ entities: - request_id - type type: object - - _key: '401' - description: Invalid access token. - examples: - - _key: Authentication Error - code: 401 - message: Invalid access token. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: invalid_auth + return_info: + custom: false + self: true + type: device_group + return_type: device_group + summary: Get a group. + x_deprecation: null + x_filter: {} + - _key: remove_device + description: Remove one device from a group. + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: device_id + api_fieldname: device_id + entity_fieldname: device_id + example: '00000000000000000000000000000000' + external_param: true + in: body + name: device_id + parameter_fieldname: device_id + required: false + schema_param: true + type: string + - _key: id + api_fieldname: device-group-id + description: The ID of the group. + entity_fieldname: id + external_param: false + in: path + name: device-group-id + parameter_fieldname: device-group-id + required: true + type: string + group_id: Devices + method: post + mode: remove_device + operation_id: Group_members_remove + pagination: false + parameter_map: + device-group-id: id + path: /v3/device-groups/{device-group-id}/devices/remove/ + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Success - device removed. + - _key: '400' + description: Bad request. schema: properties: - _key: code @@ -20625,19 +32746,8 @@ entities: - request_id - type type: object - - _key: '403' - description: The maximum number of developer certificates for the given account - has already been reached. - examples: - - _key: Account Limit Exceeded Error - code: 403 - fields: - message: '10' - name: cert-count - message: Forbidden. Limit for the number of certificates exceeded. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: account_limit_exceeded + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -20684,18 +32794,8 @@ entities: - request_id - type type: object - - _key: '409' - description: Certificate with the given name already exists. - examples: - - _key: Duplicate Error - code: 409 - fields: - message: Certificate already exists. - name: certificate - message: Conflict. Certificate already exists. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: duplicate + - _key: '404' + description: Not found. schema: properties: - _key: code @@ -20743,62 +32843,166 @@ entities: - type type: object return_info: - custom: false - self: true - type: developer_certificate - return_type: developer_certificate - summary: Create a new developer certificate to connect to the bootstrap server. + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Remove a device from a group. x_deprecation: null x_filter: {} - - _key: delete - description: 'Delete a trusted certificate. - - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} - \ - - -H ''Authorization: Bearer '' - - ```' + - _key: update + description: Modify the attributes of a group, such as the description. drop_fields: - object - etag - type - filter - field_renames: - - _key: certificate - api_fieldname: developer_certificate + - devices_count + - created_at + - updated_at + field_renames: [] fields: + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with a + number. Both key and value are limited to 128 characters. Updating this field + replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + in: body + maxProperties: 10 + name: custom_attributes + parameter_fieldname: custom_attributes + required: false + schema_param: true + type: object + - _key: description + api_fieldname: description + description: The description of the group. + entity_fieldname: description + example: Devices on the factory floor. + in: body + maxLength: 1024 + name: description + parameter_fieldname: description + required: false + schema_param: true + type: string - _key: id - api_fieldname: cert_id - description: The ID of the trusted certificate to delete. + api_fieldname: id + description: The group ID. entity_fieldname: id - external_param: false + example: 015c3029f6f7000000000001001000c3 in: path - name: cert_id - parameter_fieldname: cert_id + parameter_fieldname: device-group-id required: true type: string - group_id: Security - method: delete - mode: delete - operation_id: deleteCertificate + - _key: name + api_fieldname: name + description: Name of the group. + entity_fieldname: name + example: My devices + in: body + maxLength: 128 + name: name + parameter_fieldname: name + required: false + schema_param: true + type: string + group_id: Devices + method: put + mode: update + operation_id: Group_update pagination: false parameter_map: - cert_id: id - developerCertificateId: id - path: /v3/trusted-certificates/{cert_id} + device-group-id: id + path: /v3/device-groups/{device-group-id}/ request_body: json request_content_type: application/json responses: - - _key: '204' - description: Deleted successfully. - - _key: '401' - description: Authentication failure. + - _key: '200' + description: Ok. + schema: + foreign_key: + entity: device_group + group: Devices + properties: + - _key: created_at + api_fieldname: created_at + description: The time the group was created. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: custom_attributes + additionalProperties: + maxLength: 128 + pattern: ^[A-Za-z].* + type: string + api_fieldname: custom_attributes + description: Up to ten custom key-value attributes. Keys cannot begin with + a number. Both key and value are limited to 128 characters. Updating this + field replaces existing contents. + entity_fieldname: custom_attributes + example: + key: value + maxProperties: 10 + type: object + - _key: description + api_fieldname: description + description: The description of the group. + entity_fieldname: description + example: Devices on the factory floor. + maxLength: 1024 + type: string + - _key: devices_count + api_fieldname: devices_count + description: The number of devices in this group. + entity_fieldname: devices_count + example: 10 + type: integer + - _key: etag + api_fieldname: etag + entity_fieldname: etag + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: id + api_fieldname: id + description: The group ID. + entity_fieldname: id + example: 015c3029f6f7000000000001001000c3 + type: string + - _key: name + api_fieldname: name + description: Name of the group. + entity_fieldname: name + example: My devices + maxLength: 128 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `device-group`.' + entity_fieldname: object + example: device-group + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time this object was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: object + - _key: '400' + description: Bad request. schema: properties: - _key: code @@ -20845,8 +33049,8 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Unauthorized. schema: properties: - _key: code @@ -20894,7 +33098,7 @@ entities: - type type: object - _key: '404' - description: Certificate not found. + description: Not Found. schema: properties: - _key: code @@ -20944,25 +33148,115 @@ entities: return_info: custom: false self: true - type: developer_certificate - return_type: developer_certificate - summary: Delete a trusted certificate by ID. + type: device_group + return_type: device_group + summary: Modify the attributes of a group. x_deprecation: null x_filter: {} - - _key: get_trusted_certificate_info - description: 'Retrieve a trusted certificate by ID. + primary_key_field: id + swagger_models: + - DeviceGroup + - DeviceGroupManipulation + - DeviceGroupPage + - DevicePage + tags: + - Device directory - groups +- _key: firmware_image + field_renames: + - _key: datafile_url + api_fieldname: datafile + fields: + - _key: created_at + api_fieldname: created_at + description: The time the entity was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: datafile_checksum + api_fieldname: datafile_checksum + description: The checksum (sha256) generated for the datafile. + example: e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e + readOnly: true + required: false + type: string + - _key: datafile_size + api_fieldname: datafile_size + description: The size of the datafile in bytes. + format: int64 + readOnly: true + required: false + type: integer + - _key: datafile_url + api_fieldname: datafile + description: The firmware image file URL. + example: http://bucket.com/myimage.elf + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + description: The description of the object. + example: a description + format: free text + maxLength: 2000 + readOnly: false + required: false + type: string + - _key: id + api_fieldname: id + description: The firmware image ID. + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: name + api_fieldname: name + description: The firmware image name. + format: free text + maxLength: 128 + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: The time the entity was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Device_Update + methods: + - _key: create + description: 'Create a firmware image. +
**Note:** Only use this API for images smaller than 100 MB. For larger + images, [upload in chunks](https://www.pelion.com/docs/device-management/current/updating-firmware/uploading-a-large-firmware-image.html). - **Example:** +
+ + **Usage example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} - \ + curl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-images \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ - ```' + -H ''Content-Type: multipart/form-data'' \ + + -F ''datafile=@myimage.bin;type=application/octet-stream'' + + -F ''description=bla bla'' \ + + -F ''name=My Linux Image'' + + ``` + + ' drop_fields: - object - etag @@ -20970,205 +33264,185 @@ entities: - filter - created_at - updated_at - - name - - description - - account_id - - owner_id - - certificate - - service - - issuer - - subject - - validity - - status - - device_execution_mode - - enrollment_mode - - certificate_fingerprint - - valid + - datafile_checksum + - datafile_size + - id + - datafile_url field_renames: - - _key: certificate - api_fieldname: developer_certificate + - _key: datafile_url + api_fieldname: datafile fields: - - _key: id - api_fieldname: id - description: Entity ID. - entity_fieldname: id - example: 01619571d01d0242ac12000600000000 - in: path - parameter_fieldname: cert_id - pattern: '[a-f0-9]{32}' + - _key: description + api_fieldname: description + description: The description of the object. + entity_fieldname: description + example: a description + format: free text + in: stream + maxLength: 2000 + parameter_fieldname: description + required: false + type: string + - _key: firmware_image_file + api_fieldname: datafile + description: The firmware image file to upload. File name must not exceed 166 + characters. + entity_fieldname: firmware_image_file + external_param: true + in: stream + maxLength: 166 + name: datafile + parameter_fieldname: datafile required: true + type: file + - _key: name + api_fieldname: name + description: The firmware image name. + entity_fieldname: name + format: free text + in: stream + maxLength: 128 + parameter_fieldname: name + required: false type: string - foreign_key: - entity: trusted_certificate - group: Security - group_id: Security - method: get - mode: get_trusted_certificate_info - operation_id: getCertificate + group_id: Device_Update + method: post + mode: create + notes: This is not a standard create method as it uploads a file which creates + an entity which contains URIs to the uploaded file. + operation_id: Firmware_Image_create pagination: false parameter_map: - cert_id: id - developerCertificateId: id - path: /v3/trusted-certificates/{cert_id} - request_body: json - request_content_type: application/json + datafile: firmware_image_file + image_id: id + path: /v3/firmware-images + request_body: file + request_content_type: multipart/form-data responses: - - _key: '200' - description: Successful operation. + - _key: '201' + description: Firmware image created. The API gateway enforces the account-specific + file size. schema: - description: Represents a trusted certificate in responses. - foreign_key: - entity: developer_certificate - group: Security - properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: certificate - api_fieldname: certificate - description: X509.v3 trusted certificate in PEM format. - entity_fieldname: certificate - example: '-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----' - type: string - - _key: certificate_fingerprint - api_fieldname: certificate_fingerprint - description: A SHA-256 fingerprint of the certificate. - entity_fieldname: certificate_fingerprint - example: a10fb2c8ba90e6de927bd0ae391dcc38f6115685de2d7024712af37ead0608f1 - type: string - - _key: created_at + - _key: foreign_key + entity: firmware_image + group: Device_Update + - _key: properties + created_at: api_fieldname: created_at - description: Creation UTC time RFC3339. + description: The time the entity was created. entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - - _key: description + datafile: + api_fieldname: datafile + description: The firmware image file URL. + entity_fieldname: datafile_url + example: http://bucket.com/myimage.elf + type: string + datafile_checksum: + api_fieldname: datafile_checksum + description: The checksum (sha256) generated for the datafile. + entity_fieldname: datafile_checksum + example: e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e + type: string + datafile_size: + api_fieldname: datafile_size + description: The size of the datafile in bytes. + entity_fieldname: datafile_size + format: int64 + type: integer + description: api_fieldname: description - description: Human readable description of this certificate. + description: The description of the object. entity_fieldname: description - example: Certificate created by me. - maxLength: 500 + example: a description + format: free text + maxLength: 2000 type: string - x-nullable: true - - _key: device_execution_mode - api_fieldname: device_execution_mode - description: Device execution mode where 1 means a developer certificate. - entity_fieldname: device_execution_mode - example: 1 - format: int32 - type: integer - - _key: enrollment_mode - api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. - entity_fieldname: enrollment_mode - example: false - type: boolean - - _key: etag + etag: api_fieldname: etag description: API resource entity version. entity_fieldname: etag - example: '1' + example: '2017-05-22T12:37:58.753425Z' type: string - - _key: id + id: api_fieldname: id - description: Entity ID. + description: The firmware image ID. entity_fieldname: id - example: 01619571d01d0242ac12000600000000 - pattern: '[a-f0-9]{32}' + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' type: string - - _key: issuer - api_fieldname: issuer - description: Issuer of the certificate. - entity_fieldname: issuer - example: CN=issuer - type: string - - _key: name + name: api_fieldname: name - description: Certificate name. + description: The firmware image name. entity_fieldname: name - example: My certificate - maxLength: 100 + format: free text + maxLength: 128 type: string - - _key: object + object: api_fieldname: object - description: 'Entity name: always ''trusted-cert''' + description: 'Entity name: always ''firmware-image''.' entity_fieldname: object - enum: - - trusted-cert + example: firmware-image type: string - - _key: owner_id - api_fieldname: owner_id - description: The ID of the owner. - entity_fieldname: owner_id - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' + updated_at: + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - x-nullable: true - - _key: service - api_fieldname: service - description: Service name where the certificate is used. - entity_fieldname: service - enum: - - lwm2m - - bootstrap + - _key: '400' + description: Cannot validate the data used to create the firmware image. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: status - api_fieldname: status - description: Status of the certificate. - entity_fieldname: status + - _key: object + description: Entity name, always `error`. enum: - - ACTIVE - - INACTIVE - example: ACTIVE - type: string - - _key: subject - api_fieldname: subject - description: Subject of the certificate. - entity_fieldname: subject - example: CN=subject + - error type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: valid - api_fieldname: valid - description: This read-only flag indicates whether the certificate is valid - or not. - entity_fieldname: valid - example: true - readOnly: true - type: boolean - - _key: validity - api_fieldname: validity - description: Expiration time in UTC formatted as RFC3339. - entity_fieldname: validity - example: '2038-02-14T15:24:14Z' - format: date-time + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - account_id - - certificate - - certificate_fingerprint - - etag - - id - - issuer - - name + - code + - message - object - - service - - subject - - validity + - request_id + - type type: object - _key: '401' - description: Authentication failure. + description: Not authenticated. schema: properties: - _key: code @@ -21263,8 +33537,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Certificate not found. + - _key: '413' + description: Firmware image too large. schema: properties: - _key: code @@ -21313,325 +33587,65 @@ entities: type: object return_info: custom: false - self: false - type: trusted_certificate - return_type: trusted_certificate - summary: Get trusted certificate by ID. - unaggregated: true - x_deprecation: null - x_filter: {} - - _key: read - description: 'Return an existing developer certificate (a certificate that can - be flashed to multiple devices to connect to bootstrap server). - - - **Example:** - - ``` - - curl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID - \ - - -H "Authorization: Bearer " - - ```' - drop_fields: - - object - - etag - - type - - filter - - created_at - - account_id - - name - - description - - developer_private_key - - security_file_content - - certificate - field_renames: - - _key: certificate - api_fieldname: developer_certificate - fields: - - _key: id - api_fieldname: id - description: ID that uniquely identifies the developer certificate. - entity_fieldname: id - in: path - parameter_fieldname: developerCertificateId - required: true - type: string - group_id: Security - method: get - mode: read - operation_id: getDeveloperCertificate - pagination: false - parameter_map: - developerCertificateId: id - path: /v3/developer-certificates/{developerCertificateId} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Developer certificate returned successfully. - examples: - - _key: Success - account_id: 015fee5d9b3538c98640fbfb00000000 - created_at: '2017-12-11T14:22:20.009Z' - description: This certificate applies to multiple developer devices. - developer_certificate: '-----BEGIN CERTIFICATE-----\nMIICcDCCAhWgAwIBAgIRAPSBbBtLUE/ekQcWE4GzPJEwCgYIKoZIzj0EAwIwgaIx\nCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5DYW1icmlkZ2VzaGlyZTESMBAGA1UEBwwJ\nQ2FtYnJpZGdlMRAwDgYDVQQKDAdBUk0gTHRkMSkwJwYDVQQLDCAwMTU4NDNlMzJl\nYzkwMjQyMGEwMTVlMDcwMDAwMDAwMDEpMCcGA1UEAwwgMDE2MWRiYmNkZDY2MGE1\nODBhMDEwYzM0MDNjMDAwMDAwHhcNMTgwMjI4MDkyNzIzWhcNMjgwMjI4MDkyNzIz\nWjCBojELMAkGA1UEBhMCR0IxFzAVBgNVBAgMDkNhbWJyaWRnZXNoaXJlMRIwEAYD\nVQQHDAlDYW1icmlkZ2UxEDAOBgNVBAoMB0FSTSBMdGQxKTAnBgNVBAsMIDAxNTg0\nM2UzMmVjOTAyNDIwYTAxNWUwNzAwMDAwMDAwMSkwJwYDVQQDDCAwMTYxZGJiY2Rk\nNjYwYTU4MGEwMTBjMzQwM2MwMDAwMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBEScLDbOXvOb903AYlI9ow8E4hbLSHJPt5E2BO4Q4bHOpuWH2Oh6P+CDPte9pAv3\nE6g90Xk/ZcZpQ+xBO6qci/ajKjAoMBIGCSsGAQQBoCCBSQQFAgNAAJEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAKBggqhkjOPQQDAgNJADBGAiEAsi9zSK8Njl22GoEHrsg8\nQlwFnrkkP9d6FyLFtmqndt4CIQCmVHwisYNcCkqD2SWctG1xQHo0HZePAQW8PstM\nzhNupQ==\n-----END - CERTIFICATE-----\n' - developer_private_key: '-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgeKc97aC1Z4aniXVG\njNSvvXw2hl6zwACYIs88OKQx61GgCgYIKoZIzj0DAQehRANCAAREnCw2zl7zm/dN\nwGJSPaMPBOIWy0hyT7eRNgTuEOGxzqblh9joej/ggz7XvaQL9xOoPdF5P2XGaUPs\nQTuqnIv2\n-----END - PRIVATE KEY-----\n' - etag: '1' - id: 015fee4431fd38c98640fbfb00000000 - name: DeveloperCertificate - object: trusted-cert - security_file_content: '/*\n * Copyright (c) 2017 ARM Limited. All rights - reserved.\n * SPDX-License-Identifier: Apache-2.0\n * Licensed under the - Apache License, Version 2.0 (the License); you may\n * not use this file - except in compliance with the License.\n * You may obtain a copy of the - License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless - required by applicable law or agreed to in writing, software\n * distributed - under the License is distributed on an AS IS BASIS, WITHOUT\n * WARRANTIES - OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License - for the specific language governing permissions and\n * limitations under - the License.\n */\n#ifndef __MBED_CLOUD_DEV_CREDENTIALS_H__\n#define __MBED_CLOUD_DEV_CREDENTIALS_H__\n\n#include - \n\nconst char MBED_CLOUD_DEV_BOOTSTRAP_ENDPOINT_NAME[] = \"0161dbbcdd660a580a010c3403c00000\";\nconst - char MBED_CLOUD_DEV_ACCOUNT_ID[] = \"015843e32ec902420a015e0700000000\";\nconst - char MBED_CLOUD_DEV_BOOTSTRAP_SERVER_URI[] = \"coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000\";\n\nconst - uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE[] = \n{ 0x30, 0x82, - 0x02, 0x70, 0x30, 0x82, 0x02, 0x15,\n 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, - 0x11, 0x00,\n 0xf4, 0x81, 0x6c, 0x1b, 0x4b, 0x50, 0x4f, 0xde,\n 0x91, 0x07, - 0x16, 0x13, 0x81, 0xb3, 0x3c, 0x91,\n 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, - 0x48, 0xce,\n 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0xa2, 0x31,\n 0x0b, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,\n 0x13, 0x02, 0x47, 0x42, 0x31, 0x17, - 0x30, 0x15,\n 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0e, 0x43,\n 0x61, 0x6d, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,\n 0x73, 0x68, 0x69, 0x72, 0x65, 0x31, - 0x12, 0x30,\n 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x09,\n 0x43, 0x61, - 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x31, 0x10, 0x30, 0x0e, 0x06, - 0x03, 0x55,\n 0x04, 0x0a, 0x0c, 0x07, 0x41, 0x52, 0x4d, 0x20,\n 0x4c, 0x74, - 0x64, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x20, - 0x30, 0x31,\n 0x35, 0x38, 0x34, 0x33, 0x65, 0x33, 0x32, 0x65,\n 0x63, 0x39, - 0x30, 0x32, 0x34, 0x32, 0x30, 0x61,\n 0x30, 0x31, 0x35, 0x65, 0x30, 0x37, - 0x30, 0x30,\n 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x29,\n 0x30, 0x27, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,\n 0x20, 0x30, 0x31, 0x36, 0x31, 0x64, - 0x62, 0x62,\n 0x63, 0x64, 0x64, 0x36, 0x36, 0x30, 0x61, 0x35,\n 0x38, 0x30, - 0x61, 0x30, 0x31, 0x30, 0x63, 0x33,\n 0x34, 0x30, 0x33, 0x63, 0x30, 0x30, - 0x30, 0x30,\n 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x38, 0x30,\n 0x32, 0x32, - 0x38, 0x30, 0x39, 0x32, 0x37, 0x32,\n 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x38, - 0x30, 0x32,\n 0x32, 0x38, 0x30, 0x39, 0x32, 0x37, 0x32, 0x33,\n 0x5a, 0x30, - 0x81, 0xa2, 0x31, 0x0b, 0x30, 0x09,\n 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x47,\n 0x42, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55,\n 0x04, 0x08, - 0x0c, 0x0e, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, - 0x68, 0x69,\n 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,\n 0x55, 0x04, - 0x07, 0x0c, 0x09, 0x43, 0x61, 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x31, 0x10,\n 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,\n 0x07, 0x41, - 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64,\n 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, - 0x55, 0x04,\n 0x0b, 0x0c, 0x20, 0x30, 0x31, 0x35, 0x38, 0x34,\n 0x33, 0x65, - 0x33, 0x32, 0x65, 0x63, 0x39, 0x30,\n 0x32, 0x34, 0x32, 0x30, 0x61, 0x30, - 0x31, 0x35,\n 0x65, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30,\n 0x30, 0x30, - 0x30, 0x31, 0x29, 0x30, 0x27, 0x06,\n 0x03, 0x55, 0x04, 0x03, 0x0c, 0x20, - 0x30, 0x31,\n 0x36, 0x31, 0x64, 0x62, 0x62, 0x63, 0x64, 0x64,\n 0x36, 0x36, - 0x30, 0x61, 0x35, 0x38, 0x30, 0x61,\n 0x30, 0x31, 0x30, 0x63, 0x33, 0x34, - 0x30, 0x33,\n 0x63, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59,\n 0x30, 0x13, - 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, - 0x86, 0x48,\n 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,\n 0x04, 0x44, - 0x9c, 0x2c, 0x36, 0xce, 0x5e, 0xf3,\n 0x9b, 0xf7, 0x4d, 0xc0, 0x62, 0x52, - 0x3d, 0xa3,\n 0x0f, 0x04, 0xe2, 0x16, 0xcb, 0x48, 0x72, 0x4f,\n 0xb7, 0x91, - 0x36, 0x04, 0xee, 0x10, 0xe1, 0xb1,\n 0xce, 0xa6, 0xe5, 0x87, 0xd8, 0xe8, - 0x7a, 0x3f,\n 0xe0, 0x83, 0x3e, 0xd7, 0xbd, 0xa4, 0x0b, 0xf7,\n 0x13, 0xa8, - 0x3d, 0xd1, 0x79, 0x3f, 0x65, 0xc6,\n 0x69, 0x43, 0xec, 0x41, 0x3b, 0xaa, - 0x9c, 0x8b,\n 0xf6, 0xa3, 0x2a, 0x30, 0x28, 0x30, 0x12, 0x06,\n 0x09, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0xa0, 0x20,\n 0x81, 0x49, 0x04, 0x05, 0x02, 0x03, - 0x40, 0x00,\n 0x91, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, - 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,\n 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, - 0x0a, 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, - 0x49, 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xb2, 0x2f, 0x73, 0x48, 0xaf, - 0x0d, 0x8e,\n 0x5d, 0xb6, 0x1a, 0x81, 0x07, 0xae, 0xc8, 0x3c,\n 0x42, 0x5c, - 0x05, 0x9e, 0xb9, 0x24, 0x3f, 0xd7,\n 0x7a, 0x17, 0x22, 0xc5, 0xb6, 0x6a, - 0xa7, 0x76,\n 0xde, 0x02, 0x21, 0x00, 0xa6, 0x54, 0x7c, 0x22,\n 0xb1, 0x83, - 0x5c, 0x0a, 0x4a, 0x83, 0xd9, 0x25,\n 0x9c, 0xb4, 0x6d, 0x71, 0x40, 0x7a, - 0x34, 0x1d,\n 0x97, 0x8f, 0x01, 0x05, 0xbc, 0x3e, 0xcb, 0x4c,\n 0xce, 0x13, - 0x6e, 0xa5 };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE[] - = \n{ 0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0xdb,\n 0xa0, 0x03, 0x02, - 0x01, 0x02, 0x02, 0x10, 0x5c,\n 0x27, 0xa5, 0x76, 0x7d, 0x58, 0x85, 0x8a, - 0x43,\n 0x91, 0xa0, 0x61, 0xab, 0xcf, 0xa6, 0x59, 0x30,\n 0x0a, 0x06, 0x08, - 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x72, 0x31, 0x0b, - 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, - 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, - 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, - 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, - 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, - 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, - 0x74,\n 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, - 0x1b, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x42, 0x6f, 0x6f, 0x74,\n 0x73, 0x74, 0x72, - 0x61, 0x70, 0x43, 0x41, 0x30,\n 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x35, - 0x31,\n 0x35, 0x31, 0x39, 0x34, 0x39, 0x31, 0x31, 0x5a,\n 0x18, 0x0f, 0x32, - 0x30, 0x35, 0x32, 0x30, 0x35,\n 0x31, 0x35, 0x31, 0x39, 0x35, 0x39, 0x31, - 0x30,\n 0x5a, 0x30, 0x72, 0x31, 0x0b, 0x30, 0x09, 0x06,\n 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x47, 0x42,\n 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, - 0x04,\n 0x08, 0x13, 0x0e, 0x43, 0x61, 0x6d, 0x62, 0x72,\n 0x69, 0x64, 0x67, - 0x65, 0x73, 0x68, 0x69, 0x72,\n 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, - 0x55,\n 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x6d, 0x62,\n 0x72, 0x69, 0x64, - 0x67, 0x65, 0x31, 0x10, 0x30,\n 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, - 0x07,\n 0x41, 0x52, 0x4d, 0x20, 0x4c, 0x74, 0x64, 0x31,\n 0x24, 0x30, 0x22, - 0x06, 0x03, 0x55, 0x04, 0x03,\n 0x13, 0x1b, 0x41, 0x52, 0x4d, 0x20, 0x49, - 0x6e,\n 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f,\n 0x6e, 0x20, 0x42, - 0x6f, 0x6f, 0x74, 0x73, 0x74,\n 0x72, 0x61, 0x70, 0x43, 0x41, 0x30, 0x59, - 0x30,\n 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x02, 0x01, 0x06, - 0x08, 0x2a, 0x86, 0x48, 0xce,\n 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, - 0x04,\n 0x8b, 0x7c, 0x86, 0xc3, 0x88, 0x54, 0xe6, 0x5f,\n 0xe0, 0x57, 0x4e, - 0x1b, 0xac, 0x29, 0x82, 0xea,\n 0x7d, 0x91, 0x00, 0x63, 0xa7, 0x4a, 0x05, - 0xbc,\n 0x54, 0xc5, 0x71, 0x27, 0x33, 0x19, 0x1b, 0x2e,\n 0xfa, 0x41, 0xf8, - 0x7a, 0x9a, 0x0c, 0x5d, 0xfc,\n 0xb3, 0x37, 0x01, 0x99, 0xc5, 0xc9, 0xbe, - 0x78,\n 0x5b, 0x1d, 0xec, 0xb0, 0x1a, 0x1d, 0xdc, 0xe4,\n 0x6f, 0x57, 0x04, - 0xf4, 0x3a, 0xca, 0xa8, 0xd2,\n 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, 0x06, - 0x03,\n 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01,\n 0x86, 0x30, 0x0f, - 0x06, 0x03, 0x55, 0x1d, 0x13,\n 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, - 0x01,\n 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,\n 0x0e, 0x04, 0x16, - 0x04, 0x14, 0x13, 0xef, 0x69,\n 0xfa, 0x62, 0x3f, 0x00, 0x86, 0xf4, 0x05, - 0xb8,\n 0xb6, 0xe6, 0xb2, 0xf1, 0xdb, 0x69, 0x10, 0xb4,\n 0x39, 0x30, 0x10, - 0x06, 0x09, 0x2b, 0x06, 0x01,\n 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, - 0x03,\n 0x02, 0x01, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a,\n 0x86, 0x48, 0xce, - 0x3d, 0x04, 0x03, 0x02, 0x03,\n 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, - 0xa2,\n 0x50, 0x88, 0x0f, 0x55, 0xe8, 0x26, 0x49, 0xe6,\n 0xf5, 0x71, 0x86, - 0x33, 0x29, 0x05, 0x4c, 0xf9,\n 0xfd, 0x1f, 0x14, 0x98, 0x92, 0x85, 0xd9, - 0x5c,\n 0x48, 0x02, 0x9e, 0xc2, 0x79, 0xa8, 0x59, 0x02,\n 0x20, 0x3e, 0xfe, - 0x3c, 0xa0, 0xbf, 0xd3, 0x0f,\n 0x15, 0x83, 0x56, 0xbc, 0xf2, 0xfa, 0x16, - 0x26,\n 0x7a, 0xc1, 0x68, 0xaa, 0xbc, 0x91, 0x3c, 0x69,\n 0x44, 0x36, 0xf9, - 0x74, 0xa1, 0x82, 0x76, 0x7a,\n 0x6e };\n\nconst uint8_t MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE[] - = \n{ 0x30, 0x82, 0x02, 0x30, 0x30, 0x82, 0x01, 0xd5,\n 0xa0, 0x03, 0x02, - 0x01, 0x02, 0x02, 0x10, 0x26,\n 0xf9, 0x08, 0xfc, 0xf1, 0xc0, 0x46, 0xa4, - 0x4a,\n 0x4d, 0x2c, 0xf1, 0x94, 0x27, 0xf9, 0x1f, 0x30,\n 0x0a, 0x06, 0x08, - 0x2a, 0x86, 0x48, 0xce, 0x3d,\n 0x04, 0x03, 0x02, 0x30, 0x6f, 0x31, 0x0b, - 0x30,\n 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,\n 0x47, 0x42, 0x31, - 0x17, 0x30, 0x15, 0x06, 0x03,\n 0x55, 0x04, 0x08, 0x13, 0x0e, 0x43, 0x61, - 0x6d,\n 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x68,\n 0x69, 0x72, 0x65, - 0x31, 0x12, 0x30, 0x10, 0x06,\n 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, - 0x61,\n 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x31,\n 0x10, 0x30, 0x0e, - 0x06, 0x03, 0x55, 0x04, 0x0a,\n 0x13, 0x07, 0x41, 0x52, 0x4d, 0x20, 0x4c, - 0x74,\n 0x64, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55,\n 0x04, 0x03, 0x13, - 0x18, 0x41, 0x52, 0x4d, 0x20,\n 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74,\n 0x69, 0x6f, 0x6e, 0x20, 0x4c, 0x57, 0x4d, 0x32,\n 0x4d, 0x20, 0x43, - 0x41, 0x30, 0x20, 0x17, 0x0d,\n 0x31, 0x37, 0x30, 0x32, 0x31, 0x32, 0x31, - 0x30,\n 0x33, 0x37, 0x35, 0x32, 0x5a, 0x18, 0x0f, 0x32,\n 0x30, 0x35, 0x32, - 0x30, 0x32, 0x31, 0x32, 0x31,\n 0x30, 0x34, 0x37, 0x35, 0x32, 0x5a, 0x30, - 0x6f,\n 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,\n 0x06, 0x13, 0x02, - 0x47, 0x42, 0x31, 0x17, 0x30,\n 0x15, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, - 0x0e,\n 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67,\n 0x65, 0x73, 0x68, - 0x69, 0x72, 0x65, 0x31, 0x12,\n 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, - 0x13,\n 0x09, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64,\n 0x67, 0x65, 0x31, - 0x10, 0x30, 0x0e, 0x06, 0x03,\n 0x55, 0x04, 0x0a, 0x13, 0x07, 0x41, 0x52, - 0x4d,\n 0x20, 0x4c, 0x74, 0x64, 0x31, 0x21, 0x30, 0x1f,\n 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x18, 0x41,\n 0x52, 0x4d, 0x20, 0x49, 0x6e, 0x74, 0x65, - 0x67,\n 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4c,\n 0x57, 0x4d, 0x32, - 0x4d, 0x20, 0x43, 0x41, 0x30,\n 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, - 0x48,\n 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86,\n 0x48, 0xce, 0x3d, - 0x03, 0x01, 0x07, 0x03, 0x42,\n 0x00, 0x04, 0xba, 0xea, 0x80, 0x01, 0x2d, - 0xf0,\n 0xe1, 0xb6, 0xc5, 0x5f, 0xf9, 0x76, 0x84, 0x31,\n 0xa9, 0x29, 0xa1, - 0xc7, 0xa8, 0xfd, 0xa0, 0xad,\n 0xd9, 0x94, 0xe7, 0xec, 0x5a, 0x33, 0xa1, - 0x2c,\n 0x8e, 0x36, 0x43, 0x9b, 0x18, 0xdf, 0xce, 0x71,\n 0x14, 0x24, 0xb1, - 0xfb, 0x16, 0x34, 0x0e, 0x43,\n 0xfc, 0x23, 0x77, 0xd4, 0x13, 0xd7, 0x11, - 0xaa,\n 0x39, 0x60, 0xab, 0xa2, 0xdf, 0x24, 0xb3, 0xeb,\n 0xa0, 0xc5, 0xa3, - 0x51, 0x30, 0x4f, 0x30, 0x0b,\n 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, - 0x03,\n 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55,\n 0x1d, 0x13, 0x01, - 0x01, 0xff, 0x04, 0x05, 0x30,\n 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, - 0x03,\n 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x7b,\n 0xa1, 0xa5, 0x94, - 0xa5, 0xe5, 0x8f, 0x95, 0x5d,\n 0xd4, 0xce, 0xdc, 0x0f, 0x8a, 0xbe, 0xad, - 0x9a,\n 0x6b, 0x66, 0x3e, 0x30, 0x10, 0x06, 0x09, 0x2b,\n 0x06, 0x01, 0x04, - 0x01, 0x82, 0x37, 0x15, 0x01,\n 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0a, - 0x06,\n 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03,\n 0x02, 0x03, 0x49, - 0x00, 0x30, 0x46, 0x02, 0x21,\n 0x00, 0xd2, 0x06, 0x28, 0xc5, 0x31, 0x3a, - 0x11,\n 0x8d, 0xb6, 0xcb, 0x2b, 0x3f, 0xdd, 0x2a, 0x9a,\n 0x13, 0x30, 0x52, - 0x77, 0xaa, 0xda, 0xda, 0xcb,\n 0xce, 0xb9, 0x5c, 0xe4, 0x32, 0x1c, 0x02, - 0xfa,\n 0x30, 0x02, 0x21, 0x00, 0xb3, 0x82, 0x24, 0xa2,\n 0xb1, 0x67, 0x6b, - 0x69, 0x07, 0x0e, 0xcd, 0x77,\n 0x74, 0x99, 0x06, 0x9c, 0x59, 0xb2, 0x00, - 0xc0,\n 0xb3, 0xbb, 0x37, 0x5b, 0xc0, 0x1b, 0xfb, 0xd9,\n 0x70, 0x98, 0xb9, - 0x1e };\n\nconst uint8_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY[] = - \n{ 0x30, 0x81, 0x93, 0x02, 0x01, 0x00, 0x30, 0x13,\n 0x06, 0x07, 0x2a, - 0x86, 0x48, 0xce, 0x3d, 0x02,\n 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, - 0x3d,\n 0x03, 0x01, 0x07, 0x04, 0x79, 0x30, 0x77, 0x02,\n 0x01, 0x01, 0x04, - 0x20, 0x78, 0xa7, 0x3d, 0xed,\n 0xa0, 0xb5, 0x67, 0x86, 0xa7, 0x89, 0x75, - 0x46,\n 0x8c, 0xd4, 0xaf, 0xbd, 0x7c, 0x36, 0x86, 0x5e,\n 0xb3, 0xc0, 0x00, - 0x98, 0x22, 0xcf, 0x3c, 0x38,\n 0xa4, 0x31, 0xeb, 0x51, 0xa0, 0x0a, 0x06, - 0x08,\n 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,\n 0xa1, 0x44, 0x03, - 0x42, 0x00, 0x04, 0x44, 0x9c,\n 0x2c, 0x36, 0xce, 0x5e, 0xf3, 0x9b, 0xf7, - 0x4d,\n 0xc0, 0x62, 0x52, 0x3d, 0xa3, 0x0f, 0x04, 0xe2,\n 0x16, 0xcb, 0x48, - 0x72, 0x4f, 0xb7, 0x91, 0x36,\n 0x04, 0xee, 0x10, 0xe1, 0xb1, 0xce, 0xa6, - 0xe5,\n 0x87, 0xd8, 0xe8, 0x7a, 0x3f, 0xe0, 0x83, 0x3e,\n 0xd7, 0xbd, 0xa4, - 0x0b, 0xf7, 0x13, 0xa8, 0x3d,\n 0xd1, 0x79, 0x3f, 0x65, 0xc6, 0x69, 0x43, - 0xec,\n 0x41, 0x3b, 0xaa, 0x9c, 0x8b, 0xf6 };\n\nconst char MBED_CLOUD_DEV_MANUFACTURER[] - = \"dev_manufacturer\";\n\nconst char MBED_CLOUD_DEV_MODEL_NUMBER[] = \"dev_model_num\";\n\nconst - char MBED_CLOUD_DEV_SERIAL_NUMBER[] = \"0\";\n\nconst char MBED_CLOUD_DEV_DEVICE_TYPE[] - = \"dev_device_type\";\n\nconst char MBED_CLOUD_DEV_HARDWARE_VERSION[] = - \"dev_hardware_version\";\n\nconst uint32_t MBED_CLOUD_DEV_MEMORY_TOTAL_KB - = 0;\n\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE_SIZE - = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_CERTIFICATE);\nconst uint32_t MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE_SIZE - = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_SERVER_ROOT_CA_CERTIFICATE);\nconst uint32_t - MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE_SIZE = sizeof(MBED_CLOUD_DEV_LWM2M_SERVER_ROOT_CA_CERTIFICATE);\nconst - uint32_t MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY_SIZE = sizeof(MBED_CLOUD_DEV_BOOTSTRAP_DEVICE_PRIVATE_KEY);\n\n#endif - //__MBED_CLOUD_DEV_CREDENTIALS_H__\n' - schema: - foreign_key: - entity: developer_certificate - group: Security - properties: - - _key: account_id - api_fieldname: account_id - description: Account to which the developer certificate belongs. - entity_fieldname: account_id - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - format: date-time - type: string - - _key: description - api_fieldname: description - description: Description for the developer certificate. - entity_fieldname: description - type: string - x-nullable: true - - _key: developer_certificate - api_fieldname: developer_certificate - description: PEM-format X.509 developer certificate. - entity_fieldname: developer_certificate - type: string - - _key: developer_private_key - api_fieldname: developer_private_key - description: PEM-format developer private key associated with the certificate. - entity_fieldname: developer_private_key - type: string - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - type: string - - _key: id - api_fieldname: id - description: ID that uniquely identifies the developer certificate. - entity_fieldname: id - type: string - - _key: name - api_fieldname: name - description: Name of the developer certificate. - entity_fieldname: name - type: string - - _key: object - api_fieldname: object - description: 'Entity name: always `trusted-cert`.' - entity_fieldname: object - type: string - - _key: security_file_content - api_fieldname: security_file_content - description: Content of the `security.c` file flashed to the device to provide - security credentials. - entity_fieldname: security_file_content - type: string - type: object + self: true + type: firmware_image + return_type: firmware_image + summary: Create an image + unaggregated: true + x_deprecation: null + x_filter: {} + - _key: delete + description: 'Delete a firmware image. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-images/11234567f9012ab56790120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + field_renames: + - _key: datafile_url + api_fieldname: datafile + fields: + - _key: id + api_fieldname: image_id + description: The firmware image ID. + entity_fieldname: id + external_param: false + in: path + name: image_id + parameter_fieldname: image_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + group_id: Device_Update + method: delete + mode: delete + operation_id: Firmware_Image_destroy + pagination: false + parameter_map: + image_id: id + path: /v3/firmware-images/{image_id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Firmware image deleted. - _key: '400' - description: Bad request. + description: Bad Request. schema: properties: - _key: code @@ -21679,14 +33693,7 @@ entities: - type type: object - _key: '401' - description: Invalid access token. - examples: - - _key: Authentication Error - code: 401 - message: Invalid access token. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: invalid_auth + description: Not authenticated. schema: properties: - _key: code @@ -21734,14 +33741,7 @@ entities: - type type: object - _key: '404' - description: Developer certificate not found with given ID. - examples: - - _key: Authentication Error - code: 404 - message: 'Not Found. Not found: 016006724ff53ade90ed948d03c00001' - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: not_found + description: Firmware image not found. schema: properties: - _key: code @@ -21791,410 +33791,244 @@ entities: return_info: custom: false self: true - type: developer_certificate - return_type: developer_certificate - summary: Fetch an existing developer certificate to connect to the bootstrap server. + type: firmware_image + return_type: firmware_image + summary: Delete an image x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - DeveloperCertificateRequestData - - DeveloperCertificateResponseData - - TrustedCertificateResp - tags: - - Device security - developer class certificates - - Device security - certificates -- _key: device - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: The ID of the associated account. - example: '00000000000000000000000000000000' - readOnly: true - required: false - type: string - - _key: auto_update - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - readOnly: false - required: false - type: boolean - - _key: bootstrap_expiration_date - api_fieldname: bootstrap_expiration_date - description: The expiration date of the certificate used to connect to bootstrap - server. - format: date - readOnly: false - required: false - type: string - x-nullable: true - - _key: bootstrapped_timestamp - api_fieldname: bootstrapped_timestamp - description: The timestamp of the device's most recent bootstrap process. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: ca_id - api_fieldname: ca_id - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 - readOnly: false - required: false - type: string - - _key: connector_expiration_date - api_fieldname: connector_expiration_date - description: The expiration date of the certificate used to connect to LwM2M server. - format: date - readOnly: false - required: false - type: string - x-nullable: true - - _key: created_at - api_fieldname: created_at - description: The timestamp of when the device was created in the device directory. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot begin - with a number. Both keys and values are limited to 128 characters. Updating - this field replaces existing contents. - example: - key: value - maxProperties: 5 - readOnly: false - required: false - type: object - - _key: deployed_state - api_fieldname: deployed_state - description: 'DEPRECATED: The state of the device''s deployment.' - enum: - - development - - production - enum_reference: device_deployed_state_enum - readOnly: true - required: false - type: string - - _key: deployment - api_fieldname: deployment - description: 'DEPRECATED: The last deployment used on the device.' - example: '' - readOnly: false - required: false - type: string - - _key: description - api_fieldname: description - description: The description of the device. - example: description - maxLength: 2000 - readOnly: false - required: false - type: string - - _key: device_class - api_fieldname: device_class - description: An ID representing the model and hardware revision of the device. - example: '' - maxLength: 32 - readOnly: false - required: false - type: string - - _key: device_execution_mode - api_fieldname: device_execution_mode - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ - \ execution mode (default if host_gateway invalid or not set). The device firmware\ - \ uses a certificate that is not identified as a developer or production certificate.\n\ - \ - 1 - Development device. The device firmware uses a developer certificate\ - \ to communicate with Device Management.\n - 5 - Production device. The device\ - \ firmware uses a factory-generated certificate to communicate with Device Management." - enum: - - 0 - - 1 - - 5 - example: 0 - readOnly: false - required: false - type: integer - - _key: device_key - api_fieldname: device_key - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - readOnly: false - required: false - type: string - - _key: endpoint_name - api_fieldname: endpoint_name - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - required: false - type: string - - _key: endpoint_type - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is a gateway. - example: '' - maxLength: 64 - readOnly: false - required: false - type: string - - _key: enrolment_list_timestamp - api_fieldname: enrolment_list_timestamp - description: The claim date/time. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: firmware_checksum - api_fieldname: firmware_checksum - description: The SHA256 checksum of the current firmware image. - example: '0000000000000000000000000000000000000000000000000000000000000000' - readOnly: true - required: false - type: string - - _key: groups - api_fieldname: groups - description: An array containing an ID of each group this device belongs to. - items: - example: '00000000000000000000000000000000' - type: string - readOnly: true - required: false - type: array - - _key: host_gateway - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - example: '' - readOnly: false - required: false - type: string - - _key: id - api_fieldname: id - description: The ID of the device. The device ID is used across all Device Management - APIs. - example: '00000000000000000000000000000000' - readOnly: false - required: true - type: string - - _key: issuer_fingerprint - api_fieldname: issuer_fingerprint - description: SHA256 fingerprint of the certificate used to validate the signature - of the device certificate. - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' - readOnly: false - required: false - type: string - x-nullable: true - - _key: last_operator_suspended_category - api_fieldname: last_operator_suspended_category - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' - readOnly: true - required: false - type: string - - _key: last_operator_suspended_description - api_fieldname: last_operator_suspended_description - description: The most recent description why the device was suspended or returned - to service. - example: Suspended for maintenance. - maxLength: 2000 - readOnly: true - required: false - type: string - - _key: last_operator_suspended_updated_at - api_fieldname: last_operator_suspended_updated_at - description: The timestamp of the most recent suspension activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: last_system_suspended_category - api_fieldname: last_system_suspended_category - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' - readOnly: true - required: false - type: string - - _key: last_system_suspended_description - api_fieldname: last_system_suspended_description - description: The most recent description of why the device was blocked or unblocked - by the system. - example: A certificate in the device's certificate chain was blacklisted by the - system. - maxLength: 2000 - readOnly: true - required: false - type: string - - _key: last_system_suspended_updated_at - api_fieldname: last_system_suspended_updated_at - description: The timestamp of the most recent system block activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: lifecycle_status - api_fieldname: lifecycle_status - description: The lifecycle status of the device. - enum: - - enabled - - blocked - enum_reference: device_lifecycle_status_enum - example: enabled - readOnly: true - required: false - type: string - - _key: manifest - api_fieldname: manifest - description: 'DEPRECATED: The URL for the current device manifest.' - example: '' - readOnly: false - required: false - type: string - - _key: manifest_timestamp - api_fieldname: manifest_timestamp - description: The timestamp of the current manifest version. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: mechanism - api_fieldname: mechanism - description: The ID of the channel used to communicate with the device. - enum: - - connector - - direct - enum_reference: device_mechanism_enum - readOnly: false - required: false - type: string - - _key: mechanism_url - api_fieldname: mechanism_url - description: The address of the connector to use. - example: '' - readOnly: false - required: false - type: string - - _key: name - api_fieldname: name - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 - readOnly: false - required: false - type: string - - _key: operator_suspended - api_fieldname: operator_suspended - description: Is the device suspended by the operator? - readOnly: true - required: false - type: boolean - - _key: serial_number - api_fieldname: serial_number - description: The serial number of the device. - example: 00000000-0000-0000-0000-000000000000 - readOnly: false - required: false - type: string - - _key: state - api_fieldname: state - description: The current state of the device. - enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered - enum_reference: device_state_enum - readOnly: false - required: false - type: string - - _key: system_suspended - api_fieldname: system_suspended - description: Is the device suspended by the system? - readOnly: true - required: false - type: boolean - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: vendor_id - api_fieldname: vendor_id - description: The device vendor ID. - example: 00000000-0000-0000-0000-000000000000 - readOnly: false - required: false - type: string - group_id: Devices - methods: - - _key: add_to_group - description: Add one device to a group. + - _key: list + description: 'List all firmware images. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag - type - filter - field_renames: [] + - data + - has_more + - total_count + - created_at__in + - created_at__nin + - created_at__lte + - created_at__gte + - datafile__eq + - datafile__neq + - datafile__in + - datafile__nin + - datafile_checksum__eq + - datafile_checksum__neq + - datafile_checksum__in + - datafile_checksum__nin + - datafile_size__eq + - datafile_size__neq + - datafile_size__in + - datafile_size__nin + - description__eq + - description__neq + - description__in + - description__nin + - id__eq + - id__neq + - id__in + - id__nin + - name__eq + - name__neq + - name__in + - name__nin + - updated_at__in + - updated_at__nin + - updated_at__lte + - updated_at__gte + field_renames: + - _key: datafile_url + api_fieldname: datafile fields: - - _key: device-group-id - api_fieldname: device-group-id - description: The ID of the group. - entity_fieldname: device-group-id + - _key: after + api_fieldname: after + description: The ID of the item after which to retrieve the next page. + entity_fieldname: after + example: null + external_param: true + in: query + name: after + parameter_fieldname: after + required: false + type: string + - _key: include + api_fieldname: include + description: 'A comma-separated list of data fields to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to the + closest limit. + entity_fieldname: limit + external_param: true + format: int32 + in: query + maximum: 1000 + minimum: 2 + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + description: ASC or DESC. + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: firmware_image_order_enum + example: ASC external_param: true - in: path - name: device-group-id - parameter_fieldname: device-group-id - required: true - type: string - - _key: id - api_fieldname: device_id - entity_fieldname: id - example: '00000000000000000000000000000000' - external_param: false - in: body - name: device_id - parameter_fieldname: device_id - required: true - schema_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string - group_id: Devices - method: post - mode: add_to_group - operation_id: Group_members_add - pagination: false + foreign_key: + entity: firmware_image + group: Device_Update + foreign_key_priority: self + group_id: Device_Update + method: get + mode: list + operation_id: Firmware_Image_list + pagination: true parameter_map: - device_id: id - path: /v3/device-groups/{device-group-id}/devices/add/ + image_id: id + path: /v3/firmware-images request_body: json request_content_type: application/json responses: - - _key: '204' - description: Success - device added. + - _key: '200' + description: Request successful. + schema: + foreign_key: + entity: firmware_image + group: Device_Update + pagination: true + properties: + - _key: after + api_fieldname: after + entity_fieldname: after + example: null + type: string + - _key: data + api_fieldname: data + entity_fieldname: data + items: + - _key: foreign_key + entity: firmware_image + group: Device_Update + - _key: properties + created_at: + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + datafile: + description: The firmware image file URL. + example: http://bucket.com/myimage.elf + type: string + datafile_checksum: + description: The checksum (sha256) generated for the datafile. + example: e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e + type: string + datafile_size: + description: The size of the datafile in bytes. + format: int64 + type: integer + description: + description: The description of the object. + example: a description + format: free text + maxLength: 2000 + type: string + etag: + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' + type: string + id: + description: The firmware image ID. + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' + type: string + name: + description: The firmware image name. + format: free text + maxLength: 128 + type: string + object: + description: 'Entity name: always ''firmware-image''.' + example: firmware-image + type: string + updated_at: + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + type: array + - _key: has_more + api_fieldname: has_more + entity_fieldname: has_more + type: boolean + - _key: limit + api_fieldname: limit + entity_fieldname: limit + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always ''list''.' + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: The order of the records based on creation time, `ASC` or `DESC`; + by default `ASC`. + entity_fieldname: order + enum: + - ASC + - DESC + example: ASC + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + format: int32 + type: integer - _key: '400' - description: Bad request. + description: Bad Request. schema: properties: - _key: code @@ -22242,7 +34076,7 @@ entities: - type type: object - _key: '401' - description: Unauthorized. + description: Not authenticated. schema: properties: - _key: code @@ -22290,7 +34124,7 @@ entities: - type type: object - _key: '404' - description: Not found. + description: Unable to find content. schema: properties: - _key: code @@ -22338,750 +34172,1176 @@ entities: - type type: object return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Add a device to a group. + custom: false + self: true + type: firmware_image + return_type: paginated_response(firmware_image) + summary: List all images x_deprecation: null - x_filter: {} - - _key: create - description: Create a new device. + x_filter: + created_at: + - in + - nin + - lte + - gte + datafile_checksum: + - eq + - neq + - in + - nin + datafile_size: + - eq + - neq + - in + - nin + datafile_url: + - eq + - neq + - in + - nin + description: + - eq + - neq + - in + - nin + id: + - eq + - neq + - in + - nin + name: + - eq + - neq + - in + - nin + updated_at: + - in + - nin + - lte + - gte + - _key: read + description: 'Retrieve a firmware image. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-images/1123456f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag - type - filter - - groups - - operator_suspended - - last_operator_suspended_category - - last_operator_suspended_description - - last_operator_suspended_updated_at - - system_suspended - - last_system_suspended_category - - last_system_suspended_description - - last_system_suspended_updated_at - - lifecycle_status - - account_id - - bootstrapped_timestamp - created_at - - deployed_state - - id - - firmware_checksum - - manifest_timestamp - updated_at - - enrolment_list_timestamp - field_renames: [] + - datafile_checksum + - datafile_size + - description + - name + - datafile_url + field_renames: + - _key: datafile_url + api_fieldname: datafile fields: - - _key: auto_update - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - entity_fieldname: auto_update - in: body - parameter_fieldname: auto_update - required: false - type: boolean - - _key: bootstrap_expiration_date - api_fieldname: bootstrap_expiration_date - description: The expiration date of the certificate used to connect to bootstrap - server. - entity_fieldname: bootstrap_expiration_date - format: date - in: body - parameter_fieldname: bootstrap_expiration_date - required: false - type: string - x-nullable: true - - _key: ca_id - api_fieldname: ca_id - description: The certificate issuer's ID. - entity_fieldname: ca_id - example: '00000000000000000000000000000000' - in: body - maxLength: 500 - parameter_fieldname: ca_id - required: false - type: string - - _key: connector_expiration_date - api_fieldname: connector_expiration_date - description: The expiration date of the certificate used to connect to LwM2M - server. - entity_fieldname: connector_expiration_date - format: date - in: body - parameter_fieldname: connector_expiration_date - required: false - type: string - x-nullable: true - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot begin - with a number. Both keys and values are limited to 128 characters. Updating - this field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - in: body - maxProperties: 5 - parameter_fieldname: custom_attributes - required: false - type: object - - _key: deployment - api_fieldname: deployment - description: 'DEPRECATED: The last deployment used on the device.' - entity_fieldname: deployment - example: '' - in: body - parameter_fieldname: deployment - required: false - type: string - - _key: description - api_fieldname: description - description: The description of the device. - entity_fieldname: description - example: description - in: body - maxLength: 2000 - parameter_fieldname: description - required: false - type: string - - _key: device_class - api_fieldname: device_class - description: An ID representing the model and hardware revision of the device. - entity_fieldname: device_class - example: '' - in: body - maxLength: 32 - parameter_fieldname: device_class - required: false - type: string - - _key: device_execution_mode - api_fieldname: device_execution_mode - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 - Unspecified\ - \ execution mode (default if host_gateway invalid or not set). The device\ - \ firmware uses a certificate that is not identified as a developer or production\ - \ certificate.\n - 1 - Development device. The device firmware uses a developer\ - \ certificate to communicate with Device Management.\n - 5 - Production device.\ - \ The device firmware uses a factory-generated certificate to communicate\ - \ with Device Management." - entity_fieldname: device_execution_mode - enum: - - 0 - - 1 - - 5 - example: 0 - in: body - parameter_fieldname: device_execution_mode - required: false - type: integer - - _key: device_key - api_fieldname: device_key - description: The fingerprint of the device certificate. - entity_fieldname: device_key - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - in: body - maxLength: 512 - parameter_fieldname: device_key - required: false - type: string - - _key: endpoint_name - api_fieldname: endpoint_name - description: The endpoint name given to the device. - entity_fieldname: endpoint_name - example: 00000000-0000-0000-0000-000000000000 - in: body - parameter_fieldname: endpoint_name - readOnly: true - required: false - type: string - - _key: endpoint_type - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is a gateway. - entity_fieldname: endpoint_type - example: '' - in: body - maxLength: 64 - parameter_fieldname: endpoint_type - required: false - type: string - - _key: host_gateway - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - entity_fieldname: host_gateway - example: '' - in: body - parameter_fieldname: host_gateway - required: false - type: string - - _key: issuer_fingerprint - api_fieldname: issuer_fingerprint - description: SHA256 fingerprint of the certificate used to validate the signature - of the device certificate. - entity_fieldname: issuer_fingerprint - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - in: body - parameter_fieldname: issuer_fingerprint - pattern: '[A-Fa-f0-9]{64}' - required: false - type: string - x-nullable: true - - _key: manifest - api_fieldname: manifest - description: 'DEPRECATED: The URL for the current device manifest.' - entity_fieldname: manifest - example: '' - in: body - parameter_fieldname: manifest - required: false - type: string - - _key: mechanism - api_fieldname: mechanism - description: The ID of the channel used to communicate with the device. - entity_fieldname: mechanism - enum: - - connector - - direct - enum_reference: device_mechanism_enum - in: body - parameter_fieldname: mechanism - required: false - type: string - - _key: mechanism_url - api_fieldname: mechanism_url - description: The address of the connector to use. - entity_fieldname: mechanism_url - example: '' - in: body - parameter_fieldname: mechanism_url - required: false - type: string - - _key: name - api_fieldname: name - description: The name of the device. - entity_fieldname: name - example: 00000000-0000-0000-0000-000000000000 - in: body - maxLength: 128 - parameter_fieldname: name - required: false - type: string - - _key: serial_number - api_fieldname: serial_number - description: The serial number of the device. - entity_fieldname: serial_number - example: 00000000-0000-0000-0000-000000000000 - in: body - parameter_fieldname: serial_number - required: false - type: string - - _key: state - api_fieldname: state - description: The current state of the device. - entity_fieldname: state - enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered - enum_reference: device_state_enum - in: body - parameter_fieldname: state - required: false - type: string - - _key: vendor_id - api_fieldname: vendor_id - description: The device vendor ID. - entity_fieldname: vendor_id - example: 00000000-0000-0000-0000-000000000000 - in: body - parameter_fieldname: vendor_id - required: false + - _key: id + api_fieldname: id + description: The firmware image ID. + entity_fieldname: id + example: 016e652be671000000000001001001e5 + in: path + parameter_fieldname: image_id + pattern: '[A-Fa-f0-9]{32}' + required: true type: string - group_id: Devices - method: post - mode: create - operation_id: Device_create + group_id: Device_Update + method: get + mode: read + operation_id: Firmware_Image_retrieve pagination: false - path: /v3/devices/ + parameter_map: + image_id: id + path: /v3/firmware-images/{image_id} request_body: json request_content_type: application/json responses: - - _key: '201' - description: Device created. + - _key: '200' + description: Retrieved result successfully. schema: - _key: foreign_key - entity: device - group: Devices + entity: firmware_image + group: Device_Update - _key: properties - account_id: - api_fieldname: account_id - description: The ID of the associated account. - entity_fieldname: account_id - example: '00000000000000000000000000000000' - type: string - auto_update: - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - entity_fieldname: auto_update - type: boolean - bootstrap_expiration_date: - api_fieldname: bootstrap_expiration_date - description: The expiration date of the certificate used to connect to bootstrap - server. - entity_fieldname: bootstrap_expiration_date - format: date - type: string - x-nullable: true - bootstrapped_timestamp: - api_fieldname: bootstrapped_timestamp - description: The timestamp of the device's most recent bootstrap process. - entity_fieldname: bootstrapped_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - api_fieldname: ca_id - description: The certificate issuer's ID. - entity_fieldname: ca_id - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - api_fieldname: connector_expiration_date - description: The expiration date of the certificate used to connect to LwM2M - server. - entity_fieldname: connector_expiration_date - format: date - type: string - x-nullable: true created_at: api_fieldname: created_at - description: The timestamp of when the device was created in the device - directory. + description: The time the entity was created. entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 5 - type: object - deployed_state: - api_fieldname: deployed_state - description: 'DEPRECATED: The state of the device''s deployment.' - entity_fieldname: deployed_state - enum: - - development - - production + datafile: + api_fieldname: datafile + description: The firmware image file URL. + entity_fieldname: datafile_url + example: http://bucket.com/myimage.elf type: string - deployment: - api_fieldname: deployment - description: 'DEPRECATED: The last deployment used on the device.' - entity_fieldname: deployment - example: '' + datafile_checksum: + api_fieldname: datafile_checksum + description: The checksum (sha256) generated for the datafile. + entity_fieldname: datafile_checksum + example: e979fe432d6a19b0e70a93b33ac29094cd5fe35a8fd5fbedfd383d8d107d6a7e type: string + datafile_size: + api_fieldname: datafile_size + description: The size of the datafile in bytes. + entity_fieldname: datafile_size + format: int64 + type: integer description: api_fieldname: description - description: The description of the device. + description: The description of the object. entity_fieldname: description - example: description + example: a description + format: free text maxLength: 2000 type: string - device_class: - api_fieldname: device_class - description: An ID representing the model and hardware revision of the device. - entity_fieldname: device_class - example: '' - maxLength: 32 + etag: + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' type: string - device_execution_mode: - api_fieldname: device_execution_mode - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ - \ Unspecified execution mode (default if host_gateway invalid or not set).\ - \ The device firmware uses a certificate that is not identified as a developer\ - \ or production certificate.\n - 1 - Development device. The device firmware\ - \ uses a developer certificate to communicate with Device Management.\n\ - \ - 5 - Production device. The device firmware uses a factory-generated\ - \ certificate to communicate with Device Management." - entity_fieldname: device_execution_mode - enum: - - 0 - - 1 - - 5 - example: 0 - type: integer - device_key: - api_fieldname: device_key - description: The fingerprint of the device certificate. - entity_fieldname: device_key - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 + id: + api_fieldname: id + description: The firmware image ID. + entity_fieldname: id + example: 016e652be671000000000001001001e5 + pattern: '[A-Fa-f0-9]{32}' type: string - endpoint_name: - api_fieldname: endpoint_name - description: The endpoint name given to the device. - entity_fieldname: endpoint_name - example: 00000000-0000-0000-0000-000000000000 - readOnly: true + name: + api_fieldname: name + description: The firmware image name. + entity_fieldname: name + format: free text + maxLength: 128 type: string - endpoint_type: - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is - a gateway. - entity_fieldname: endpoint_type - example: '' - maxLength: 64 + object: + api_fieldname: object + description: 'Entity name: always ''firmware-image''.' + entity_fieldname: object + example: firmware-image type: string - enrolment_list_timestamp: - api_fieldname: enrolment_list_timestamp - description: The claim date/time. - entity_fieldname: enrolment_list_timestamp + updated_at: + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - etag: - api_fieldname: etag - description: The entity instance signature. - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: '400' + description: Bad Request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - firmware_checksum: - api_fieldname: firmware_checksum - description: The SHA256 checksum of the current firmware image. - entity_fieldname: firmware_checksum - example: '0000000000000000000000000000000000000000000000000000000000000000' + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - groups: - api_fieldname: groups - description: An array containing an ID of each group this device belongs - to. - entity_fieldname: groups + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. items: - example: '00000000000000000000000000000000' - type: string + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object type: array - host_gateway: - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - entity_fieldname: host_gateway - example: '' + - _key: message + description: A human readable informative explanation + example: Validation error type: string - id: - api_fieldname: id - description: The ID of the device. The device ID is used across all Device - Management APIs. - entity_fieldname: id - example: '00000000000000000000000000000000' + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - issuer_fingerprint: - api_fieldname: issuer_fingerprint - description: SHA256 fingerprint of the certificate used to validate the - signature of the device certificate. - entity_fieldname: issuer_fingerprint - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - x-nullable: true - last_operator_suspended_category: - api_fieldname: last_operator_suspended_category - description: The reference of the block category. - entity_fieldname: last_operator_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - last_operator_suspended_description: - api_fieldname: last_operator_suspended_description - description: The most recent description why the device was suspended or - returned to service. - entity_fieldname: last_operator_suspended_description - example: Suspended for maintenance. - maxLength: 2000 + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Firmware image can't be found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - last_operator_suspended_updated_at: - api_fieldname: last_operator_suspended_updated_at - description: The timestamp of the most recent suspension activity. - entity_fieldname: last_operator_suspended_updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - last_system_suspended_category: - api_fieldname: last_system_suspended_category - description: The reference of the block category. - entity_fieldname: last_system_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - last_system_suspended_description: - api_fieldname: last_system_suspended_description - description: The most recent description of why the device was blocked or - unblocked by the system. - entity_fieldname: last_system_suspended_description - example: A certificate in the device's certificate chain was blacklisted - by the system. - maxLength: 2000 + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - last_system_suspended_updated_at: - api_fieldname: last_system_suspended_updated_at - description: The timestamp of the most recent system block activity. - entity_fieldname: last_system_suspended_updated_at + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: firmware_image + return_type: firmware_image + summary: Get an image. + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - FirmwareImage + - FirmwareImagePage + tags: + - Device update - firmware images +- _key: firmware_manifest + field_renames: + - _key: datafile_url + api_fieldname: datafile + - _key: key_table_url + api_fieldname: key_table + fields: + - _key: created_at + api_fieldname: created_at + description: The time the entity was created. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: datafile_size + api_fieldname: datafile_size + description: The size of the firmware manifest in bytes. + format: int64 + readOnly: true + required: false + type: integer + - _key: datafile_url + api_fieldname: datafile + description: The URL of the ASN.1 DER-encoded firmware manifest binary. + example: http://bucket.com/mymanifest.manifest + format: uri + readOnly: true + required: false + type: string + - _key: delivered_payload_digest + api_fieldname: delivered_payload_digest + description: Digest (SHA256, hex-encoded) of the payload to deliver to the device. + example: c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc + format: hex + readOnly: true + required: false + type: string + - _key: delivered_payload_size + api_fieldname: delivered_payload_size + description: The size in bytes of the payload to deliver to the device. + format: int64 + readOnly: true + required: false + type: integer + - _key: delivered_payload_type + api_fieldname: delivered_payload_type + description: Type of the payload to deliver to the device (full or delta image). + enum: + - full + - delta + enum_reference: firmware_manifest_delivered_payload_type_enum + readOnly: true + required: false + type: string + - _key: delivered_payload_url + api_fieldname: delivered_payload_url + description: The URL of the payload to deliver to the device. + example: http://bucket.com/myimage.elf + format: uri + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + description: The description of the firmware manifest. + example: '' + format: free text + maxLength: 2000 + readOnly: false + required: false + type: string + - _key: device_class + api_fieldname: device_class + description: The device class ID. + example: 42c4d8de-704d-546e-b9d3-1ce1eb316167 + format: uuid + readOnly: true + required: false + type: string + - _key: device_vendor + api_fieldname: device_vendor + description: The device vendor ID. + example: 5d645eae-c231-5a89-9764-2e655cd94fa8 + format: uuid + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: The firmware manifest ID. + example: '12345678901234567890123456789012' + pattern: '[A-Fa-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: key_table_url + api_fieldname: key_table + description: The key table of pre-shared keys for devices. + example: http://example.com/key-table + format: uri + readOnly: true + required: false + type: string + - _key: manifest_schema_version + api_fieldname: manifest_schema_version + description: Version of the manifest schema (1 or 3). + enum: + - '1' + - '3' + enum_reference: firmware_manifest_schema_version_enum + readOnly: true + required: false + type: string + - _key: name + api_fieldname: name + description: The name of the manifest. + example: manifest_name + format: free text + maxLength: 128 + readOnly: false + required: true + type: string + - _key: parsed_raw_manifest + api_fieldname: parsed_raw_manifest + description: 'Raw manifest in JSON format, parsed from ASN.1 DER encoding. + + Fields may change. Backwards compatibility is not guaranteed. + + Recommended for debugging only. + + ' + readOnly: true + required: false + type: object + - _key: precursor_payload_digest + api_fieldname: precursor_payload_digest + description: Digest (SHA256, hex-encoded) of the currently installed payload. + example: 54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f + readOnly: true + required: false + type: string + - _key: timestamp + api_fieldname: timestamp + description: The firmware manifest version as a timestamp. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: update_priority + api_fieldname: update_priority + description: Update priority, passed to the application callback when an update + is performed. Allows the application to make application-specific decisions. + format: int64 + readOnly: true + required: false + type: integer + - _key: updated_at + api_fieldname: updated_at + description: The time the entity was updated. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Device_Update + methods: + - _key: create + description: 'Upload a firmware manifest. The API enforces a maximum manifest + size of 2KB. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \ + + -H ''Authorization: Bearer '' \ + + -H ''Content-Type: multipart/form-data'' \ + + -F ''datafile=@myimage.bin;type=application/octet-stream'' \ + + -F ''description=bla bla'' \ + + -F ''key_table=@myKeyTable.proto;type='' \ + + -F ''name=My Manifest'' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - manifest_schema_version + - datafile_size + - delivered_payload_url + - delivered_payload_size + - delivered_payload_digest + - delivered_payload_type + - precursor_payload_digest + - device_class + - device_vendor + - update_priority + - id + - timestamp + - parsed_raw_manifest + - datafile_url + - key_table_url + field_renames: + - _key: datafile_url + api_fieldname: datafile + - _key: key_table_url + api_fieldname: key_table + fields: + - _key: description + api_fieldname: description + description: The description of the firmware manifest. + entity_fieldname: description + example: '' + format: free text + in: stream + maxLength: 2000 + parameter_fieldname: description + required: false + type: string + - _key: firmware_manifest_file + api_fieldname: datafile + description: The manifest file to create. The API gateway enforces the account-specific + file size. File name must not exceed 100 characters. + entity_fieldname: firmware_manifest_file + external_param: true + in: stream + name: datafile + parameter_fieldname: datafile + required: true + type: file + - _key: key_table_file + api_fieldname: key_table + description: The key table of pre-shared keys for devices. The table is generated + by the manifest tool. File name must not exceed 100 characters. + entity_fieldname: key_table_file + external_param: true + in: stream + name: key_table + parameter_fieldname: key_table + required: false + type: file + - _key: name + api_fieldname: name + description: The name of the manifest. + entity_fieldname: name + example: manifest_name + format: free text + in: stream + maxLength: 128 + parameter_fieldname: name + required: true + type: string + group_id: Device_Update + method: post + mode: create + notes: This is not a standard create method as it uploads a file (or files) which + creates an entity which contains URIs to the uploaded file(s). + operation_id: Firmware_Manifest_create + pagination: false + parameter_map: + datafile: firmware_manifest_file + key_table: key_table_file + manifest_id: id + path: /v3/firmware-manifests/ + request_body: file + request_content_type: multipart/form-data + responses: + - _key: '201' + description: Created. + schema: + - _key: foreign_key + entity: firmware_manifest + group: Device_Update + - _key: properties + created_at: + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - lifecycle_status: - api_fieldname: lifecycle_status - description: The lifecycle status of the device. - entity_fieldname: lifecycle_status + datafile: + api_fieldname: datafile + description: The URL of the ASN.1 DER-encoded firmware manifest binary. + entity_fieldname: datafile_url + example: http://bucket.com/mymanifest.manifest + format: uri + type: string + datafile_size: + api_fieldname: datafile_size + description: The size of the firmware manifest in bytes. + entity_fieldname: datafile_size + format: int64 + type: integer + delivered_payload_digest: + api_fieldname: delivered_payload_digest + description: Digest (SHA256, hex-encoded) of the payload to deliver to the + device. + entity_fieldname: delivered_payload_digest + example: c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc + format: hex + type: string + delivered_payload_size: + api_fieldname: delivered_payload_size + description: The size in bytes of the payload to deliver to the device. + entity_fieldname: delivered_payload_size + format: int64 + type: integer + delivered_payload_type: + api_fieldname: delivered_payload_type + description: Type of the payload to deliver to the device (full or delta + image). + entity_fieldname: delivered_payload_type enum: - - enabled - - blocked - example: enabled + - full + - delta type: string - manifest: - api_fieldname: manifest - description: 'DEPRECATED: The URL for the current device manifest.' - entity_fieldname: manifest + delivered_payload_url: + api_fieldname: delivered_payload_url + description: The URL of the payload to deliver to the device. + entity_fieldname: delivered_payload_url + example: http://bucket.com/myimage.elf + format: uri + type: string + description: + api_fieldname: description + description: The description of the firmware manifest. + entity_fieldname: description example: '' + format: free text + maxLength: 2000 type: string - manifest_timestamp: - api_fieldname: manifest_timestamp - description: The timestamp of the current manifest version. - entity_fieldname: manifest_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time + device_class: + api_fieldname: device_class + description: The device class ID. + entity_fieldname: device_class + example: 42c4d8de-704d-546e-b9d3-1ce1eb316167 + format: uuid type: string - mechanism: - api_fieldname: mechanism - description: The ID of the channel used to communicate with the device. - entity_fieldname: mechanism - enum: - - connector - - direct + device_vendor: + api_fieldname: device_vendor + description: The device vendor ID. + entity_fieldname: device_vendor + example: 5d645eae-c231-5a89-9764-2e655cd94fa8 + format: uuid type: string - mechanism_url: - api_fieldname: mechanism_url - description: The address of the connector to use. - entity_fieldname: mechanism_url - example: '' + etag: + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' + type: string + id: + api_fieldname: id + description: The firmware manifest ID. + entity_fieldname: id + example: '12345678901234567890123456789012' + pattern: '[A-Fa-f0-9]{32}' + type: string + key_table: + api_fieldname: key_table + description: The key table of pre-shared keys for devices. + entity_fieldname: key_table_url + example: http://example.com/key-table + format: uri + type: string + manifest_schema_version: + api_fieldname: manifest_schema_version + description: Version of the manifest schema (1 or 3). + entity_fieldname: manifest_schema_version + enum: + - '1' + - '3' type: string name: api_fieldname: name - description: The name of the device. + description: The name of the manifest. entity_fieldname: name - example: 00000000-0000-0000-0000-000000000000 + example: manifest_name + format: free text maxLength: 128 type: string object: api_fieldname: object - description: The API resource entity. + description: 'Entity name: always ''firmware-manifest''.' entity_fieldname: object - example: device + example: firmware-manifest type: string - operator_suspended: - api_fieldname: operator_suspended - description: Is the device suspended by the operator? - entity_fieldname: operator_suspended - type: boolean - serial_number: - api_fieldname: serial_number - description: The serial number of the device. - entity_fieldname: serial_number - example: 00000000-0000-0000-0000-000000000000 + parsed_raw_manifest: + api_fieldname: parsed_raw_manifest + description: 'Raw manifest in JSON format, parsed from ASN.1 DER encoding. + + Fields may change. Backwards compatibility is not guaranteed. + + Recommended for debugging only. + + ' + entity_fieldname: parsed_raw_manifest + type: object + precursor_payload_digest: + api_fieldname: precursor_payload_digest + description: Digest (SHA256, hex-encoded) of the currently installed payload. + entity_fieldname: precursor_payload_digest + example: 54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f type: string - state: - api_fieldname: state - description: The current state of the device. - entity_fieldname: state - enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + timestamp: + api_fieldname: timestamp + description: The firmware manifest version as a timestamp. + entity_fieldname: timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time type: string - system_suspended: - api_fieldname: system_suspended - description: Is the device suspended by the system? - entity_fieldname: system_suspended - type: boolean + update_priority: + api_fieldname: update_priority + description: Update priority, passed to the application callback when an + update is performed. Allows the application to make application-specific + decisions. + entity_fieldname: update_priority + format: int64 + type: integer updated_at: api_fieldname: updated_at - description: The time the object was updated. + description: The time the entity was updated. entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - vendor_id: - api_fieldname: vendor_id - description: The device vendor ID. - entity_fieldname: vendor_id - example: 00000000-0000-0000-0000-000000000000 - type: string - _key: '400' - description: 'Validation error: The data used to create the device did not validate.' + description: 'Validation error. The data used to create the firmware manifest + did not validate and/or the manifest uploaded exceeded 2 KB in size. + + ' + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '403' - description: Account limit reached. Could not create device. - - _key: '409' - description: Unique-constrained fields are used by other resources. + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true - type: device - return_type: device - summary: Create a device. + type: firmware_manifest + return_type: firmware_manifest + summary: Upload a manifest + unaggregated: true x_deprecation: null x_filter: {} - _key: delete - description: Delete device. Only available for devices with a developer certificate. - Attempting to delete a device with a production certicate returns a 400 response. + description: 'Delete a firmware manifest. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/11234567f9012ab56780120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag - type - filter - field_renames: [] + field_renames: + - _key: datafile_url + api_fieldname: datafile + - _key: key_table_url + api_fieldname: key_table fields: - _key: id - api_fieldname: id - description: The ID of the device. + api_fieldname: manifest_id + description: The firmware manifest ID. entity_fieldname: id external_param: false in: path - name: id - parameter_fieldname: id + name: manifest_id + parameter_fieldname: manifest_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - group_id: Devices + group_id: Device_Update method: delete mode: delete - operation_id: Device_destroy + operation_id: Firmware_Manifest_destroy pagination: false - path: /v3/devices/{id}/ + parameter_map: + manifest_id: id + path: /v3/firmware-manifests/{manifest_id} request_body: json request_content_type: application/json responses: - _key: '204' - description: Device deleted. + description: Firmware manifest deleted. - _key: '400' - description: Bad request. + description: Bad Request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: Unable to delete device because it can't be found. - return_info: - custom: false - self: true - type: device - return_type: device - summary: Delete a device. - x_deprecation: null - x_filter: {} - - _key: list - description: 'List all devices. - - - **Example:** - - Following example filters devices according to state field and returns only - devices in ''registered'' state: - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices?filter=state%3Dregistered - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - data - - has_more - - total_count - - lifecycle_status__eq - - lifecycle_status__neq - - lifecycle_status__in - - lifecycle_status__nin - - operator_suspended__eq - - operator_suspended__neq - - last_operator_suspended_category__eq - - last_operator_suspended_category__neq - - last_operator_suspended_category__in - - last_operator_suspended_category__nin - - last_operator_suspended_updated_at__in - - last_operator_suspended_updated_at__nin - - last_operator_suspended_updated_at__lte - - last_operator_suspended_updated_at__gte - - system_suspended__eq - - system_suspended__neq - - last_system_suspended_category__eq - - last_system_suspended_category__neq - - last_system_suspended_category__in - - last_system_suspended_category__nin - - last_system_suspended_updated_at__in - - last_system_suspended_updated_at__nin - - last_system_suspended_updated_at__lte - - last_system_suspended_updated_at__gte - - account_id__eq - - account_id__neq - - account_id__in - - account_id__nin - - auto_update__eq - - auto_update__neq - - bootstrap_expiration_date__in - - bootstrap_expiration_date__nin - - bootstrap_expiration_date__lte - - bootstrap_expiration_date__gte - - bootstrapped_timestamp__in - - bootstrapped_timestamp__nin - - bootstrapped_timestamp__lte - - bootstrapped_timestamp__gte - - ca_id__eq - - ca_id__neq - - ca_id__in - - ca_id__nin - - connector_expiration_date__in - - connector_expiration_date__nin - - connector_expiration_date__lte - - connector_expiration_date__gte + description: Firmware manifest not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: firmware_manifest + return_type: firmware_manifest + summary: Delete a manifest + x_deprecation: null + x_filter: {} + - _key: list + description: 'List all firmware manifests. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests \ + + -H ''Authorization: Bearer '' + + ``` + + ' + drop_fields: + - object + - etag + - type + - filter + - data + - has_more + - total_count - created_at__in - created_at__nin - created_at__lte - created_at__gte - - deployed_state__eq - - deployed_state__neq - - deployed_state__in - - deployed_state__nin - - deployment__eq - - deployment__neq - - deployment__in - - deployment__nin + - datafile__eq + - datafile__neq + - datafile__in + - datafile__nin + - datafile_size__eq + - datafile_size__neq + - datafile_size__in + - datafile_size__nin - description__eq - description__neq - description__in @@ -23090,81 +35350,33 @@ entities: - device_class__neq - device_class__in - device_class__nin - - device_execution_mode__eq - - device_execution_mode__neq - - device_execution_mode__in - - device_execution_mode__nin - - device_key__eq - - device_key__neq - - device_key__in - - device_key__nin - - endpoint_name__eq - - endpoint_name__neq - - endpoint_name__in - - endpoint_name__nin - - endpoint_type__eq - - endpoint_type__neq - - endpoint_type__in - - endpoint_type__nin - - enrolment_list_timestamp__in - - enrolment_list_timestamp__nin - - enrolment_list_timestamp__lte - - enrolment_list_timestamp__gte - - firmware_checksum__eq - - firmware_checksum__neq - - firmware_checksum__in - - firmware_checksum__nin - - host_gateway__eq - - host_gateway__neq - - host_gateway__in - - host_gateway__nin - id__eq - id__neq - id__in - id__nin - - manifest__eq - - manifest__neq - - manifest__in - - manifest__nin - - manifest_timestamp__in - - manifest_timestamp__nin - - manifest_timestamp__lte - - manifest_timestamp__gte - - mechanism__eq - - mechanism__neq - - mechanism__in - - mechanism__nin - - mechanism_url__eq - - mechanism_url__neq - - mechanism_url__in - - mechanism_url__nin - name__eq - name__neq - name__in - name__nin - - serial_number__eq - - serial_number__neq - - serial_number__in - - serial_number__nin - - state__eq - - state__neq - - state__in - - state__nin + - timestamp__in + - timestamp__nin + - timestamp__lte + - timestamp__gte - updated_at__in - updated_at__nin - updated_at__lte - updated_at__gte - - vendor_id__eq - - vendor_id__neq - - vendor_id__in - - vendor_id__nin - field_renames: [] + field_renames: + - _key: datafile_url + api_fieldname: datafile + - _key: key_table_url + api_fieldname: key_table fields: - _key: after api_fieldname: after description: The ID of the item after which to retrieve the next page. entity_fieldname: after - example: '01631667477600000000000100100374' + example: null external_param: true in: query name: after @@ -23173,8 +35385,8 @@ entities: type: string - _key: include api_fieldname: include - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' + description: 'A comma-separated list of data fields to return. Currently supported: + total_count.' entity_fieldname: include external_param: true in: query @@ -23184,11 +35396,12 @@ entities: type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + description: How many objects to retrieve in the page. The minimum limit is + 2 and the maximum is 1000. Limit values outside of this range are set to the + closest limit. entity_fieldname: limit - example: 50 external_param: true + format: int32 in: query maximum: 1000 minimum: 2 @@ -23198,9 +35411,13 @@ entities: type: integer - _key: order api_fieldname: order - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + description: ASC or DESC. entity_fieldname: order - example: DESC + enum: + - ASC + - DESC + enum_reference: firmware_manifest_order_enum + example: ASC external_param: true in: query name: order @@ -23208,15 +35425,17 @@ entities: required: false type: string foreign_key: - entity: device - group: Devices + entity: firmware_manifest + group: Device_Update foreign_key_priority: self - group_id: Devices + group_id: Device_Update method: get mode: list - operation_id: Device_list + operation_id: Firmware_Manifest_list pagination: true - path: /v3/devices/ + parameter_map: + manifest_id: id + path: /v3/firmware-manifests/ request_body: json request_content_type: application/json responses: @@ -23224,347 +35443,335 @@ entities: description: Request successful. schema: foreign_key: - entity: device - group: Devices + entity: firmware_manifest + group: Device_Update pagination: true properties: - _key: after api_fieldname: after - description: An offset token for current page. entity_fieldname: after - example: '01631667477600000000000100100374' + example: null type: string - _key: data api_fieldname: data entity_fieldname: data items: - _key: foreign_key - entity: device - group: Devices + entity: firmware_manifest + group: Device_Update - _key: properties - account_id: - description: The ID of the associated account. - example: '00000000000000000000000000000000' - type: string - auto_update: - description: 'DEPRECATED: Mark this device for automatic firmware update.' - type: boolean - bootstrap_expiration_date: - description: The expiration date of the certificate used to connect - to bootstrap server. - format: date - type: string - x-nullable: true - bootstrapped_timestamp: - description: The timestamp of the device's most recent bootstrap process. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - description: The expiration date of the certificate used to connect - to LwM2M server. - format: date - type: string - x-nullable: true created_at: - description: The timestamp of when the device was created in the device - directory. + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to five custom key-value attributes. Note that keys - cannot begin with a number. Both keys and values are limited to 128 - characters. Updating this field replaces existing contents. - example: - key: value - maxProperties: 5 - type: object - deployed_state: - description: 'DEPRECATED: The state of the device''s deployment.' + datafile: + description: The URL of the ASN.1 DER-encoded firmware manifest binary. + example: http://bucket.com/mymanifest.manifest + format: uri + type: string + datafile_size: + description: The size of the firmware manifest in bytes. + format: int64 + type: integer + delivered_payload_digest: + description: Digest (SHA256, hex-encoded) of the payload to deliver + to the device. + example: c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc + format: hex + type: string + delivered_payload_size: + description: The size in bytes of the payload to deliver to the device. + format: int64 + type: integer + delivered_payload_type: + description: Type of the payload to deliver to the device (full or delta + image). enum: - - development - - production + - full + - delta type: string - deployment: - description: 'DEPRECATED: The last deployment used on the device.' - example: '' + delivered_payload_url: + description: The URL of the payload to deliver to the device. + example: http://bucket.com/myimage.elf + format: uri type: string description: - description: The description of the device. - example: description + description: The description of the firmware manifest. + example: '' + format: free text maxLength: 2000 type: string device_class: - description: An ID representing the model and hardware revision of the - device. - example: '' - maxLength: 32 - type: string - device_execution_mode: - default: 0 - description: "The execution mode from the certificate of the device.\ - \ Defaults to inheriting from host_gateway device.\nPermitted values:\n\ - \ - 0 - Unspecified execution mode (default if host_gateway invalid\ - \ or not set). The device firmware uses a certificate that is not\ - \ identified as a developer or production certificate.\n - 1 - Development\ - \ device. The device firmware uses a developer certificate to communicate\ - \ with Device Management.\n - 5 - Production device. The device firmware\ - \ uses a factory-generated certificate to communicate with Device\ - \ Management." - enum: - - 0 - - 1 - - 5 - example: 0 - type: integer - device_key: - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - type: string - endpoint_type: - description: The endpoint type of the device. For example, the device - is a gateway. - example: '' - maxLength: 64 + description: The device class ID. + example: 42c4d8de-704d-546e-b9d3-1ce1eb316167 + format: uuid type: string - enrolment_list_timestamp: - description: The claim date/time. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + device_vendor: + description: The device vendor ID. + example: 5d645eae-c231-5a89-9764-2e655cd94fa8 + format: uuid type: string etag: - description: The entity instance signature. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - firmware_checksum: - description: The SHA256 checksum of the current firmware image. - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - groups: - description: An array containing an ID of each group this device belongs - to. - items: - example: '00000000000000000000000000000000' - type: string - type: array - host_gateway: - description: The ID of the host gateway, if appropriate. - example: '' + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' type: string id: - description: The ID of the device. The device ID is used across all - Device Management APIs. - example: '00000000000000000000000000000000' - type: string - issuer_fingerprint: - description: SHA256 fingerprint of the certificate used to validate - the signature of the device certificate. - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' + description: The firmware manifest ID. + example: '12345678901234567890123456789012' + pattern: '[A-Fa-f0-9]{32}' type: string - x-nullable: true - last_operator_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' + key_table: + description: The key table of pre-shared keys for devices. + example: http://example.com/key-table + format: uri type: string - last_operator_suspended_description: - description: The most recent description why the device was suspended - or returned to service. - example: Suspended for maintenance. - maxLength: 2000 + manifest_schema_version: + description: Version of the manifest schema (1 or 3). + enum: + - '1' + - '3' type: string - last_operator_suspended_updated_at: - description: The timestamp of the most recent suspension activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + name: + description: The name of the manifest. + example: manifest_name + format: free text + maxLength: 128 type: string - last_system_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' + object: + description: 'Entity name: always ''firmware-manifest''.' + example: firmware-manifest type: string - last_system_suspended_description: - description: The most recent description of why the device was blocked - or unblocked by the system. - example: A certificate in the device's certificate chain was blacklisted - by the system. - maxLength: 2000 + parsed_raw_manifest: + description: 'Raw manifest in JSON format, parsed from ASN.1 DER encoding. + + Fields may change. Backwards compatibility is not guaranteed. + + Recommended for debugging only. + + ' + type: object + precursor_payload_digest: + description: Digest (SHA256, hex-encoded) of the currently installed + payload. + example: 54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f type: string - last_system_suspended_updated_at: - description: The timestamp of the most recent system block activity. + timestamp: + description: The firmware manifest version as a timestamp. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - lifecycle_status: - description: The lifecycle status of the device. - enum: - - enabled - - blocked - example: enabled - type: string - manifest: - description: 'DEPRECATED: The URL for the current device manifest.' - example: '' - type: string - manifest_timestamp: - description: The timestamp of the current manifest version. + update_priority: + description: Update priority, passed to the application callback when + an update is performed. Allows the application to make application-specific + decisions. + format: int64 + type: integer + updated_at: + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - mechanism: - description: The ID of the channel used to communicate with the device. - enum: - - connector - - direct - type: string - mechanism_url: - description: The address of the connector to use. - example: '' - type: string - name: - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + type: array + - _key: has_more + api_fieldname: has_more + entity_fieldname: has_more + type: boolean + - _key: limit + api_fieldname: limit + entity_fieldname: limit + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always ''list''.' + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + example: ASC + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + format: int32 + type: integer + - _key: '400' + description: Bad Request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - object: - description: The API resource entity. - example: device + - _key: name + description: Name of the field which caused the error. type: string - operator_suspended: - description: Is the device suspended by the operator? - type: boolean - serial_number: - description: The serial number of the device. - example: 00000000-0000-0000-0000-000000000000 + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - state: - description: The current state of the device. - enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - _key: name + description: Name of the field which caused the error. type: string - system_suspended: - description: Is the device suspended by the system? - type: boolean - updated_at: - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Unable to find content. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - vendor_id: - description: The device vendor ID. - example: 00000000-0000-0000-0000-000000000000 + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message + type: object type: array - - _key: has_more - api_fieldname: has_more - description: Are there more results available. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit - is 2 and the maximum is 1000. Limit values outside of this range are set - to the closest limit. - entity_fieldname: limit - example: 50 - maximum: 1000 - minimum: 2 - type: integer + - _key: message + description: A human readable informative explanation + example: Validation error + type: string - _key: object - api_fieldname: object - description: The type of this API object is a "list". - entity_fieldname: object - example: list + description: Entity name, always `error`. + enum: + - error type: string - - _key: order - api_fieldname: order - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. - entity_fieldname: order - example: DESC + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - example: 1 - format: integer - type: integer - - _key: '400' - description: Bad request. - - _key: '401' - description: Not authenticated. - - _key: '404' - description: Unable to find page. + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true - type: device - return_type: paginated_response(device) - summary: List all devices. + type: firmware_manifest + return_type: paginated_response(firmware_manifest) + summary: List all firmware manifests. x_deprecation: null x_filter: - account_id: - - eq - - neq - - in - - nin - auto_update: - - eq - - neq - bootstrap_expiration_date: - - in - - nin - - lte - - gte - bootstrapped_timestamp: - - in - - nin - - lte - - gte - ca_id: - - eq - - neq - - in - - nin - connector_expiration_date: - - in - - nin - - lte - - gte created_at: - in - nin - lte - gte - deployed_state: + datafile_size: - eq - neq - in - nin - deployment: + datafile_url: - eq - neq - in @@ -23579,585 +35786,1252 @@ entities: - neq - in - nin - device_execution_mode: - - eq - - neq - - in - - nin - device_key: - - eq - - neq - - in - - nin - endpoint_name: - - eq - - neq - - in - - nin - endpoint_type: - - eq - - neq - - in - - nin - enrolment_list_timestamp: - - in - - nin - - lte - - gte - firmware_checksum: - - eq - - neq - - in - - nin - host_gateway: - - eq - - neq - - in - - nin id: - eq - neq - in - nin - last_operator_suspended_category: - - eq - - neq - - in - - nin - last_operator_suspended_updated_at: - - in - - nin - - lte - - gte - last_system_suspended_category: - - eq - - neq - - in - - nin - last_system_suspended_updated_at: - - in - - nin - - lte - - gte - lifecycle_status: - - eq - - neq - - in - - nin - manifest: + name: - eq - neq - in - nin - manifest_timestamp: + timestamp: - in - nin - lte - gte - mechanism: - - eq - - neq - - in - - nin - mechanism_url: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - operator_suspended: - - eq - - neq - serial_number: - - eq - - neq - - in - - nin - state: - - eq - - neq - - in - - nin - system_suspended: - - eq - - neq updated_at: - in - nin - lte - gte - vendor_id: - - eq - - neq - - in - - nin - _key: read - description: 'Retrieve information about a specific device. + description: 'Retrieve a firmware manifest. +
- **Example:** + **Usage example:** - Following example must be updated with the device''s ID to the URL. The id is - from of "01667c6e992c00000000000100100370" + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/1123467f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/devices/ \ + ' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - manifest_schema_version + - datafile_size + - delivered_payload_url + - delivered_payload_size + - delivered_payload_digest + - delivered_payload_type + - precursor_payload_digest + - description + - device_class + - device_vendor + - update_priority + - name + - timestamp + - parsed_raw_manifest + - datafile_url + - key_table_url + field_renames: + - _key: datafile_url + api_fieldname: datafile + - _key: key_table_url + api_fieldname: key_table + fields: + - _key: id + api_fieldname: id + description: The firmware manifest ID. + entity_fieldname: id + example: '12345678901234567890123456789012' + in: path + parameter_fieldname: manifest_id + pattern: '[A-Fa-f0-9]{32}' + required: true + type: string + group_id: Device_Update + method: get + mode: read + operation_id: Firmware_Manifest_retrieve + pagination: false + parameter_map: + manifest_id: id + path: /v3/firmware-manifests/{manifest_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Retrieved result successfully. + schema: + - _key: foreign_key + entity: firmware_manifest + group: Device_Update + - _key: properties + created_at: + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + datafile: + api_fieldname: datafile + description: The URL of the ASN.1 DER-encoded firmware manifest binary. + entity_fieldname: datafile_url + example: http://bucket.com/mymanifest.manifest + format: uri + type: string + datafile_size: + api_fieldname: datafile_size + description: The size of the firmware manifest in bytes. + entity_fieldname: datafile_size + format: int64 + type: integer + delivered_payload_digest: + api_fieldname: delivered_payload_digest + description: Digest (SHA256, hex-encoded) of the payload to deliver to the + device. + entity_fieldname: delivered_payload_digest + example: c520fc771c0482ad39e983d27cf725a7c724fe58c616129a34a420d1941068bc + format: hex + type: string + delivered_payload_size: + api_fieldname: delivered_payload_size + description: The size in bytes of the payload to deliver to the device. + entity_fieldname: delivered_payload_size + format: int64 + type: integer + delivered_payload_type: + api_fieldname: delivered_payload_type + description: Type of the payload to deliver to the device (full or delta + image). + entity_fieldname: delivered_payload_type + enum: + - full + - delta + type: string + delivered_payload_url: + api_fieldname: delivered_payload_url + description: The URL of the payload to deliver to the device. + entity_fieldname: delivered_payload_url + example: http://bucket.com/myimage.elf + format: uri + type: string + description: + api_fieldname: description + description: The description of the firmware manifest. + entity_fieldname: description + example: '' + format: free text + maxLength: 2000 + type: string + device_class: + api_fieldname: device_class + description: The device class ID. + entity_fieldname: device_class + example: 42c4d8de-704d-546e-b9d3-1ce1eb316167 + format: uuid + type: string + device_vendor: + api_fieldname: device_vendor + description: The device vendor ID. + entity_fieldname: device_vendor + example: 5d645eae-c231-5a89-9764-2e655cd94fa8 + format: uuid + type: string + etag: + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '2017-05-22T12:37:58.753425Z' + type: string + id: + api_fieldname: id + description: The firmware manifest ID. + entity_fieldname: id + example: '12345678901234567890123456789012' + pattern: '[A-Fa-f0-9]{32}' + type: string + key_table: + api_fieldname: key_table + description: The key table of pre-shared keys for devices. + entity_fieldname: key_table_url + example: http://example.com/key-table + format: uri + type: string + manifest_schema_version: + api_fieldname: manifest_schema_version + description: Version of the manifest schema (1 or 3). + entity_fieldname: manifest_schema_version + enum: + - '1' + - '3' + type: string + name: + api_fieldname: name + description: The name of the manifest. + entity_fieldname: name + example: manifest_name + format: free text + maxLength: 128 + type: string + object: + api_fieldname: object + description: 'Entity name: always ''firmware-manifest''.' + entity_fieldname: object + example: firmware-manifest + type: string + parsed_raw_manifest: + api_fieldname: parsed_raw_manifest + description: 'Raw manifest in JSON format, parsed from ASN.1 DER encoding. - -H ''Authorization: Bearer '' + Fields may change. Backwards compatibility is not guaranteed. + + Recommended for debugging only. + + ' + entity_fieldname: parsed_raw_manifest + type: object + precursor_payload_digest: + api_fieldname: precursor_payload_digest + description: Digest (SHA256, hex-encoded) of the currently installed payload. + entity_fieldname: precursor_payload_digest + example: 54d640fcd687c9b13420b9be66a265494899002aad1b7370cfb3dbfd7fbec42f + type: string + timestamp: + api_fieldname: timestamp + description: The firmware manifest version as a timestamp. + entity_fieldname: timestamp + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + update_priority: + api_fieldname: update_priority + description: Update priority, passed to the application callback when an + update is performed. Allows the application to make application-specific + decisions. + entity_fieldname: update_priority + format: int64 + type: integer + updated_at: + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + - _key: '400' + description: Bad request. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Firmware manifest can't be found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: firmware_manifest + return_type: firmware_manifest + summary: Get a manifest + x_deprecation: null + x_filter: {} + primary_key_field: id + swagger_models: + - FirmwareManifest + - FirmwareManifestPage + tags: + - Device update - firmware manifests +- _key: identity_provider + field_renames: + - _key: identity_provider_type + api_fieldname: type + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + readOnly: true + required: false + type: string + - _key: description + api_fieldname: description + description: Description for the identity provider. + maxLength: 500 + readOnly: false + required: false + type: string + - _key: id + api_fieldname: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: identity_provider_type + api_fieldname: type + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + readOnly: false + required: true + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity provider. + readOnly: true + required: false + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + maxLength: 100 + readOnly: false + required: true + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity provider's + API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID tokens. + PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results in + the transmission of clear-text credentials, the client must use the POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + readOnly: false + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this empty + to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in PEM + format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + readOnly: false + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Accounts + methods: + - _key: create + description: 'Create a new identity provider. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - device_execution_mode - - groups - - issuer_fingerprint - - operator_suspended - - last_operator_suspended_category - - last_operator_suspended_description - - last_operator_suspended_updated_at - - system_suspended - - last_system_suspended_category - - last_system_suspended_description - - last_system_suspended_updated_at - - lifecycle_status - - account_id - - auto_update - - bootstrap_expiration_date - - bootstrapped_timestamp - - ca_id - - connector_expiration_date + - id - created_at - - custom_attributes - - deployed_state - - deployment - - description - - device_class - - device_key - - endpoint_name - - endpoint_type - - firmware_checksum - - host_gateway - - manifest - - manifest_timestamp - - mechanism - - mechanism_url - - name - - serial_number - - state - updated_at - - vendor_id - - enrolment_list_timestamp - field_renames: [] + - account_id + - is_default + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: - - _key: id - api_fieldname: id - description: The ID of the device. The device ID is used across all Device Management - APIs. - entity_fieldname: id - example: '00000000000000000000000000000000' - in: path - parameter_fieldname: id + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string + - _key: discovery + allowEmptyValue: true + api_fieldname: discovery + description: 'Indicates that the OpenID Connect endpoints and keys should be + set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + entity_fieldname: discovery + external_param: true + in: query + name: discovery + parameter_fieldname: discovery + required: false + type: boolean + - _key: identity_provider_type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: &id004 + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type required: true type: string - group_id: Devices - method: get - mode: read - operation_id: Device_retrieve - pagination: false - path: /v3/devices/{id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Retrieved result successfully. - schema: - - _key: foreign_key - entity: device - group: Devices - - _key: properties - account_id: - api_fieldname: account_id - description: The ID of the associated account. - entity_fieldname: account_id - example: '00000000000000000000000000000000' - type: string - auto_update: - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - entity_fieldname: auto_update - type: boolean - bootstrap_expiration_date: - api_fieldname: bootstrap_expiration_date - description: The expiration date of the certificate used to connect to bootstrap - server. - entity_fieldname: bootstrap_expiration_date - format: date + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address type: string x-nullable: true - bootstrapped_timestamp: - api_fieldname: bootstrapped_timestamp - description: The timestamp of the device's most recent bootstrap process. - entity_fieldname: bootstrapped_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - api_fieldname: ca_id - description: The certificate issuer's ID. - entity_fieldname: ca_id - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - api_fieldname: connector_expiration_date - description: The expiration date of the certificate used to connect to LwM2M - server. - entity_fieldname: connector_expiration_date - format: date + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified type: string x-nullable: true - created_at: - api_fieldname: created_at - description: The timestamp of when the device was created in the device - directory. - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 5 - type: object - deployed_state: - api_fieldname: deployed_state - description: 'DEPRECATED: The state of the device''s deployment.' - entity_fieldname: deployed_state - enum: - - development - - production - type: string - deployment: - api_fieldname: deployment - description: 'DEPRECATED: The last deployment used on the device.' - entity_fieldname: deployment - example: '' - type: string - description: - api_fieldname: description - description: The description of the device. - entity_fieldname: description - example: description - maxLength: 2000 - type: string - device_class: - api_fieldname: device_class - description: An ID representing the model and hardware revision of the device. - entity_fieldname: device_class - example: '' - maxLength: 32 - type: string - device_execution_mode: - api_fieldname: device_execution_mode - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ - \ Unspecified execution mode (default if host_gateway invalid or not set).\ - \ The device firmware uses a certificate that is not identified as a developer\ - \ or production certificate.\n - 1 - Development device. The device firmware\ - \ uses a developer certificate to communicate with Device Management.\n\ - \ - 5 - Production device. The device firmware uses a factory-generated\ - \ certificate to communicate with Device Management." - entity_fieldname: device_execution_mode - enum: - - 0 - - 1 - - 5 - example: 0 - type: integer - device_key: - api_fieldname: device_key - description: The fingerprint of the device certificate. - entity_fieldname: device_key - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - api_fieldname: endpoint_name - description: The endpoint name given to the device. - entity_fieldname: endpoint_name - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - type: string - endpoint_type: - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is - a gateway. - entity_fieldname: endpoint_type - example: '' - maxLength: 64 - type: string - enrolment_list_timestamp: - api_fieldname: enrolment_list_timestamp - description: The claim date/time. - entity_fieldname: enrolment_list_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - api_fieldname: etag - description: The entity instance signature. - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - firmware_checksum: - api_fieldname: firmware_checksum - description: The SHA256 checksum of the current firmware image. - entity_fieldname: firmware_checksum - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - groups: - api_fieldname: groups - description: An array containing an ID of each group this device belongs - to. - entity_fieldname: groups - items: - example: '00000000000000000000000000000000' - type: string - type: array - host_gateway: - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - entity_fieldname: host_gateway - example: '' - type: string - id: - api_fieldname: id - description: The ID of the device. The device ID is used across all Device - Management APIs. - entity_fieldname: id - example: '00000000000000000000000000000000' - type: string - issuer_fingerprint: - api_fieldname: issuer_fingerprint - description: SHA256 fingerprint of the certificate used to validate the - signature of the device certificate. - entity_fieldname: issuer_fingerprint - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name type: string x-nullable: true - last_operator_suspended_category: - api_fieldname: last_operator_suspended_category - description: The reference of the block category. - entity_fieldname: last_operator_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name type: string - last_operator_suspended_description: - api_fieldname: last_operator_suspended_description - description: The most recent description why the device was suspended or - returned to service. - entity_fieldname: last_operator_suspended_description - example: Suspended for maintenance. - maxLength: 2000 - type: string - last_operator_suspended_updated_at: - api_fieldname: last_operator_suspended_updated_at - description: The timestamp of the most recent suspension activity. - entity_fieldname: last_operator_suspended_updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name type: string - last_system_suspended_category: - api_fieldname: last_system_suspended_category - description: The reference of the block category. - entity_fieldname: last_system_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number type: string - last_system_suspended_description: - api_fieldname: last_system_suspended_description - description: The most recent description of why the device was blocked or - unblocked by the system. - entity_fieldname: last_system_suspended_description - example: A certificate in the device's certificate chain was blacklisted - by the system. - maxLength: 2000 + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub type: string - last_system_suspended_updated_at: - api_fieldname: last_system_suspended_updated_at - description: The timestamp of the most recent system block activity. - entity_fieldname: last_system_suspended_updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at type: string - lifecycle_status: - api_fieldname: lifecycle_status - description: The lifecycle status of the device. - entity_fieldname: lifecycle_status - enum: - - enabled - - blocked - example: enabled + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX type: string - manifest: - api_fieldname: manifest - description: 'DEPRECATED: The URL for the current device manifest.' - entity_fieldname: manifest - example: '' + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID + tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the POST + mode. + enum: &id005 + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in + PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: &id006 + - ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: post + mode: create + operation_id: createIdentityProvider + pagination: false + parameter_map: + identity_provider_id: id + path: /v3/identity-providers + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: New entity created. + headers: + - _key: Content-Location + description: /v3/identity-providers/{identity_provider_id} + type: string + - _key: Location + description: /v3/identity-providers/{identity_provider_id} + type: string + schema: + foreign_key: + entity: subtenant_identity_provider + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - manifest_timestamp: - api_fieldname: manifest_timestamp - description: The timestamp of the current manifest version. - entity_fieldname: manifest_timestamp - example: '2017-05-22T12:37:55.576563Z' + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' format: date-time type: string - mechanism: - api_fieldname: mechanism - description: The ID of the channel used to communicate with the device. - entity_fieldname: mechanism - enum: - - connector - - direct + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 type: string - mechanism_url: - api_fieldname: mechanism_url - description: The address of the connector to use. - entity_fieldname: mechanism_url - example: '' + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' type: string - name: + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name api_fieldname: name - description: The name of the device. + description: Name of the identity provider. entity_fieldname: name - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + maxLength: 100 type: string - object: + - _key: object api_fieldname: object - description: The API resource entity. + description: 'Entity name: always ''identity-provider''' entity_fieldname: object - example: device + enum: + - identity-provider type: string - operator_suspended: - api_fieldname: operator_suspended - description: Is the device suspended by the operator? - entity_fieldname: operator_suspended - type: boolean - serial_number: - api_fieldname: serial_number - description: The serial number of the device. - entity_fieldname: serial_number - example: 00000000-0000-0000-0000-000000000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: + - ACTIVE + - SUSPENDED type: string - state: - api_fieldname: state - description: The current state of the device. - entity_fieldname: state + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - NATIVE + - MBED + - SAML2 + - OIDC type: string - system_suspended: - api_fieldname: system_suspended - description: Is the device suspended by the system? - entity_fieldname: system_suspended - type: boolean - updated_at: + - _key: updated_at api_fieldname: updated_at - description: The time the object was updated. + description: Last update UTC time RFC3339. entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' + example: '2018-02-14T15:24:14Z' format: date-time type: string - vendor_id: - api_fieldname: vendor_id - description: The device vendor ID. - entity_fieldname: vendor_id - example: 00000000-0000-0000-0000-000000000000 - type: string - - _key: '400' - description: Bad request. - - _key: '401' - description: Not authenticated. - - _key: '404' - description: Unable to find device. - return_info: - custom: false - self: true - type: device - return_type: device - summary: Get a device. - x_deprecation: null - x_filter: {} - - _key: remove_from_group - description: Remove one device from a group. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: device-group-id - api_fieldname: device-group-id - description: The ID of the group. - entity_fieldname: device-group-id - external_param: true - in: path - name: device-group-id - parameter_fieldname: device-group-id - required: true - type: string - - _key: id - api_fieldname: device_id - entity_fieldname: id - example: '00000000000000000000000000000000' - external_param: false - in: body - name: device_id - parameter_fieldname: device_id - required: true - schema_param: true - type: string - group_id: Devices - method: post - mode: remove_from_group - operation_id: Group_members_remove - pagination: false - parameter_map: - device_id: id - path: /v3/device-groups/{device-group-id}/devices/remove/ - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Success - device removed. + required: + - etag + - id + - name + - object + - type + type: object - _key: '400' - description: Bad request. + description: Error in input data, for example, name is too long. schema: properties: - _key: code @@ -24205,7 +37079,7 @@ entities: - type type: object - _key: '401' - description: Unauthorized. + description: Authentication failure. schema: properties: - _key: code @@ -24252,8 +37126,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -24301,404 +37175,188 @@ entities: - type type: object return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Remove a device from a group. + custom: false + self: true + type: identity_provider + return_type: identity_provider + summary: Create a new identity provider. x_deprecation: null x_filter: {} - - _key: renew_certificate - description: 'Request a certificate renewal. - - - **Example:** - - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/devices/01612df56f3b0a580a010fc700000000/certificates/customer.dlms/renew - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-length: 0'' + - _key: delete + description: 'Delete an identity provider by ID. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - - object - - etag - - type - - filter - - created_at - - device_id - - enroll_status - - enroll_result - - enroll_result_detail - - updated_at - field_renames: [] - fields: - - _key: certificate_name - api_fieldname: certificate-name - description: The certificate name. - entity_fieldname: certificate_name - example: customer.dlms - external_param: true - in: path - maxLength: 50 - name: certificate-name - parameter_fieldname: certificate-name - pattern: '[\w\-]{1,10}\.[\w\-.]{1,10}' - required: true - type: string - - _key: id - api_fieldname: id - description: The certificate enrollment ID. - entity_fieldname: id - example: 01612df56f3b0a580a010fc700000000 - in: path - parameter_fieldname: device-id - required: true - type: string - foreign_key: - entity: certificate_enrollment - group: Security - group_id: Devices - method: post - mode: renew_certificate - operation_id: RequestCertificateRenewal - pagination: false - parameter_map: - certificate-name: certificate_name - device-id: id - path: /v3/devices/{device-id}/certificates/{certificate-name}/renew - request_body: json - request_content_type: application/json - responses: - - _key: '201' - description: Created. - schema: - foreign_key: - entity: certificate_enrollment - group: Security - properties: - - _key: certificate_name - api_fieldname: certificate_name - description: The certificate name. - entity_fieldname: certificate_name - example: customer.dlms - maxLength: 50 - type: string - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - - _key: device_id - api_fieldname: device_id - description: The device ID. - entity_fieldname: device_id - example: 01625daa23230a580a0100bd00000000 - type: string - - _key: enroll_result - api_fieldname: enroll_result - description: The result of certificate enrollment request. - entity_fieldname: enroll_result - enum: - - success - - failure - example: success - type: string - - _key: enroll_result_detail - api_fieldname: enroll_result_detail - description: Additional information in case of failure. - entity_fieldname: enroll_result_detail - example: The device is currently processing too many certificate renewals. - type: string - - _key: enroll_status - api_fieldname: enroll_status - description: The status of certificate enrollment request. - entity_fieldname: enroll_status - enum: - - new - - completed - type: string - - _key: etag - api_fieldname: etag - description: Entity instance signature. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: The certificate enrollment ID. - entity_fieldname: id - example: 01612df56f3b0a580a010fc700000000 - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - certificate-enrollment - type: string - - _key: updated_at - api_fieldname: updated_at - description: Update UTC time RFC3339. - entity_fieldname: updated_at - example: '2017-01-01T00:00:00Z' - format: date-time - type: string - required: - - created_at - - etag - - id - - device_id - - certificate_name - type: object - - _key: '400' - description: 'Validation error: There is no certificate issuer configured for - this certificate.' - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '401' - description: You are not authorized to perform the action. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: Error code. Correlates with response status code. - format: int32 - type: integer - - _key: fields - description: A list of request fields that failed validation. - items: - properties: - - _key: field - description: Field name. - type: string - - _key: message - description: Error message related to the field. - type: string - type: object - type: array - - _key: message - description: Error message. - type: string - - _key: object - description: 'Entity name: `error`.' - type: string - - _key: request_id - description: Request ID from JWT. - type: string - - _key: type - description: Error type. - type: string - required: - - code - - fields - - message - - object - - request_id - - type - type: object - - _key: '404' - description: The device ID or certificate name is not found. + - object + - etag + - type + - filter + field_renames: + - _key: identity_provider_type + api_fieldname: type + fields: + - _key: id + api_fieldname: identity_provider_id + description: The ID of the identity provider to delete. + entity_fieldname: id + external_param: false + in: path + name: identity_provider_id + parameter_fieldname: identity_provider_id + required: true + type: string + group_id: Accounts + method: delete + mode: delete + operation_id: deleteIdentityProvider + pagination: false + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '409' - description: Conflict. A renewal request for this certificate is in progress. + - _key: '403' + description: Forbidden, or identity provider is in use. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id - type type: object - - _key: '423' - description: 'Either: - - - Operation not supported for this device. - - - The device is not connected.' + - _key: '404' + description: An identity provider not found. schema: properties: - _key: code - description: Error code. Correlates with response status code. + description: HTTP response code + example: 400 format: int32 type: integer - _key: fields - description: A list of request fields that failed validation. + description: Request fields which failed validation. items: properties: - - _key: field - description: Field name. - type: string - _key: message - description: Error message related to the field. + description: Message describing the error condition. type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message type: object type: array - _key: message - description: Error message. + description: A human readable informative explanation + example: Validation error type: string - _key: object - description: 'Entity name: `error`.' + description: Entity name, always `error`. + enum: + - error type: string - _key: request_id - description: Request ID from JWT. + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - _key: type - description: Error type. + description: Error type used to categorise the error. + example: validation_error type: string required: - code - - fields - message - object - request_id @@ -24706,725 +37364,1009 @@ entities: type: object return_info: custom: false - self: false - type: certificate_enrollment - return_type: certificate_enrollment - summary: Request certificate renewal. - unaggregated: true + self: true + type: identity_provider + return_type: identity_provider + summary: Delete an identity provider by ID. x_deprecation: null x_filter: {} - - _key: update - description: 'Update a specific device. - - - **Example:** - - Following example will update the specific devices description field to contain - "Testing description field". - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/devices/ \ - - -H ''Authorization: Bearer '' \ + - _key: delete_service_provider_certificate + description: 'Delete a service provider certificate. - -H ''content-type: application/json'' \ - - -d ''{"description": "Testing description field"}'' - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - device_execution_mode - - groups - - issuer_fingerprint - - operator_suspended - - last_operator_suspended_category - - last_operator_suspended_description - - last_operator_suspended_updated_at - - system_suspended - - last_system_suspended_category - - last_system_suspended_description - - last_system_suspended_updated_at - - lifecycle_status - - account_id - - bootstrap_expiration_date - - bootstrapped_timestamp - - connector_expiration_date - created_at - - deployed_state - - deployment - - device_class - - firmware_checksum - - manifest - - manifest_timestamp - - mechanism - - mechanism_url - - serial_number - - state - updated_at - - vendor_id - - enrolment_list_timestamp - field_renames: [] + - name + - description + - status + - saml2_attributes + - oidc_attributes + - account_id + - is_default + - identity_provider_type + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: - - _key: auto_update - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - entity_fieldname: auto_update - in: body - parameter_fieldname: auto_update - required: false - type: boolean - - _key: ca_id - api_fieldname: ca_id - description: The certificate issuer's ID. - entity_fieldname: ca_id - example: '00000000000000000000000000000000' - in: body - maxLength: 500 - parameter_fieldname: ca_id - required: false - type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot begin - with a number. Both keys and values are limited to 128 characters. Updating - this field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - in: body - maxProperties: 5 - parameter_fieldname: custom_attributes - required: false - type: object - - _key: description - api_fieldname: description - description: The description of the device. - entity_fieldname: description - example: description - in: body - maxLength: 2000 - parameter_fieldname: description - required: false - type: string - - _key: device_key - api_fieldname: device_key - description: The fingerprint of the device certificate. - entity_fieldname: device_key - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - in: body - maxLength: 512 - parameter_fieldname: device_key - required: false - type: string - - _key: endpoint_name - api_fieldname: endpoint_name - description: The endpoint name given to the device. - entity_fieldname: endpoint_name - example: 00000000-0000-0000-0000-000000000000 - in: body - parameter_fieldname: endpoint_name - readOnly: true - required: false - type: string - - _key: endpoint_type - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is a gateway. - entity_fieldname: endpoint_type - example: '' - in: body - maxLength: 64 - parameter_fieldname: endpoint_type - required: false - type: string - - _key: host_gateway - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - entity_fieldname: host_gateway - example: '' - in: body - parameter_fieldname: host_gateway - required: false - type: string - _key: id api_fieldname: id - description: The ID of the device. The device ID is used across all Device Management - APIs. + description: Entity ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: id + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: name - api_fieldname: name - description: The name of the device. - entity_fieldname: name - example: 00000000-0000-0000-0000-000000000000 - in: body - maxLength: 128 - parameter_fieldname: name - required: false - type: string - group_id: Devices - method: put - mode: update - operation_id: Device_update - pagination: false - path: /v3/devices/{id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Device updated. - schema: - - _key: foreign_key - entity: device - group: Devices - - _key: properties - account_id: - api_fieldname: account_id - description: The ID of the associated account. - entity_fieldname: account_id - example: '00000000000000000000000000000000' - type: string - auto_update: - api_fieldname: auto_update - description: 'DEPRECATED: Mark this device for automatic firmware update.' - entity_fieldname: auto_update - type: boolean - bootstrap_expiration_date: - api_fieldname: bootstrap_expiration_date - description: The expiration date of the certificate used to connect to bootstrap - server. - entity_fieldname: bootstrap_expiration_date - format: date - type: string - x-nullable: true - bootstrapped_timestamp: - api_fieldname: bootstrapped_timestamp - description: The timestamp of the device's most recent bootstrap process. - entity_fieldname: bootstrapped_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - api_fieldname: ca_id - description: The certificate issuer's ID. - entity_fieldname: ca_id - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - api_fieldname: connector_expiration_date - description: The expiration date of the certificate used to connect to LwM2M - server. - entity_fieldname: connector_expiration_date - format: date - type: string - x-nullable: true - created_at: - api_fieldname: created_at - description: The timestamp of when the device was created in the device - directory. - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to five custom key-value attributes. Note that keys cannot - begin with a number. Both keys and values are limited to 128 characters. - Updating this field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 5 - type: object - deployed_state: - api_fieldname: deployed_state - description: 'DEPRECATED: The state of the device''s deployment.' - entity_fieldname: deployed_state - enum: - - development - - production - type: string - deployment: - api_fieldname: deployment - description: 'DEPRECATED: The last deployment used on the device.' - entity_fieldname: deployment - example: '' - type: string - description: - api_fieldname: description - description: The description of the device. - entity_fieldname: description - example: description - maxLength: 2000 - type: string - device_class: - api_fieldname: device_class - description: An ID representing the model and hardware revision of the device. - entity_fieldname: device_class - example: '' - maxLength: 32 - type: string - device_execution_mode: - api_fieldname: device_execution_mode - default: 0 - description: "The execution mode from the certificate of the device. Defaults\ - \ to inheriting from host_gateway device.\nPermitted values:\n - 0 -\ - \ Unspecified execution mode (default if host_gateway invalid or not set).\ - \ The device firmware uses a certificate that is not identified as a developer\ - \ or production certificate.\n - 1 - Development device. The device firmware\ - \ uses a developer certificate to communicate with Device Management.\n\ - \ - 5 - Production device. The device firmware uses a factory-generated\ - \ certificate to communicate with Device Management." - entity_fieldname: device_execution_mode - enum: - - 0 - - 1 - - 5 - example: 0 - type: integer - device_key: - api_fieldname: device_key - description: The fingerprint of the device certificate. - entity_fieldname: device_key - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - api_fieldname: endpoint_name - description: The endpoint name given to the device. - entity_fieldname: endpoint_name - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - type: string - endpoint_type: - api_fieldname: endpoint_type - description: The endpoint type of the device. For example, the device is - a gateway. - entity_fieldname: endpoint_type - example: '' - maxLength: 64 - type: string - enrolment_list_timestamp: - api_fieldname: enrolment_list_timestamp - description: The claim date/time. - entity_fieldname: enrolment_list_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - api_fieldname: etag - description: The entity instance signature. - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - firmware_checksum: - api_fieldname: firmware_checksum - description: The SHA256 checksum of the current firmware image. - entity_fieldname: firmware_checksum - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - groups: - api_fieldname: groups - description: An array containing an ID of each group this device belongs - to. - entity_fieldname: groups - items: - example: '00000000000000000000000000000000' - type: string - type: array - host_gateway: - api_fieldname: host_gateway - description: The ID of the host gateway, if appropriate. - entity_fieldname: host_gateway - example: '' - type: string - id: - api_fieldname: id - description: The ID of the device. The device ID is used across all Device - Management APIs. - entity_fieldname: id - example: '00000000000000000000000000000000' - type: string - issuer_fingerprint: - api_fieldname: issuer_fingerprint - description: SHA256 fingerprint of the certificate used to validate the - signature of the device certificate. - entity_fieldname: issuer_fingerprint - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' - type: string - x-nullable: true - last_operator_suspended_category: - api_fieldname: last_operator_suspended_category - description: The reference of the block category. - entity_fieldname: last_operator_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' - type: string - last_operator_suspended_description: - api_fieldname: last_operator_suspended_description - description: The most recent description why the device was suspended or - returned to service. - entity_fieldname: last_operator_suspended_description - example: Suspended for maintenance. - maxLength: 2000 - type: string - last_operator_suspended_updated_at: - api_fieldname: last_operator_suspended_updated_at - description: The timestamp of the most recent suspension activity. - entity_fieldname: last_operator_suspended_updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - last_system_suspended_category: - api_fieldname: last_system_suspended_category - description: The reference of the block category. - entity_fieldname: last_system_suspended_category - example: maintenance - pattern: '[a-f0-9_]{32}' - type: string - last_system_suspended_description: - api_fieldname: last_system_suspended_description - description: The most recent description of why the device was blocked or - unblocked by the system. - entity_fieldname: last_system_suspended_description - example: A certificate in the device's certificate chain was blacklisted - by the system. - maxLength: 2000 + group_id: Accounts + method: post + mode: delete_service_provider_certificate + operation_id: deleteSpCertificate + pagination: false + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id}/delete-sp-certificate + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + headers: + - _key: Content-Location + description: /v3/identity-providers/{identity_provider_id} + type: string + schema: + foreign_key: + entity: subtenant_identity_provider + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - last_system_suspended_updated_at: - api_fieldname: last_system_suspended_updated_at - description: The timestamp of the most recent system block activity. - entity_fieldname: last_system_suspended_updated_at - example: '2017-05-22T12:37:55.576563Z' + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' format: date-time type: string - lifecycle_status: - api_fieldname: lifecycle_status - description: The lifecycle status of the device. - entity_fieldname: lifecycle_status - enum: - - enabled - - blocked - example: enabled - type: string - manifest: - api_fieldname: manifest - description: 'DEPRECATED: The URL for the current device manifest.' - entity_fieldname: manifest - example: '' - type: string - manifest_timestamp: - api_fieldname: manifest_timestamp - description: The timestamp of the current manifest version. - entity_fieldname: manifest_timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 type: string - mechanism: - api_fieldname: mechanism - description: The ID of the channel used to communicate with the device. - entity_fieldname: mechanism - enum: - - connector - - direct + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' type: string - mechanism_url: - api_fieldname: mechanism_url - description: The address of the connector to use. - entity_fieldname: mechanism_url - example: '' + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - name: + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name api_fieldname: name - description: The name of the device. + description: Name of the identity provider. entity_fieldname: name - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + maxLength: 100 type: string - object: + - _key: object api_fieldname: object - description: The API resource entity. + description: 'Entity name: always ''identity-provider''' entity_fieldname: object - example: device + enum: + - identity-provider type: string - operator_suspended: - api_fieldname: operator_suspended - description: Is the device suspended by the operator? - entity_fieldname: operator_suspended - type: boolean - serial_number: - api_fieldname: serial_number - description: The serial number of the device. - entity_fieldname: serial_number - example: 00000000-0000-0000-0000-000000000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: + - ACTIVE + - SUSPENDED type: string - state: - api_fieldname: state - description: The current state of the device. - entity_fieldname: state + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - NATIVE + - MBED + - SAML2 + - OIDC type: string - system_suspended: - api_fieldname: system_suspended - description: Is the device suspended by the system? - entity_fieldname: system_suspended - type: boolean - updated_at: + - _key: updated_at api_fieldname: updated_at - description: The time the object was updated. + description: Last update UTC time RFC3339. entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' + example: '2018-02-14T15:24:14Z' format: date-time type: string - vendor_id: - api_fieldname: vendor_id - description: The device vendor ID. - entity_fieldname: vendor_id - example: 00000000-0000-0000-0000-000000000000 - type: string - - _key: '400' - description: 'Validation error: The data used to update the device did not validate.' + required: + - etag + - id + - name + - object + - type + type: object - _key: '401' - description: Not authenticated. + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: Unable to update device because it can't be found. + description: An identity provider not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true - type: device - return_type: device - summary: Update a device. + type: identity_provider + return_type: identity_provider + summary: Delete the service provider certificate. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - CertificateEnrollment - - DeviceData - - DeviceDataPostRequest - - DeviceDataPutRequest - - DeviceGroupManipulation - - DevicePage - tags: - - Device directory - devices - - Device security - device certificate renewals - - Device directory - groups -- _key: device_enrollment - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: ID - example: 00005a4e027f0a580a01081c00000000 - readOnly: true - required: false - type: string - - _key: claimed_at - api_fieldname: claimed_at - description: The time the device was claimed. - format: date-time - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: The time of the enrollment identity creation. - format: date-time - readOnly: true - required: false - type: string - - _key: enrolled_device_id - api_fieldname: enrolled_device_id - description: The ID of the device in the Device Directory once it is registered. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - readOnly: true - required: false - type: string - - _key: enrollment_identity - api_fieldname: enrollment_identity - description: Enrollment identity. - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ - readOnly: false - required: true - type: string - - _key: expires_at - api_fieldname: expires_at - description: The enrollment claim expiration time. If the device does not connect - to Device Management before expiration, the claim is removed without separate - notice. - format: date-time - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: Enrollment identity. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - readOnly: false - required: true - type: string - group_id: Devices - methods: - - _key: create - description: 'When the device connects to the bootstrap server and provides the - enrollment ID, it is assigned to your account. - -
- - **Example:** - - ``` - - curl -X POST \ - - -H ''Authorization: Bearer '' \ + - _key: generate_service_provider_certificate + description: 'Generate a new service provider certificate. - -H ''content-type: application/json'' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollments \ - - -d ''{"enrollment_identity": "A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5"}'' - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - id - created_at - - claimed_at + - updated_at + - name + - description + - status + - saml2_attributes + - oidc_attributes - account_id - - expires_at - - enrolled_device_id - field_renames: [] + - is_default + - identity_provider_type + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: - - _key: enrollment_identity - api_fieldname: enrollment_identity - description: Enrollment identity. - entity_fieldname: enrollment_identity - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 + - _key: algorithm + api_fieldname: algorithm + description: The algorithm and its key size used for generating the certificate. + Defaults to RSA2048. + entity_fieldname: algorithm + enum: + - RSA2048 + - RSA3072 + - EC224 + - EC256 + - EC384 + - EC521 + - ECDSA224 + - ECDSA256 + - ECDSA384 + - ECDSA521 + enum_reference: identity_provider_algorithm_enum + external_param: true in: body - parameter_fieldname: enrollment_identity - pattern: ^A-[A-Za-z0-9:]{95}$ + name: algorithm + parameter_fieldname: algorithm + required: false + schema_param: true + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + in: path + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Devices + - _key: validity + api_fieldname: validity + description: Validity for the certificate in days. + entity_fieldname: validity + external_param: true + format: int32 + in: body + name: validity + parameter_fieldname: validity + required: false + schema_param: true + type: integer + group_id: Accounts method: post - mode: create - operation_id: createDeviceEnrollment + mode: generate_service_provider_certificate + operation_id: generateSpCertificate pagination: false - path: /v3/device-enrollments + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id}/generate-sp-certificate request_body: json request_content_type: application/json responses: - - _key: '201' - description: Created. The enrollment claim has been created and is waiting for - the device to connect. + - _key: '200' + description: Successful operation. + headers: + - _key: Content-Location + description: /v3/identity-providers/{identity_provider_id} + type: string schema: foreign_key: - entity: device_enrollment - group: Devices + entity: subtenant_identity_provider + group: Accounts properties: - _key: account_id api_fieldname: account_id - description: ID + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: claimed_at - api_fieldname: claimed_at - description: The time the device was claimed. - entity_fieldname: claimed_at - format: date-time + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: created_at - api_fieldname: created_at - description: The time of the enrollment identity creation. - entity_fieldname: created_at - format: date-time - type: string - - _key: enrolled_device_id - api_fieldname: enrolled_device_id - description: The ID of the device in the Device Directory once it is registered. - entity_fieldname: enrolled_device_id - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time type: string - - _key: enrollment_identity - api_fieldname: enrollment_identity - description: Enrollment identity. - entity_fieldname: enrollment_identity - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 type: string - _key: etag api_fieldname: etag + description: API resource entity version. entity_fieldname: etag - example: 7642xfaxz - pattern: '[A-Za-z0-9]{1,256}' - type: string - - _key: expires_at - api_fieldname: expires_at - description: The enrollment claim expiration time. If the device does not - connect to Device Management before expiration, the claim is removed without - separate notice. - entity_fieldname: expires_at - format: date-time + example: '1' type: string - _key: id api_fieldname: id - description: Enrollment identity. + description: Entity ID. entity_fieldname: id - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + maxLength: 100 type: string - _key: object api_fieldname: object + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - enrollment - example: enrollment + - identity-provider + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: + - ACTIVE + - SUSPENDED + type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - - object - - id - etag - - account_id - - created_at - - expires_at - - claimed_at - - enrollment_identity - - enrolled_device_id + - id + - name + - object + - type type: object - _key: '400' - description: Bad request. The enrollment identity is not valid. + description: Error in input data, for example, invalid certificate validity + value. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An identity provider not found. schema: properties: - _key: code @@ -25439,40 +38381,449 @@ entities: - _key: message description: Message describing the error condition. type: string - - _key: name - description: Name of the field which caused the error. + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: identity_provider + return_type: identity_provider + summary: Generate a new service provider certificate. + x_deprecation: null + x_filter: {} + - _key: list + description: 'Retrieve an array of identity providers. + + Note: This endpoint is restricted to administrators.' + drop_fields: + - object + - etag + - type + - filter + - total_count + - has_more + - data + field_renames: + - _key: identity_provider_type + api_fieldname: type + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: identity_provider_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: identity_provider + group: Accounts + foreign_key_priority: self + group_id: Accounts + method: get + mode: list + operation_id: getAllIdentityProviders + pagination: true + parameter_map: + identity_provider_id: id + path: /v3/identity-providers + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: identity_provider + group: Accounts + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + foreign_key: + entity: identity_provider + group: Accounts + properties: + - _key: account_id + description: The ID of the account the identity provider belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + description: Description for the identity provider. + maxLength: 500 + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + description: Flag indicating whether this is the global default identity + provider. + readOnly: true + type: boolean + - _key: name + description: Name of the identity provider. + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always ''identity-provider''' + enum: + - identity-provider + type: string + - _key: oidc_attributes + description: Represents OIDC specific attributes. + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by + the Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access + to identity provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to + sign ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request + results in the transmission of clear-text credentials, the client + must use the POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels + in the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + description: Represents SAML2 specific attributes in responses. + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave + this empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM + format. This is a read-only attribute, see API documentation about + how to generate a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED + type: string + - _key: type + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: + - etag + - id - name - - message + - object + - type type: object type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return , or equal to `total_count`. + entity_fieldname: limit + example: 50 + format: int32 + type: integer - _key: object - description: Entity name, always `error`. + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - list type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error + - _key: order + api_fieldname: order + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' + entity_fieldname: order + enum: + - ASC + - DESC type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer required: - - code - - message + - data + - has_more + - limit - object - - request_id - - type + - total_count type: object - _key: '401' - description: The provided access token is not valid. + description: Authentication failure. schema: properties: - _key: code @@ -25519,9 +38870,8 @@ entities: - request_id - type type: object - - _key: '409' - description: Conflict. The requested identity to add already exists on this - or another account. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -25571,107 +38921,340 @@ entities: return_info: custom: false self: true - type: device_enrollment - return_type: device_enrollment - summary: Create a single enrollment. + type: identity_provider + return_type: paginated_response(identity_provider) + summary: Get all identity providers. x_deprecation: null x_filter: {} - - _key: delete - description: 'To free a device from your account, delete the enrollment claim. - To bypass the device ownership, you need to delete the enrollment and factory - reset the device. For more information, see [Transferring ownership using First-to-Claim](../connecting/device-ownership-first-to-claim-by-enrollment-list.html). - -
- - **Example:** - - ``` - - curl -X DELETE \ - - -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} + - _key: read + description: 'Retrieve an identity provider. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - field_renames: [] + - created_at + - updated_at + - name + - description + - status + - saml2_attributes + - oidc_attributes + - account_id + - is_default + - identity_provider_type + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: - _key: id api_fieldname: id - description: Enrollment identity. + description: Entity ID. entity_fieldname: id - external_param: false + example: 01619571d01d0242ac12000600000000 in: path - name: id - parameter_fieldname: id + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Devices - method: delete - mode: delete - operation_id: deleteDeviceEnrollment + group_id: Accounts + method: get + mode: read + operation_id: getIdentityProvider pagination: false - path: /v3/device-enrollments/{id} + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id} request_body: json request_content_type: application/json responses: - - _key: '204' - description: No content. The enrollment claim has been deleted. - - _key: '400' - description: Bad request. Invalid enrollment identity. + - _key: '200' + description: Successful operation. schema: + foreign_key: + entity: subtenant_identity_provider + group: Accounts properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''identity-provider''' + entity_fieldname: object + enum: + - identity-provider + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts properties: - - _key: message - description: Message describing the error condition. + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true - _key: name - description: Name of the field which caused the error. + description: Custom claim name for 'name'. + example: name type: string - required: - - name - - message + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - ACTIVE + - SUSPENDED type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - - code - - message + - etag + - id + - name - object - - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -25695,264 +39278,31 @@ entities: type: object type: array - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: device_enrollment - return_type: device_enrollment - summary: Delete an enrollment by ID. - x_deprecation: null - x_filter: {} - - _key: list - description: 'Provides a list of pending and claimed enrollments. - - - **Example:** - - ``` - - curl -X GET \ - - -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollments - - ``` - - With query parameters: - - ``` - - curl -X GET \ - - -H ''Authorization: Bearer '' \ - - ''https://api.us-east-1.mbedcloud.com/v3/device-enrollments?limit=10'' - - ```' - drop_fields: - - object - - etag - - type - - filter - - has_more - - total_count - - data - field_renames: [] - fields: - - _key: after - api_fieldname: after - description: Entity ID to fetch after. - entity_fieldname: after - example: 00005a4e027f0a580a01081c00000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: ^[A-Za-z0-9]{32} - required: false - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - description: Number of results to return (2-1000). - entity_fieldname: limit - example: 50 - external_param: true - in: query - maximum: 1000 - minimum: 2 - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: ASC or DESC - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: device_enrollment_order_enum - example: ASC - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: device_enrollment - group: Devices - foreign_key_priority: self - group_id: Devices - method: get - mode: list - operation_id: getDeviceEnrollments - pagination: true - path: /v3/device-enrollments - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: OK. - schema: - foreign_key: - entity: device_enrollment - group: Devices - pagination: true - properties: - - _key: after - api_fieldname: after - description: ID - entity_fieldname: after - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - type: string - - _key: data - api_fieldname: data - entity_fieldname: data - items: - foreign_key: - entity: device_enrollment - group: Devices - properties: - - _key: account_id - description: ID - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: claimed_at - description: The time the device was claimed. - format: date-time - type: string - - _key: created_at - description: The time of the enrollment identity creation. - format: date-time - type: string - - _key: enrolled_device_id - description: The ID of the device in the Device Directory once it is - registered. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - type: string - - _key: enrollment_identity - description: Enrollment identity. - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ - type: string - - _key: etag - example: 7642xfaxz - pattern: '[A-Za-z0-9]{1,256}' - type: string - - _key: expires_at - description: The enrollment claim expiration time. If the device does - not connect to Device Management before expiration, the claim is removed - without separate notice. - format: date-time - type: string - - _key: id - description: Enrollment identity. - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - type: string - - _key: object - enum: - - enrollment - example: enrollment - type: string - required: - - object - - id - - etag - - account_id - - created_at - - expires_at - - claimed_at - - enrollment_identity - - enrolled_device_id - type: object - type: array - - _key: has_more - api_fieldname: has_more - entity_fieldname: has_more - example: true - type: boolean - - _key: limit - api_fieldname: limit - description: Range 2-1000, or default. - entity_fieldname: limit - example: 50 - maximum: 1000 - minimum: 2 - type: integer - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - list - example: list - type: string - - _key: order - api_fieldname: order - default: ASC - entity_fieldname: order + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. enum: - - ASC - - DESC - example: ASC + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - example: 100 - format: int32 - minimum: 1 - type: integer required: + - code + - message - object - - limit - - after - - order - - has_more - - total_count - - data + - request_id + - type type: object - - _key: '400' - description: Bad request. The access token could not be read. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -25999,8 +39349,8 @@ entities: - request_id - type type: object - - _key: '401' - description: The provided access token is not valid. + - _key: '404' + description: An identity provider not found. schema: properties: - _key: code @@ -26050,139 +39400,344 @@ entities: return_info: custom: false self: true - type: device_enrollment - return_type: paginated_response(device_enrollment) - summary: Get a list of enrollments per account. + type: identity_provider + return_type: identity_provider + summary: Get identity provider. x_deprecation: null x_filter: {} - - _key: read - description: 'Check detailed enrollment info, for example, date of claim or expiration - date. - + - _key: refresh_tokens + description: 'Refreshes an OIDC IdP''s signing keys. - **Example:** - - ``` - - curl -X GET \ - - -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollments/{id} - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - created_at - - claimed_at - - enrollment_identity + - updated_at + - name + - description + - status + - saml2_attributes + - oidc_attributes - account_id - - expires_at - - enrolled_device_id - field_renames: [] + - is_default + - identity_provider_type + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: - _key: id api_fieldname: id - description: Enrollment identity. + description: Entity ID. entity_fieldname: id - example: 00005a4e027f0a580a01081c00000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Devices - method: get - mode: read - operation_id: getDeviceEnrollment + group_id: Accounts + method: post + mode: refresh_tokens + operation_id: refreshJwks pagination: false - path: /v3/device-enrollments/{id} + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id}/refresh-jwks request_body: json request_content_type: application/json responses: - _key: '200' - description: OK. Pending enrollment data. + description: Successful operation. + headers: + - _key: Content-Location + description: /v3/identity-providers/{identity_provider_id} + type: string schema: foreign_key: - entity: device_enrollment - group: Devices + entity: subtenant_identity_provider + group: Accounts properties: - _key: account_id api_fieldname: account_id - description: ID + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: claimed_at - api_fieldname: claimed_at - description: The time the device was claimed. - entity_fieldname: claimed_at - format: date-time + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: created_at api_fieldname: created_at - description: The time of the enrollment identity creation. + description: Creation UTC time RFC3339. entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: enrolled_device_id - api_fieldname: enrolled_device_id - description: The ID of the device in the Device Directory once it is registered. - entity_fieldname: enrolled_device_id - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} - type: string - - _key: enrollment_identity - api_fieldname: enrollment_identity - description: Enrollment identity. - entity_fieldname: enrollment_identity - example: A-35:e7:72:8a:07:50:3b:3d:75:96:57:52:72:41:0d:78:cc:c6:e5:53:48:c6:65:58:5b:fa:af:4d:2d:73:95:c5 - pattern: ^A-[A-Za-z0-9:]{95}$ + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 type: string - _key: etag api_fieldname: etag + description: API resource entity version. entity_fieldname: etag - example: 7642xfaxz - pattern: '[A-Za-z0-9]{1,256}' - type: string - - _key: expires_at - api_fieldname: expires_at - description: The enrollment claim expiration time. If the device does not - connect to Device Management before expiration, the claim is removed without - separate notice. - entity_fieldname: expires_at - format: date-time + example: '1' type: string - _key: id api_fieldname: id - description: Enrollment identity. + description: Entity ID. entity_fieldname: id - example: 00005a4e027f0a580a01081c00000000 - pattern: ^[A-Za-z0-9]{32} + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + maxLength: 100 type: string - _key: object api_fieldname: object + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - enrollment - example: enrollment + - identity-provider + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: + - ACTIVE + - SUSPENDED + type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - - object - - id - etag - - account_id - - created_at - - expires_at - - claimed_at - - enrollment_identity - - enrolled_device_id + - id + - name + - object + - type type: object - _key: '400' - description: Bad request. Invalid enrollment identity. + description: Not an OIDC IdP or JWKS URI is unspecified. schema: properties: - _key: code @@ -26229,8 +39784,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -26246,320 +39801,39 @@ entities: description: Message describing the error condition. type: string - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: device_enrollment - return_type: device_enrollment - summary: Get details of an single enrollment by ID. - x_deprecation: null - x_filter: {} - primary_key_field: id - swagger_models: - - EnrollmentId - - EnrollmentIdentities - - EnrollmentIdentity - tags: - - Public API -- _key: device_enrollment_bulk_create - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: ID - example: 00005a4e027f0a580a01081c00000000 - readOnly: true - required: false - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - format: date-time - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: The time of receiving the bulk creation task. - format: date-time - readOnly: true - required: false - type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - example: 0 - readOnly: true - required: false - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv - readOnly: true - required: false - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: Bulk ID - pattern: ^[A-Za-z0-9]{32} - readOnly: false - required: true - type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - example: 0 - readOnly: true - required: false - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. If creation - is still in progress, the state shows as 'processing'. When the request is fully - processed, the state changes to 'completed'. - enum: - - new - - processing - - completed - enum_reference: device_enrollment_bulk_create_status_enum - example: new - readOnly: true - required: false - type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - example: 10 - readOnly: true - required: false - type: integer - group_id: Devices - methods: - - _key: create - description: "With bulk upload, you can upload a `CSV` file containing a number\ - \ of enrollment IDs.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ - \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ - \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads\n\ - \n```\n **To ensure your CSV file is valid:**\n 1. The first line of the file\ - \ (header) is ignored.\n 1. Each line can contain comma-separated values, where\ - \ the first value is the Enrollment ID. Everything after the first comma is\ - \ ignored.\n 1. Valid enrollments begin with A followed by a - and 95 characters\ - \ (examples below).\n 1. One enrollment ID per line. Empty lines are ignored.\n\ - \ 1. Trailing comma at the end of the line is optional.\n 1. Lines are terminated\ - \ with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n 1.\ - \ Leading and trailing whitespace characters (Unicode U+0000 - U+0020) are removed\ - \ from the identity before validation.\n 1. Empty identities are ignored.\n\ - \ 1. Valid enrollment identities may be enclosed within quotation marks. Whitespace\ - \ inside quotation marks is not trimmed and will cause validation to fail. Empty\ - \ quotation marks are also invalid.\n 1. Use UTF-8 encoding.\n\n\n**A valid\ - \ enrollment file:**\n```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ - ,\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\ - \nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\n\ - A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12,\ - \ This text is ignored.\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\ - \ , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\"\ - \ , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file\ - \ containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ - , First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ - \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ - \ Too-short identity.\n\"\", Empty quotation marks are an invalid identity\n\ - \" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\ - \ \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n\ - ```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored\"\ - \n\n,,\n, This is also considered a blank line.\n```" - drop_fields: - - object - - etag - - type - - filter - - id - - account_id - - created_at - - status - - total_count - - processed_count - - errors_count - - completed_at - - full_report_file - - errors_report_file - field_renames: [] - fields: - - _key: enrollment_identities - api_fieldname: enrollment_identities - description: The `CSV` file containing the enrollment IDs. The maximum file - size is 10 MB. - entity_fieldname: enrollment_identities - external_param: true - in: stream - name: enrollment_identities - parameter_fieldname: enrollment_identities - required: true - type: file - group_id: Devices - method: post - mode: create - operation_id: createBulkDeviceEnrollment - pagination: false - path: /v3/device-enrollments-bulk-uploads - request_body: file - request_content_type: multipart/form-data - responses: - - _key: '201' - description: Bulk upload data received and asynchronous processing started. - schema: - foreign_key: - entity: device_enrollment_bulk_delete - group: Devices - properties: - - _key: account_id - api_fieldname: account_id - description: ID - entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - entity_fieldname: completed_at - format: date-time - type: string - - _key: created_at - api_fieldname: created_at - description: The time of receiving the bulk creation task. - entity_fieldname: created_at - format: date-time - type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - entity_fieldname: errors_count - example: 0 - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - entity_fieldname: errors_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv - type: string - - _key: etag - api_fieldname: etag - description: etag - entity_fieldname: etag - example: '1' - pattern: '[A-Za-z0-9]{0,256}' - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - entity_fieldname: full_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv - type: string - - _key: id - api_fieldname: id - description: Bulk ID - entity_fieldname: id - pattern: ^[A-Za-z0-9]{32} + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - entity_fieldname: object + description: Entity name, always `error`. enum: - - enrollment-identity-bulk-uploads - example: enrollment-identity-bulk-uploads + - error type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - entity_fieldname: processed_count - example: 0 - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. - If creation is still in progress, the state shows as 'processing'. When - the request is fully processed, the state changes to 'completed'. - entity_fieldname: status - enum: - - new - - processing - - completed - example: new + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - entity_fieldname: total_count - example: 10 - type: integer required: + - code + - message - object - - id - - etag - - created_at - - account_id - - status - - total_count - - processed_count - - errors_count - - completet_at - - full_report_file - - errors_report_file + - request_id + - type type: object - - _key: '400' - description: Bad request. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -26606,8 +39880,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Invalid access token. + - _key: '404' + description: An identity provider not found. schema: properties: - _key: code @@ -26657,315 +39931,577 @@ entities: return_info: custom: false self: true - type: device_enrollment_bulk_create - return_type: device_enrollment_bulk_create - summary: Bulk upload. - x_deprecation: null - x_filter: {} - - _key: download_errors_report_file - custom_method: download_errors_report_file - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: [] - group_id: Devices - method: null - mode: download_errors_report_file - path: null - request_body: json - request_content_type: application/json - responses: [] - return_info: - custom: true - self: false - type: file - return_type: file - spec: - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - return_type: file - summary: Download the error report file for the created the bulk enrollment. - summary: Download the error report file for the created the bulk enrollment. - x_deprecation: null - x_filter: {} - - _key: download_full_report_file - custom_method: download_full_report_file - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: [] - group_id: Devices - method: null - mode: download_full_report_file - path: null - request_body: json - request_content_type: application/json - responses: [] - return_info: - custom: true - self: false - type: file - return_type: file - spec: - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - return_type: file - summary: Download the full report file for the created of the bulk enrollment. - summary: Download the full report file for the created of the bulk enrollment. + type: identity_provider + return_type: identity_provider + summary: Refreshes the OIDC signing keys. x_deprecation: null x_filter: {} - - _key: read - description: 'Provides information on bulk upload for the given ID, for example, - bulk status and number of processed enrollment identities. Provides links to - bulk upload reports as well. - - - **Report file format:** - - The report files have a header line, and the values are separated by commas. - Delimit lines with a line break (CRLF). Make sure the report file is compliant - with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180). - - - An example of a full report file: - - ``` - - "entity__id","entity__created_at","error__code","error__type","error__message","error__fields" - - "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","2018-09-07T12:10:58.428Z","","","","" - - "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","2018-09-07T12:10:58.428Z","","","","" - - ``` - - An example of an error report file: - - ``` - - "entity__id","error__code","error__type","error__message","error__fields" - - "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","409","duplicate","Enrollment - identity is already claimed in the mbed Cloud.","" - - "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","409","duplicate","Enrollment - identity is already claimed in the mbed Cloud.","" - - ``` - - **Example:** - - ``` - - curl -X GET \ - - -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/{id} + - _key: update + description: 'Update an existing identity provider. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - account_id - created_at - - status - - total_count - - processed_count - - errors_count - - completed_at - - full_report_file - - errors_report_file - field_renames: [] + - updated_at + - account_id + - is_default + field_renames: + - _key: identity_provider_type + api_fieldname: type fields: + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string + - _key: discovery + allowEmptyValue: true + api_fieldname: discovery + description: 'Indicates that the OpenID Connect endpoints and keys should be + set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + entity_fieldname: discovery + external_param: true + in: query + name: discovery + parameter_fieldname: discovery + required: false + type: boolean - _key: id api_fieldname: id - description: Bulk ID + description: Entity ID. entity_fieldname: id + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Devices - method: get - mode: read - operation_id: getBulkDeviceEnrollment + - _key: identity_provider_type + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: *id004 + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true + type: string + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID + tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the POST + mode. + enum: *id005 + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in + PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: *id006 + enum_reference: identity_provider_status_enum + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: put + mode: update + operation_id: updateIdentityProvider pagination: false - path: /v3/device-enrollments-bulk-uploads/{id} + parameter_map: + identity_provider_id: id + path: /v3/identity-providers/{identity_provider_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Bulk upload entity found. + description: Successful operation. schema: foreign_key: - entity: device_enrollment_bulk_delete - group: Devices + entity: subtenant_identity_provider + group: Accounts properties: - _key: account_id api_fieldname: account_id - description: ID + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - entity_fieldname: completed_at - format: date-time + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: created_at api_fieldname: created_at - description: The time of receiving the bulk creation task. + description: Creation UTC time RFC3339. entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - entity_fieldname: errors_count - example: 0 - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - entity_fieldname: errors_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + maxLength: 500 type: string - _key: etag api_fieldname: etag - description: etag + description: API resource entity version. entity_fieldname: etag example: '1' - pattern: '[A-Za-z0-9]{0,256}' - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - entity_fieldname: full_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv type: string - _key: id api_fieldname: id - description: Bulk ID + description: Entity ID. entity_fieldname: id - pattern: ^[A-Za-z0-9]{32} + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + maxLength: 100 type: string - _key: object api_fieldname: object + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - enrollment-identity-bulk-uploads - example: enrollment-identity-bulk-uploads - type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - entity_fieldname: processed_count - example: 0 - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. - If creation is still in progress, the state shows as 'processing'. When - the request is fully processed, the state changes to 'completed'. - entity_fieldname: status - enum: - - new - - processing - - completed - example: new + - identity-provider type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - entity_fieldname: total_count - example: 10 - type: integer - required: - - object - - id - - etag - - created_at - - account_id - - status - - total_count - - processed_count - - errors_count - - completet_at - - full_report_file - - errors_report_file - type: object - - _key: '400' - description: Bad request. Invalid bulk identity. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts properties: - - _key: message - description: Message describing the error condition. + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name type: string + x-nullable: true - _key: name - description: Name of the field which caused the error. + description: Custom claim name for 'name'. + example: name type: string - required: - - name - - message + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - ACTIVE + - SUSPENDED type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + api_fieldname: type + description: Identity provider type. + entity_fieldname: identity_provider_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - - code - - message + - etag + - id + - name - object - - request_id - type type: object - - _key: '401' - description: Invalid access token. + - _key: '400' + description: Error in input data, for example, missing name. schema: properties: - _key: code @@ -27012,8 +40548,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -27060,292 +40596,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: device_enrollment_bulk_create - return_type: device_enrollment_bulk_create - summary: Get bulk upload entity. - x_deprecation: null - x_filter: {} - primary_key_field: id - swagger_models: - - BulkResponse - tags: - - Public API -- _key: device_enrollment_bulk_delete - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: ID - example: 00005a4e027f0a580a01081c00000000 - readOnly: true - required: false - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - format: date-time - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: The time of receiving the bulk creation task. - format: date-time - readOnly: true - required: false - type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - example: 0 - readOnly: true - required: false - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv - readOnly: true - required: false - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: Bulk ID - in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} - readOnly: false - required: true - type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - example: 0 - readOnly: true - required: false - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. If creation - is still in progress, the state shows as 'processing'. When the request is fully - processed, the state changes to 'completed'. - enum: - - new - - processing - - completed - enum_reference: device_enrollment_bulk_delete_status_enum - example: new - readOnly: true - required: false - type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - example: 10 - readOnly: true - required: false - type: integer - group_id: Devices - methods: - - _key: delete - description: "With bulk delete, you can upload a `CSV` file containing a number\ - \ of enrollment IDs to delete.\n\n**Example:**\n```\ncurl -X POST \\\n-H 'Authorization:\ - \ Bearer ' \\\n-F 'enrollment_identities=@/path/to/enrollments/enrollments.csv'\ - \ \\\nhttps://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes\n\ - \n```\n**To ensure your CSV file is valid:**\n1. The first line of the file\ - \ (header) is ignored.\n1. Each line can contain comma-separated values, where\ - \ the first value is the Enrollment ID. Everything after the first comma is\ - \ ignored.\n1. Valid enrollments begin with A followed by a - and 95 characters\ - \ (examples below).\n1. One enrollment ID per line. Empty lines are ignored.\n\ - 1. Trailing comma at the end of the line is optional.\n1. Lines are terminated\ - \ with either a line feed \\n, a carriage return \\r, or both \\r\\n.\n1. Leading\ - \ and trailing whitespace characters (Unicode U+0000 - U+0020) are removed from\ - \ the identity before validation.\n1. Empty identities are ignored.\n1. Valid\ - \ enrollment identities may be enclosed within quotation marks. Whitespace inside\ - \ quotation marks is not trimmed and will cause validation to fail. Empty quotation\ - \ marks are also invalid.\n1. Use UTF-8 encoding.\n\n**A valid enrollment file:**\n\ - ```\n\"Examples of valid identites, notes\"\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ - ,\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\"\ - \nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12\n\ - A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:24:44:71:22:15:43:23:12,\ - \ This text is ignored,\n A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\ - \ , Whitespace is trimmed before validation.\n \"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:60:25:48:44:71:22:15:43:23:12\"\ - \ , Whitespace around quotation marks is also trimmed.\n\n```\n\n**A file\ - \ containing invalid identities:**\n```\n\"A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\"\ - , First line is ignored.\nA_4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ - \ Invalid version identifier.\nA-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:25:48:44:71:22:15:43:23:12,\ - \ Too-short identity.\n\"\", Empty quotation marks are an invalid identity.\n\ - \" A-4E:63:2D:AE:14:BC:D1:09:77:21:95:44:ED:34:06:57:1E:03:B1:EF:0E:F2:59:44:71:93:23:22:15:43:23:12\ - \ \", Whitespace inside quotation marks is not trimmed, causing an error.\n\n\ - ```\n\n**An empty file:**\n```\n\"Examples of blank lines that are ignored.\"\ - \n\n,,\n, This is also considered to a blank line.\n```" - drop_fields: - - object - - etag - - type - - filter - - id - - account_id - - created_at - - status - - total_count - - processed_count - - errors_count - - completed_at - - full_report_file - - errors_report_file - field_renames: [] - fields: - - _key: enrollment_identities - api_fieldname: enrollment_identities - description: The `CSV` file containing the enrollment IDs. The maximum file - size is 10MB. - entity_fieldname: enrollment_identities - external_param: true - in: stream - name: enrollment_identities - parameter_fieldname: enrollment_identities - required: true - type: file - group_id: Devices - method: post - mode: delete - operation_id: deleteBulkDeviceEnrollment - pagination: false - path: /v3/device-enrollments-bulk-deletes - request_body: file - request_content_type: multipart/form-data - responses: - - _key: '201' - description: Bulk delete data received and asynchronous processing started. - schema: - foreign_key: - entity: device_enrollment_bulk_create - group: Devices - properties: - - _key: account_id - api_fieldname: account_id - description: ID - entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - entity_fieldname: completed_at - format: date-time - type: string - - _key: created_at - api_fieldname: created_at - description: The time of receiving the bulk creation task. - entity_fieldname: created_at - format: date-time - type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - entity_fieldname: errors_count - example: 0 - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - entity_fieldname: errors_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv - type: string - - _key: etag - api_fieldname: etag - description: etag - entity_fieldname: etag - example: '1' - pattern: '[A-Za-z0-9]{0,256}' - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - entity_fieldname: full_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv - type: string - - _key: id - api_fieldname: id - description: Bulk ID - entity_fieldname: id - in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} - required: true - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - enrollment-identity-bulk-uploads - example: enrollment-identity-bulk-uploads - type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - entity_fieldname: processed_count - example: 0 - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. - If creation is still in progress, the state shows as 'processing'. When - the request is fully processed, the state changes to 'completed'. - entity_fieldname: status - enum: - - new - - processing - - completed - example: new - type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - entity_fieldname: total_count - example: 10 - type: integer - required: - - object - - id - - etag - - created_at - - account_id - - status - - total_count - - processed_count - - errors_count - - completet_at - - full_report_file - - errors_report_file - type: object - - _key: '400' - description: Bad request. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -27392,8 +40644,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Invalid access token. + - _key: '404' + description: An identity provider not found. schema: properties: - _key: code @@ -27443,121 +40695,108 @@ entities: return_info: custom: false self: true - type: device_enrollment_bulk_delete - return_type: device_enrollment_bulk_delete - summary: Bulk delete. - x_deprecation: null - x_filter: {} - - _key: download_errors_report_file - custom_method: download_errors_report_file - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: [] - group_id: Devices - method: null - mode: download_errors_report_file - path: null - request_body: json - request_content_type: application/json - responses: [] - return_info: - custom: true - self: false - type: file - return_type: file - spec: - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - return_type: file - summary: Download the error report file for the bulk enrollment deletion. - summary: Download the error report file for the bulk enrollment deletion. - x_deprecation: null - x_filter: {} - - _key: download_full_report_file - custom_method: download_full_report_file - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: [] - group_id: Devices - method: null - mode: download_full_report_file - path: null - request_body: json - request_content_type: application/json - responses: [] - return_info: - custom: true - self: false - type: file - return_type: file - spec: - description: This method will download the CSV file containing detailed information - on status of the bulk enrollment. - return_type: file - summary: Download the full report file for the bulk enrollment deletion. - summary: Download the full report file for the bulk enrollment deletion. + type: identity_provider + return_type: identity_provider + summary: Update an existing identity provider. x_deprecation: null x_filter: {} - - _key: read - description: 'Provides information on bulk delete for the given ID, for example, - bulk status and the number of processed enrollment identities. Provides links - to bulk delete reports as well. - - - **Report file format:** - - The report files have a header line and the value are separated by commas. The - lines are delimited by a line break (CRLF). Make sure the report file is compliant - with IETF Informal CSV common format [RFC 4180](https://tools.ietf.org/html/rfc4180). - - - An example of a full report file: - - ``` - - "entity__id","entity__deleted_at","error__code","error__type","error__message","error__fields" - - "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","2018-09-07T12:10:58.428Z","","","","" - - "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","2018-09-07T12:10:58.428Z","","","","" - - ``` - - An example of an error report file: - - ``` - - "entity__id","error__code","error__type","error__message","error__fields" - - "A-F9:AA:AA:AA:DE:31:C7:30:72:55:27:AE:8B:E1:1C:6F:42:7D:06:CF:FB:18:6F:59:48:29:B3:98:4B:76:8F:9E","409","duplicate","Enrollment - identity is already claimed in the mbed Cloud.","" + primary_key_field: id + swagger_models: + - CertificateGenerationReq + - IdentityProviderCreationReq + - IdentityProviderInfo + - IdentityProviderList + - IdentityProviderUpdateReq + tags: + - Account - identity providers +- _key: identity_provider_public_key + field_renames: [] + fields: + - _key: key + api_fieldname: key + description: The public key. + readOnly: true + required: false + type: string + - _key: kid + api_fieldname: kid + description: The public key ID. + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - IdpPublicKey + tags: [] +- _key: light_theme_color + field_renames: [] + fields: + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' + in: body + parameter_fieldname: color + readOnly: false + required: false + type: string + x-nullable: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: light_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true + required: false + type: string + group_id: Branding + methods: + - _key: delete + description: 'Resets the branding color to its light theme default. - "A-FF:AA:AA:AA:3B:43:EB:D7:C7:30:03:5F:C8:D0:15:91:70:C2:5D:4F:EB:24:E9:3A:BB:D8:3C:FE:20:EA:B1:72","409","duplicate","Enrollment - identity is already claimed in the mbed Cloud.","" + Note: This endpoint is restricted to administrators. - ``` **Example:** ``` - curl -X GET \ - - -H ''Authorization: Bearer '' \ + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} + \ - https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-deletes/{id} + -H ''Authorization: Bearer '' ```' drop_fields: @@ -27565,148 +40804,49 @@ entities: - etag - type - filter - - account_id - - created_at - - status - - total_count - - processed_count - - errors_count - - completed_at - - full_report_file - - errors_report_file field_renames: [] fields: - - _key: id - api_fieldname: id - description: Bulk ID - entity_fieldname: id + - _key: reference + _override: true + api_fieldname: reference + description: The name of the branding color. + entity_fieldname: reference + enum: &id007 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: light_theme_color_reference_enum in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} + is_primary_key: true + name: reference required: true type: string - group_id: Devices - method: get - mode: read - operation_id: getBulkDeviceEnrollmentDelete + group_id: Branding + method: delete + mode: delete + operation_id: resetLightColor pagination: false - path: /v3/device-enrollments-bulk-deletes/{id} + path: /v3/branding-colors/light/{reference} request_body: json request_content_type: application/json responses: - - _key: '200' - description: Bulk delete entity found. - schema: - foreign_key: - entity: device_enrollment_bulk_create - group: Devices - properties: - - _key: account_id - api_fieldname: account_id - description: ID - entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - type: string - - _key: completed_at - api_fieldname: completed_at - description: 'The time the bulk creation task was completed. - - Null when creating bulk upload or delete.' - entity_fieldname: completed_at - format: date-time - type: string - - _key: created_at - api_fieldname: created_at - description: The time of receiving the bulk creation task. - entity_fieldname: created_at - format: date-time - type: string - - _key: errors_count - api_fieldname: errors_count - description: The number of enrollment identities with failed processing. - entity_fieldname: errors_count - example: 0 - type: integer - - _key: errors_report_file - api_fieldname: errors_report_file - description: 'Link to error report file. - - Null when creating bulk upload or delete.' - entity_fieldname: errors_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/errors_report.csv - type: string - - _key: etag - api_fieldname: etag - description: etag - entity_fieldname: etag - example: '1' - pattern: '[A-Za-z0-9]{0,256}' - type: string - - _key: full_report_file - api_fieldname: full_report_file - description: 'Link to full report file. - - Null when creating bulk upload or delete.' - entity_fieldname: full_report_file - example: https://api.us-east-1.mbedcloud.com/v3/device-enrollments-bulk-uploads/2d238a89038b4ddb84699dd36a901063/full_report.csv - type: string - - _key: id - api_fieldname: id - description: Bulk ID - entity_fieldname: id - in: path - parameter_fieldname: id - pattern: ^[A-Za-z0-9]{32} - required: true - type: string - - _key: object - api_fieldname: object - entity_fieldname: object - enum: - - enrollment-identity-bulk-uploads - example: enrollment-identity-bulk-uploads - type: string - - _key: processed_count - api_fieldname: processed_count - description: The number of enrollment identities processed until now. - entity_fieldname: processed_count - example: 0 - type: integer - - _key: status - api_fieldname: status - default: new - description: The state of the process is 'new' at the time of creation. - If creation is still in progress, the state shows as 'processing'. When - the request is fully processed, the state changes to 'completed'. - entity_fieldname: status - enum: - - new - - processing - - completed - example: new - type: string - - _key: total_count - api_fieldname: total_count - description: Total number of enrollment identities found in the input CSV. - entity_fieldname: total_count - example: 10 - type: integer - required: - - object - - id - - etag - - created_at - - account_id - - status - - total_count - - processed_count - - errors_count - - completet_at - - full_report_file - - errors_report_file - type: object - - _key: '400' - description: Bad request. Invalid bulk identity. + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -27753,8 +40893,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Invalid access token. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -27802,7 +40942,7 @@ entities: - type type: object - _key: '404' - description: Not found. + description: Color not found. schema: properties: - _key: code @@ -27850,244 +40990,170 @@ entities: - type type: object return_info: - custom: false - self: true - type: device_enrollment_bulk_delete - return_type: device_enrollment_bulk_delete - summary: Get bulk delete entity. + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Reset branding color to default. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - BulkResponse - tags: - - Public API -- _key: device_enrollment_denial - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: account id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: created_at - api_fieldname: created_at - description: date on which the failed bootstrap was attempted on - example: '2000-01-23T04:56:07.000+00:00' - format: date-time - readOnly: true - required: false - type: string - - _key: endpoint_name - api_fieldname: endpoint_name - description: endpoint name - example: Endpoint_1234 - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: id of the recorded failed bootstrap attempt - example: 00005a4e027f0a580a04567c00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: trusted_certificate_id - api_fieldname: trusted_certificate_id - description: Trusted certificate id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - group_id: Devices - methods: - _key: list - description: 'This produces a list of failed attempts to bootstrap using a particular - certificate which is blacklisted (trusted_certificate). - - Returned list can be filtered by endpoint name. Trusted certificate ID filter - is required. + description: 'Retrieve the light theme branding colors. - **Example usage:** + **Example:** ``` - curl -X GET -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials?trusted_certificate_id__eq={cert-id}&endpoint_name__eq={endpoint_name} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \ - ``` + -H ''Authorization: Bearer '' - ' + ```' drop_fields: - object - etag - type - filter - - has_more + - limit + - after + - order - total_count + - has_more - data - - trusted_certificate_id__eq - - endpoint_name__eq field_renames: [] fields: - - _key: after - api_fieldname: after - description: Optional parameter for pagination. Denied device ID. - entity_fieldname: after - external_param: true - in: query - name: after - parameter_fieldname: after - required: false - type: string - - _key: limit - api_fieldname: limit - description: Optional parameter for pagination. - entity_fieldname: limit - example: 50 - external_param: true - in: query - maximum: 1000 - minimum: 2 - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - description: Optional parameter for pagination. - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: device_enrollment_denial_order_enum - example: DESC - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: reference + _override: true + api_fieldname: reference + entity_fieldname: reference + is_primary_key: true type: string foreign_key: - entity: device_enrollment_denial - group: Devices + entity: light_theme_color + group: Branding foreign_key_priority: self - group_id: Devices + group_id: Branding method: get mode: list - operation_id: listEnrollmentDenialAttempts + operation_id: getLightColors pagination: true - path: /v3/device-enrollment-denials + path: /v3/branding-colors/light request_body: json request_content_type: application/json responses: - _key: '200' - description: Query Success. Responding with List of Devices. + description: Successful operation. schema: foreign_key: - entity: device_enrollment_denial - group: Devices + entity: light_theme_color + group: Branding pagination: true properties: - _key: after api_fieldname: after - description: An offset token for current page. + description: The entity ID to retrieve after the given one. entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: data api_fieldname: data + description: A list of entities. entity_fieldname: data items: foreign_key: - entity: device_enrollment_denial - group: Devices + entity: dark_theme_color + group: Branding properties: - - _key: account_id - description: account id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - description: date on which the failed bootstrap was attempted on - example: '2000-01-23T04:56:07.000+00:00' - format: date-time - type: string - - _key: endpoint_name - description: endpoint name - example: Endpoint_1234 - type: string - - _key: id - description: id of the recorded failed bootstrap attempt - example: 00005a4e027f0a580a04567c00000000 - pattern: '[a-f0-9]{32}' + - _key: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' type: string + x-nullable: true - _key: object + description: 'Entity name: always ''branding_color''' enum: - - denied_device + - branding_color + readOnly: true type: string - - _key: trusted_certificate_id - description: Trusted certificate id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' + - _key: reference + _override: true + description: Color name. + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + is_primary_key: true type: string - required: - - id - - account_id - - endpoint_name - - trusted_certificate_id - - created_at - - object + - _key: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object type: array - _key: has_more api_fieldname: has_more - description: Are there more results available. + description: Flag indicating whether there are more results. entity_fieldname: has_more example: false type: boolean - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit - is 2 and the maximum is 1000. Limit values outside of this range are set - to the closest limit. + description: The number of results to return, or equal to `total_count`. entity_fieldname: limit example: 50 - maximum: 1000 - minimum: 2 + format: int32 type: integer - _key: object api_fieldname: object - description: The type of this API object is a "list". + description: 'Entity name: always `list`.' entity_fieldname: object - example: list + enum: + - list type: string - _key: order api_fieldname: order - description: The creation time based order of the entries. + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' entity_fieldname: order enum: - ASC - DESC - example: DESC type: string - _key: total_count api_fieldname: total_count + description: The total number of records, if requested. entity_fieldname: total_count - example: 1 - format: integer + example: 20 + format: int32 type: integer required: - - object - data + - has_more + - limit + - object + - total_count type: object - _key: '401' - description: JWT validation failed. + description: Authentication failure. schema: properties: - _key: code @@ -28134,8 +41200,8 @@ entities: - request_id - type type: object - - _key: '404' - description: ID set in pagination parameter `after` not found. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -28185,119 +41251,176 @@ entities: return_info: custom: false self: true - type: device_enrollment_denial - return_type: paginated_response(device_enrollment_denial) - summary: Return list of devices which were denied to bootstrap due to being subjected - to blacklisting. + type: light_theme_color + return_type: paginated_response(light_theme_color) + summary: Get light theme branding colors. x_deprecation: null - x_filter: - endpoint_name: - - eq - trusted_certificate_id: - - eq + x_filter: {} - _key: read - description: 'Query for a single attempt to bootstrap with a blacklisted certificate - by ID. + description: 'Retrieve the requested light theme branding color. - **Example usage:** + **Example:** ``` - curl -X GET -H ''Authorization: Bearer '' \ - - https://api.us-east-1.mbedcloud.com/v3/device-enrollment-denials/{device_enrollment_denial_id} + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} + \ - ``` + -H ''Authorization: Bearer '' - ' + ```' drop_fields: - object - etag - type - filter - - id - - account_id - - endpoint_name - - trusted_certificate_id - - created_at + - color + - updated_at field_renames: [] fields: - - _key: device_enrollment_denial_id - api_fieldname: device_enrollment_denial_id - description: id of the recorded failed bootstrap attempt - entity_fieldname: device_enrollment_denial_id - external_param: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id007 + enum_reference: light_theme_color_reference_enum in: path - name: device_enrollment_denial_id - parameter_fieldname: device_enrollment_denial_id + is_primary_key: true + name: reference required: true type: string - group_id: Devices + group_id: Branding method: get mode: read - operation_id: getEnrollmentDenialAttempt + operation_id: getLightColor pagination: false - path: /v3/device-enrollment-denials/{device_enrollment_denial_id} + path: /v3/branding-colors/light/{reference} request_body: json request_content_type: application/json responses: - _key: '200' - description: Query Success. Responding with blacklisted device. + description: Successful operation. schema: foreign_key: - entity: device_enrollment_denial - group: Devices + entity: subtenant_light_theme_color + group: Branding properties: - - _key: account_id - api_fieldname: account_id - description: account id - entity_fieldname: account_id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color + required: false type: string - - _key: created_at - api_fieldname: created_at - description: date on which the failed bootstrap was attempted on - entity_fieldname: created_at - example: '2000-01-23T04:56:07.000+00:00' - format: date-time + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_color''' + entity_fieldname: object + enum: + - branding_color + external_param: true + in: body + name: object + parameter_fieldname: object + readOnly: true + required: false + schema_param: true type: string - - _key: endpoint_name - api_fieldname: endpoint_name - description: endpoint name - entity_fieldname: endpoint_name - example: Endpoint_1234 + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - - _key: id - api_fieldname: id - description: id of the recorded failed bootstrap attempt - entity_fieldname: id - example: 00005a4e027f0a580a04567c00000000 - pattern: '[a-f0-9]{32}' + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true + required: false + type: string + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - entity_fieldname: object + description: Entity name, always `error`. enum: - - denied_device + - error type: string - - _key: trusted_certificate_id - api_fieldname: trusted_certificate_id - description: Trusted certificate id - entity_fieldname: trusted_certificate_id - example: 00005a4e027f0a580a01081c00000000 - pattern: '[a-f0-9]{32}' + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - id - - account_id - - endpoint_name - - trusted_certificate_id - - created_at + - code + - message - object - - _key: '401' - description: JWT validation failed. + - request_id + - type + type: object + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -28345,7 +41468,7 @@ entities: - type type: object - _key: '404' - description: ID not found. + description: Color not found. schema: properties: - _key: code @@ -28395,128 +41518,33 @@ entities: return_info: custom: false self: true - type: device_enrollment_denial - return_type: device_enrollment_denial - summary: Query for a single device by ID + type: light_theme_color + return_type: light_theme_color + summary: Get light theme branding color. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - BlackListedDeviceData - - DenialAttemptsResponse - tags: - - EnrollmentDenials -- _key: device_events - field_renames: [] - fields: - - _key: changes - additionalProperties: - type: object - api_fieldname: changes - example: [] - readOnly: true - required: false - type: object - x-deprecation: - comment: This field is not used. - end_of_life_at: '2020-01-15T14:55:20+00:00' - issued_at: '2019-01-15T14:55:20+00:00' - links: [] - - _key: created_at - api_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: data - additionalProperties: - type: string - api_fieldname: data - description: Additional data relevant to the event. - example: - campaign_id: '00000000000000000000000000000000' - readOnly: true - required: false - type: object - - _key: date_time - api_fieldname: date_time - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - example: Device record created - readOnly: true - required: false - type: string - - _key: device_id - api_fieldname: device_id - example: '00000000000000000000000000000000' - readOnly: true - required: false - type: string - - _key: event_type - api_fieldname: event_type - description: Event code - example: UPD2_100 - maxLength: 100 - readOnly: true - required: false - type: string - - _key: event_type_category - api_fieldname: event_type_category - description: Category code which groups the event type by a summary category. - example: FAIL_MANIFEST_REJECTED - readOnly: true - required: false - type: string - - _key: event_type_description - api_fieldname: event_type_description - description: Generic description of the event. - example: FAIL - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - example: '00000000000000000000000000000000' - readOnly: false - required: true - type: string - - _key: state_change - api_fieldname: state_change - readOnly: true - required: false - type: boolean - group_id: Devices - methods: - - _key: list - description: 'List all device events for an account. - - - **Example:** - - Following example gets device-events limiting returned results to max 5 events + - _key: update + additional_operations: + - notes: Bulk operation is not appriate for SDK's entity model, this functionality + is covered by the update method. + operation_id: bulkSetLightColors + description: 'Update light theme branding color. - ``` + Note: This endpoint is restricted to administrators. - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?limit=5 \ - -H ''Authorization: Bearer '' + **Example:** ``` - or to get events for certain device filter based on device_id: + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/primary + \ - ``` + -H ''Authorization: Bearer '' \ - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events?device_id= - \ + -H ''content-type: application/json'' \ - -H ''Authorization: Bearer '' + -d ''{ "color": "purple" }'' ```' drop_fields: @@ -28524,478 +41552,413 @@ entities: - etag - type - filter - - data - - has_more - - total_count - - date_time__in - - date_time__nin - - date_time__lte - - date_time__gte - - description__eq - - description__neq - - description__in - - description__nin - - id__eq - - id__neq - - id__in - - id__nin - - device_id__eq - - device_id__neq - - device_id__in - - device_id__nin - - event_type__eq - - event_type__neq - - event_type__in - - event_type__nin - - state_change__eq - - state_change__neq field_renames: [] fields: - - _key: after - api_fieldname: after - description: The ID of the item after which to retrieve the next page. - entity_fieldname: after - example: null - external_param: true - in: query - name: after - parameter_fieldname: after + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color required: false type: string - - _key: include - api_fieldname: include - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false + x-nullable: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id007 + enum_reference: light_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - - _key: limit - api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. - entity_fieldname: limit - example: 1000 - external_param: true - in: query - maximum: 1000 - minimum: 2 - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' - entity_fieldname: order - example: DESC - external_param: true - in: query - name: order - parameter_fieldname: order + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true required: false type: string - foreign_key: - entity: device_events - group: Devices - foreign_key_priority: self - group_id: Devices - method: get - mode: list - operation_id: Device_Event_list - pagination: true - path: /v3/device-events/ + group_id: Branding + method: put + mode: update + operation_id: setLightColor + pagination: false + path: /v3/branding-colors/light/{reference} request_body: json request_content_type: application/json responses: - _key: '200' - description: Request successful. + description: Color has been set successfully. schema: foreign_key: - entity: device_events - group: Devices - pagination: true + entity: subtenant_light_theme_color + group: Branding properties: - - _key: after - api_fieldname: after - entity_fieldname: after - example: null + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color + required: false type: string - - _key: data - api_fieldname: data - entity_fieldname: data - example: '[]' + x-nullable: true + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_color''' + entity_fieldname: object + enum: + - branding_color + external_param: true + in: body + name: object + parameter_fieldname: object + readOnly: true + required: false + schema_param: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true + required: false + type: string + type: object + - _key: '400' + description: Error in input data format. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. items: - foreign_key: - entity: device_events - group: Devices properties: - - _key: changes - additionalProperties: - type: object - example: [] - type: object - x-deprecation: - comment: This field is not used. - end_of_life_at: '2020-01-15T14:55:20+00:00' - issued_at: '2019-01-15T14:55:20+00:00' - links: [] - - _key: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: data - additionalProperties: - type: string - description: Additional data relevant to the event. - example: - campaign_id: '00000000000000000000000000000000' - type: object - - _key: date_time - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: description - example: Device record created - type: string - - _key: device_id - example: '00000000000000000000000000000000' - type: string - - _key: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: event_type - description: Event code - example: UPD2_100 - maxLength: 100 - type: string - - _key: event_type_category - description: Category code which groups the event type by a summary - category. - example: FAIL_MANIFEST_REJECTED - type: string - - _key: event_type_description - description: Generic description of the event. - example: FAIL - type: string - - _key: id - example: '00000000000000000000000000000000' + - _key: message + description: Message describing the error condition. type: string - - _key: object - description: The API resource entity. - example: device-event + - _key: name + description: Name of the field which caused the error. type: string - - _key: state_change - type: boolean required: - - date_time - - id + - name + - message + type: object type: array - - _key: has_more - api_fieldname: has_more - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - entity_fieldname: limit - example: 1000 - type: integer - - _key: object - api_fieldname: object - entity_fieldname: object - example: list + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: order - api_fieldname: order - entity_fieldname: order - example: DESC + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - example: 1 - type: integer - - _key: '400' - description: Bad request. - - _key: '401' - description: Not authenticated. - - _key: '404' - description: Unable to find page. - return_info: - custom: false - self: true - type: device_events - return_type: paginated_response(device_events) - summary: List all device events. - x_deprecation: null - x_filter: - date_time: - - in - - nin - - lte - - gte - description: - - eq - - neq - - in - - nin - device_id: - - eq - - neq - - in - - nin - event_type: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - state_change: - - eq - - neq - - _key: read - description: 'Retrieve a specific device event. - - - **Example:** - - To fetch a specific event you can use the ''id'' field form the ''/v3/device-events''. - Form of ''016c03d40a4e000000000001001003b4'' - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/device-events/ - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - created_at - - changes - - data - - date_time - - description - - device_id - - event_type - - event_type_category - - event_type_description - - state_change - field_renames: [] - fields: - - _key: id - api_fieldname: id - entity_fieldname: id - example: '00000000000000000000000000000000' - in: path - parameter_fieldname: device_event_id - required: true - type: string - group_id: Devices - method: get - mode: read - operation_id: Device_Event_retrieve - pagination: false - parameter_map: - device_event_id: id - path: /v3/device-events/{device_event_id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Retrieved result successfully. + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. schema: - foreign_key: - entity: device_events - group: Devices properties: - - _key: changes - additionalProperties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message type: object - api_fieldname: changes - entity_fieldname: changes - example: [] - type: object - x-deprecation: - comment: This field is not used. - end_of_life_at: '2020-01-15T14:55:20+00:00' - issued_at: '2019-01-15T14:55:20+00:00' - links: [] - - _key: created_at - api_fieldname: created_at - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: data - additionalProperties: - type: string - api_fieldname: data - description: Additional data relevant to the event. - entity_fieldname: data - example: - campaign_id: '00000000000000000000000000000000' - type: object - - _key: date_time - api_fieldname: date_time - entity_fieldname: date_time - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: description - api_fieldname: description - entity_fieldname: description - example: Device record created + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: device_id - api_fieldname: device_id - entity_fieldname: device_id - example: '00000000000000000000000000000000' + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: etag - api_fieldname: etag - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: event_type - api_fieldname: event_type - description: Event code - entity_fieldname: event_type - example: UPD2_100 - maxLength: 100 + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: event_type_category - api_fieldname: event_type_category - description: Category code which groups the event type by a summary category. - entity_fieldname: event_type_category - example: FAIL_MANIFEST_REJECTED + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: event_type_description - api_fieldname: event_type_description - description: Generic description of the event. - entity_fieldname: event_type_description - example: FAIL + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: id - api_fieldname: id - entity_fieldname: id - example: '00000000000000000000000000000000' + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Color not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: The API resource entity. - entity_fieldname: object - example: device-event + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: state_change - api_fieldname: state_change - entity_fieldname: state_change - type: boolean required: - - date_time - - id - - _key: '400' - description: Bad request. - - _key: '401' - description: Not authenticated. - - _key: '404' - description: Unable to find device. + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true - type: device_events - return_type: device_events - summary: Retrieve a device event. + type: light_theme_color + return_type: light_theme_color + summary: Updates light theme branding color. x_deprecation: null x_filter: {} - primary_key_field: id + primary_key_field: reference swagger_models: - - DeviceEventData - - DeviceEventPage + - BrandingColor + - BrandingColorList tags: - - Device directory - events -- _key: device_group + - User interface configuration - colors +- _key: light_theme_image field_renames: [] fields: - - _key: created_at - api_fieldname: created_at - description: The time the campaign was created. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with a number. - Both key and value are limited to 128 characters. Updating this field replaces - existing contents. - example: - key: value - maxProperties: 10 - readOnly: false - required: false - type: object - - _key: description - api_fieldname: description - description: The description of the group. - example: Devices on the factory floor. - maxLength: 2000 + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: light_theme_image_reference_enum + in: path + is_primary_key: true + name: reference readOnly: false required: false type: string - - _key: devices_count - api_fieldname: devices_count - description: The number of devices in this group. - example: 10 + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri readOnly: true required: false - type: integer - - _key: id - api_fieldname: id - description: The group ID. - example: 015c3029f6f7000000000001001000c3 - readOnly: false - required: true - type: string - - _key: name - api_fieldname: name - description: Name of the group. - example: My devices - maxLength: 128 - readOnly: false - required: false type: string - _key: updated_at api_fieldname: updated_at - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' format: date-time readOnly: true required: false type: string - group_id: Devices + group_id: Branding methods: - - _key: add_device - description: Add one device to a group. + - _key: delete + description: 'Revert an account branding image to light theme default. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/clear + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag @@ -29003,42 +41966,164 @@ entities: - filter field_renames: [] fields: - - _key: device_id - api_fieldname: device_id - entity_fieldname: device_id - example: '00000000000000000000000000000000' - external_param: true - in: body - name: device_id - parameter_fieldname: device_id - required: false - schema_param: true - type: string - - _key: id - api_fieldname: device-group-id - description: The ID of the group. - entity_fieldname: id - external_param: false + - _key: reference + _override: true + api_fieldname: reference + description: Name of the branding images (icon or picture). + entity_fieldname: reference + enum: &id008 + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: light_theme_image_reference_enum in: path - name: device-group-id - parameter_fieldname: device-group-id + is_primary_key: true + name: reference required: true type: string - group_id: Devices + group_id: Branding method: post - mode: add_device - operation_id: Group_members_add + mode: delete + operation_id: clearLightImage pagination: false - parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/devices/add/ + path: /v3/branding-images/light/{reference}/clear request_body: json request_content_type: application/json responses: - _key: '204' - description: Success - device added. - - _key: '400' - description: Bad request. + description: Image reverted successfully. + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Unknown image reference. schema: properties: - _key: code @@ -29085,8 +42170,191 @@ entities: - request_id - type type: object + return_info: + custom: false + self: true + type: light_theme_image + return_type: light_theme_image + summary: Revert an image to light theme default. + x_deprecation: null + x_filter: {} + - _key: list + description: 'Retrieve the metadata of all light theme branding images. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - limit + - after + - order + - total_count + - has_more + - data + field_renames: [] + fields: + - _key: reference + _override: true + api_fieldname: reference + entity_fieldname: reference + is_primary_key: true + type: string + foreign_key: + entity: light_theme_image + group: Branding + foreign_key_priority: self + group_id: Branding + method: get + mode: list + operation_id: getAllLightImageData + pagination: true + path: /v3/branding-images/light + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: light_theme_image + group: Branding + pagination: true + properties: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data + items: + foreign_key: + entity: dark_theme_image + group: Branding + properties: + - _key: object + description: 'Entity name: always ''branding_image''' + enum: + - branding_image + readOnly: true + type: string + - _key: reference + _override: true + description: Name of the image. + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + is_primary_key: true + type: string + - _key: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + description: The number of results to return, or equal to `total_count`. + entity_fieldname: limit + example: 50 + format: int32 + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object + enum: + - list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return based on creation time. + Available values: ASC, DESC; by default ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count + type: object - _key: '401' - description: Unauthorized. + description: Authentication failure. schema: properties: - _key: code @@ -29133,8 +42401,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not found. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -29182,158 +42450,236 @@ entities: - type type: object return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Add a device to a group. + custom: false + self: true + type: light_theme_image + return_type: paginated_response(light_theme_image) + summary: Get metadata of all light theme images. x_deprecation: null x_filter: {} - - _key: create - description: Create a group. + - _key: read + description: 'Retrieve metadata for one account light theme branding image. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference} + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter - - id - - devices_count - - created_at + - static_uri - updated_at field_renames: [] fields: - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with a - number. Both key and value are limited to 128 characters. Updating this field - replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - in: body - maxProperties: 10 - name: custom_attributes - parameter_fieldname: custom_attributes - required: false - schema_param: true - type: object - - _key: description - api_fieldname: description - description: The description of the group. - entity_fieldname: description - example: Devices on the factory floor. - in: body - maxLength: 2000 - name: description - parameter_fieldname: description - required: false - schema_param: true - type: string - - _key: name - api_fieldname: name - description: Name of the group. - entity_fieldname: name - example: My devices - in: body - maxLength: 128 - name: name - parameter_fieldname: name - required: false - schema_param: true + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id008 + enum_reference: light_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - group_id: Devices - method: post - mode: create - operation_id: Group_create + group_id: Branding + method: get + mode: read + operation_id: getLightImageData pagination: false - parameter_map: - device-group-id: id - path: /v3/device-groups/ + path: /v3/branding-images/light/{reference} request_body: json request_content_type: application/json responses: - - _key: '201' - description: Created. + - _key: '200' + description: Successful operation. schema: foreign_key: - entity: device_group - group: Devices + entity: subtenant_light_theme_image + group: Branding properties: - - _key: created_at - api_fieldname: created_at - description: The time the campaign was created. - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_image''' + entity_fieldname: object + enum: + - branding_image + readOnly: true type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with - a number. Both key and value are limited to 128 characters. Updating this - field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 10 - type: object - - _key: description - api_fieldname: description - description: The description of the group. - entity_fieldname: description - example: Devices on the factory floor. - maxLength: 2000 + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - - _key: devices_count - api_fieldname: devices_count - description: The number of devices in this group. - entity_fieldname: devices_count - example: 10 - type: integer - - _key: etag - api_fieldname: etag - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' format: date-time + readOnly: true type: string - - _key: id - api_fieldname: id - description: The group ID. - entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: name - api_fieldname: name - description: Name of the group. - entity_fieldname: name - example: My devices - maxLength: 128 + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: 'Entity name: always `device-group`.' - entity_fieldname: object - example: device-group + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated. - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: Bad request. + - _key: '404' + description: Unknown image reference. schema: properties: - _key: code @@ -29380,8 +42726,152 @@ entities: - request_id - type type: object - - _key: '401' - description: Unauthorized. + return_info: + custom: false + self: true + type: light_theme_image + return_type: light_theme_image + summary: Get metadata of a light theme image. + x_deprecation: null + x_filter: {} + - _key: update + additional_operations: + - notes: The multipart request is more generic and better supported by SDKs. + operation_id: uploadLightImage + description: 'Upload a new account branding image as form data in the light theme + in PNG or JPEG format. + + Note: This endpoint is restricted to administrators.' + drop_fields: + - object + - etag + - type + - filter + - static_uri + - updated_at + field_renames: [] + fields: + - _key: image + api_fieldname: image + description: The image in PNG or JPEG format as multipart form data. + entity_fieldname: image + external_param: true + in: stream + name: image + parameter_fieldname: image + required: true + type: file + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id008 + enum_reference: light_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + group_id: Branding + method: post + mode: update + operation_id: uploadLightImageMultipart + pagination: false + path: /v3/branding-images/light/{reference}/upload-multipart + request_body: file + request_content_type: multipart/form-data + responses: + - _key: '201' + description: Image uploaded successfully. + headers: + - _key: Content-Location + description: Location of the image metadata. + type: string + - _key: Location + description: Location of the image binary. + type: string + schema: + foreign_key: + entity: subtenant_light_theme_image + group: Branding + properties: + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_image''' + entity_fieldname: object + enum: + - branding_image + readOnly: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + type: string + type: object + - _key: '400' + description: Error in input data format, for example, image is too large. schema: properties: - _key: code @@ -29428,8 +42918,8 @@ entities: - request_id - type type: object - - _key: '409' - description: Conflict - Group name already exists. + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -29476,48 +42966,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: device_group - return_type: device_group - summary: Create a group. - x_deprecation: null - x_filter: {} - - _key: delete - description: Delete a group. - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: id - api_fieldname: device-group-id - description: The ID of the group. - entity_fieldname: id - external_param: false - in: path - name: device-group-id - parameter_fieldname: device-group-id - required: true - type: string - group_id: Devices - method: delete - mode: delete - operation_id: Group_delete - pagination: false - parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Success - group deleted. - - _key: '401' - description: Unauthorized. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -29565,7 +43015,7 @@ entities: - type type: object - _key: '404' - description: Not Found. + description: Unknown image reference. schema: properties: - _key: code @@ -29615,181 +43065,621 @@ entities: return_info: custom: false self: true - type: device_group - return_type: device_group - summary: Delete a group. + type: light_theme_image + return_type: light_theme_image + summary: Upload a light theme image. x_deprecation: null x_filter: {} - - _key: devices - description: Get a page of devices. + primary_key_field: reference + swagger_models: + - BrandingImage + - BrandingImageList + tags: + - User interface configuration - images +- _key: login_history + field_renames: [] + fields: + - _key: date + api_fieldname: date + description: UTC time RFC3339 for this login attempt. + example: '2018-02-14T17:52:07Z' + format: date-time + readOnly: true + required: false + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + example: 127.0.0.1 + readOnly: true + required: false + type: string + - _key: success + api_fieldname: success + description: Flag indicating whether login attempt was successful or not. + example: true + readOnly: true + required: false + type: boolean + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/41.0.2227.1 Safari/537.36 + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - LoginHistory + tags: [] +- _key: login_profile + field_renames: + - _key: login_profile_type + api_fieldname: type + fields: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + example: fed/user_007 + readOnly: true + required: false + type: string + - _key: id + _override: true + api_fieldname: id + description: ID of the identity provider. + example: 01619571f3c00242ac12000600000000 + readOnly: false + required: false + type: string + - _key: login_profile_type + api_fieldname: type + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: login_profile_type_enum + example: NATIVE + readOnly: true + required: false + type: string + - _key: name + _override: true + api_fieldname: name + description: Name of the identity provider. + example: Pelion + readOnly: false + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: id + swagger_models: + - LoginProfile + tags: [] +- _key: oidc_request + field_renames: [] + fields: + - _key: authorization_endpoint + api_fieldname: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + readOnly: true + required: false + type: string + x-nullable: true + - _key: auto_enrollment + api_fieldname: auto_enrollment + description: For future use. + readOnly: true + required: false + type: boolean + x-nullable: true + - _key: claim_mapping + api_fieldname: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat + class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + readOnly: true + required: false + type: object + x-nullable: true + - _key: client_id + api_fieldname: client_id + description: Client ID needed to authenticate and gain access to identity provider's + API. + readOnly: true + required: false + type: string + x-nullable: true + - _key: client_secret + api_fieldname: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + readOnly: true + required: false + type: string + x-nullable: true + - _key: end_session_endpoint + api_fieldname: end_session_endpoint + description: URL of the provider's end session endpoint. + readOnly: true + required: false + type: string + x-nullable: true + - _key: issuer + api_fieldname: issuer + description: Issuer of the identity provider. + readOnly: true + required: false + type: string + - _key: jwks_uri + api_fieldname: jwks_uri + description: URL of the provider's JSON web key set document. + readOnly: true + required: false + type: string + x-nullable: true + - _key: keys + api_fieldname: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID tokens. + PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + readOnly: true + required: false + type: array + x-nullable: true + - _key: redirect_uri + api_fieldname: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + readOnly: true + required: false + type: string + x-nullable: true + - _key: revocation_endpoint + api_fieldname: revocation_endpoint + description: URL of the provider's token revocation endpoint. + readOnly: true + required: false + type: string + x-nullable: true + - _key: scopes + api_fieldname: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + readOnly: true + required: false + type: string + - _key: token_endpoint + api_fieldname: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + readOnly: true + required: false + type: string + x-nullable: true + - _key: token_request_mode + api_fieldname: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results in + the transmission of clear-text credentials, the client must use the POST mode. + enum: + - POST + - GET + enum_reference: oidc_request_token_mode_enum + readOnly: true + required: false + type: string + - _key: token_response_path + api_fieldname: token_response_path + description: Path to the standard data in the token response. Levels in the JSON + structure must be separated by '.' (dot) characters. + example: oidc.data + readOnly: true + required: false + type: string + - _key: userinfo_endpoint + api_fieldname: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + readOnly: true + required: false + type: string + x-nullable: true + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - OIDCInfo + tags: [] +- _key: oidc_request_claim_mapping + field_renames: [] + fields: + - _key: email + api_fieldname: email + description: Custom claim name for 'email'. + example: email_address + readOnly: true + required: false + type: string + x-nullable: true + - _key: email_verified + api_fieldname: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + readOnly: true + required: false + type: string + x-nullable: true + - _key: family_name + api_fieldname: family_name + description: Custom claim name for 'family_name'. + example: family_name + readOnly: true + required: false + type: string + x-nullable: true + - _key: given_name + api_fieldname: given_name + description: Custom claim name for 'given_name'. + example: given_name + readOnly: true + required: false + type: string + x-nullable: true + - _key: name + api_fieldname: name + description: Custom claim name for 'name'. + example: name + readOnly: true + required: false + type: string + x-nullable: true + - _key: phone_number + api_fieldname: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + readOnly: true + required: false + type: string + x-nullable: true + - _key: sub + api_fieldname: sub + description: Custom claim name for 'sub'. + example: sub + readOnly: true + required: false + type: string + x-nullable: true + - _key: updated_at + api_fieldname: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + readOnly: true + required: false + type: string + x-nullable: true + - _key: updated_at_pattern + api_fieldname: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java SimpleDateFormat + class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + readOnly: true + required: false + type: string + x-nullable: true + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - OIDCClaimMapping + tags: [] +- _key: parent_account + field_renames: [] + fields: + - _key: admin_email + api_fieldname: admin_email + description: The email address of the admin user who is the contact person of + the parent account. + example: info@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + readOnly: true + required: false + type: string + - _key: admin_name + api_fieldname: admin_name + description: The name of the admin user who is the contact person of the parent + account. + example: J. Doe + maxLength: 100 + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: The ID of the parent account. + example: 01619571dad80242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: id + swagger_models: + - ParentAccountInfo + tags: [] +- _key: password_policy + field_renames: [] + fields: + - _key: minimum_length + api_fieldname: minimum_length + description: Minimum length for the password. + example: '8' + maximum: 512 + minimum: 8 + readOnly: true + required: false + type: integer + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - PasswordPolicy + tags: [] +- _key: policy + field_renames: [] + fields: + - _key: action + api_fieldname: action + description: Comma-separated list of actions, empty string represents all actions. + example: GET + readOnly: true + required: false + type: string + - _key: allow + api_fieldname: allow + description: True or false controlling whether an action is allowed or not. + example: true + readOnly: true + required: false + type: boolean + - _key: feature + api_fieldname: feature + description: Feature name corresponding to this policy. + example: update-campaigns + readOnly: true + required: false + type: string + - _key: inherited + api_fieldname: inherited + description: Flag indicating whether this feature is inherited or overwritten + specifically. + example: false + readOnly: true + required: false + type: boolean + - _key: inherited_from + api_fieldname: inherited_from + description: An ID indicating where this policy is inherited from. + example: 016ada3ec2d46665bf66e32e00000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + - _key: inherited_type + api_fieldname: inherited_type + description: Indicates the type of entity this policy is inherited from. + enum: + - account + - template + - tier_template + enum_reference: policy_inherited_type_enum + example: account + readOnly: true + required: false + type: string + - _key: resource + api_fieldname: resource + description: Resource that is protected by this policy. + example: /v3/update-campaign + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - FeaturePolicy + tags: [] +- _key: policy_group + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: true + required: false + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + example: 0 + format: int32 + readOnly: true + required: false + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + example: 0 + format: int32 + readOnly: true + required: false + type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: name + api_fieldname: name + description: The name of the group. + example: Administrators + maxLength: 100 + readOnly: false + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + example: 1 + format: int32 + readOnly: true + required: false + type: integer + group_id: Accounts + methods: + - _key: api_keys + description: 'Retrieve an array of API keys associated with a policy group. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter - - data - - has_more - total_count - - lifecycle_status__eq - - lifecycle_status__neq - - lifecycle_status__in - - lifecycle_status__nin - - operator_suspended__eq - - operator_suspended__neq - - last_operator_suspended_category__eq - - last_operator_suspended_category__neq - - last_operator_suspended_category__in - - last_operator_suspended_category__nin - - last_operator_suspended_updated_at__in - - last_operator_suspended_updated_at__nin - - last_operator_suspended_updated_at__lte - - last_operator_suspended_updated_at__gte - - system_suspended__eq - - system_suspended__neq - - last_system_suspended_category__eq - - last_system_suspended_category__neq - - last_system_suspended_category__in - - last_system_suspended_category__nin - - last_system_suspended_updated_at__in - - last_system_suspended_updated_at__nin - - last_system_suspended_updated_at__lte - - last_system_suspended_updated_at__gte - - account_id__eq - - account_id__neq - - account_id__in - - account_id__nin - - auto_update__eq - - auto_update__neq - - bootstrap_expiration_date__in - - bootstrap_expiration_date__nin - - bootstrap_expiration_date__lte - - bootstrap_expiration_date__gte - - bootstrapped_timestamp__in - - bootstrapped_timestamp__nin - - bootstrapped_timestamp__lte - - bootstrapped_timestamp__gte - - ca_id__eq - - ca_id__neq - - ca_id__in - - ca_id__nin - - connector_expiration_date__in - - connector_expiration_date__nin - - connector_expiration_date__lte - - connector_expiration_date__gte - - created_at__in - - created_at__nin - - created_at__lte - - created_at__gte - - deployed_state__eq - - deployed_state__neq - - deployed_state__in - - deployed_state__nin - - deployment__eq - - deployment__neq - - deployment__in - - deployment__nin - - description__eq - - description__neq - - description__in - - description__nin - - device_class__eq - - device_class__neq - - device_class__in - - device_class__nin - - device_execution_mode__eq - - device_execution_mode__neq - - device_execution_mode__in - - device_execution_mode__nin - - device_key__eq - - device_key__neq - - device_key__in - - device_key__nin - - endpoint_name__eq - - endpoint_name__neq - - endpoint_name__in - - endpoint_name__nin - - endpoint_type__eq - - endpoint_type__neq - - endpoint_type__in - - endpoint_type__nin - - enrolment_list_timestamp__in - - enrolment_list_timestamp__nin - - enrolment_list_timestamp__lte - - enrolment_list_timestamp__gte - - firmware_checksum__eq - - firmware_checksum__neq - - firmware_checksum__in - - firmware_checksum__nin - - host_gateway__eq - - host_gateway__neq - - host_gateway__in - - host_gateway__nin - - id__eq - - id__neq - - id__in - - id__nin - - manifest__eq - - manifest__neq - - manifest__in - - manifest__nin - - manifest_timestamp__in - - manifest_timestamp__nin - - manifest_timestamp__lte - - manifest_timestamp__gte - - mechanism__eq - - mechanism__neq - - mechanism__in - - mechanism__nin - - mechanism_url__eq - - mechanism_url__neq - - mechanism_url__in - - mechanism_url__nin - - name__eq - - name__neq - - name__in - - name__nin - - serial_number__eq - - serial_number__neq - - serial_number__in - - serial_number__nin - - state__eq - - state__neq - - state__in - - state__nin - - updated_at__in - - updated_at__nin - - updated_at__lte - - updated_at__gte - - vendor_id__eq - - vendor_id__neq - - vendor_id__in - - vendor_id__nin + - has_more + - data field_renames: [] fields: - _key: after api_fieldname: after - description: The ID of the item after which to retrieve the next page. + description: The entity ID to retrieve after the given one. entity_fieldname: after - example: '01631667477600000000000100100374' + example: 01619571f3c00242ac12000600000000 external_param: true in: query name: after parameter_fieldname: after + pattern: '[a-f0-9]{32}' required: false type: string - _key: id - api_fieldname: device-group-id + api_fieldname: group_id + description: The ID of the group. entity_fieldname: id external_param: false in: path - name: device-group-id - parameter_fieldname: device-group-id + name: group_id + parameter_fieldname: group_id required: true type: string - _key: include api_fieldname: include - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' + description: 'Comma-separated additional data to return. Currently supported: + total_count.' entity_fieldname: include external_param: true in: query @@ -29799,23 +43689,27 @@ entities: type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + default: 50 + description: The number of results to return (2-1000). Default 50. entity_fieldname: limit example: 50 external_param: true + format: int32 in: query - maximum: 1000 - minimum: 2 name: limit parameter_fieldname: limit required: false type: integer - _key: order api_fieldname: order - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order - example: DESC + enum: + - ASC + - DESC + enum_reference: policy_group_order_enum external_param: true in: query name: order @@ -29823,312 +43717,158 @@ entities: required: false type: string foreign_key: - entity: device - group: Devices - group_id: Devices + entity: api_key + group_id: Accounts method: get - mode: devices - operation_id: Group_members_retrieve + mode: api_keys + operation_id: getApiKeysOfGroup pagination: true parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/devices/ + group_id: id + path: /v3/policy-groups/{group_id}/api-keys request_body: json request_content_type: application/json responses: - _key: '200' - description: Ok. + description: Successful operation. schema: foreign_key: - entity: device - group: Devices + entity: api_key + group: Accounts pagination: true properties: - _key: after api_fieldname: after - description: The ID of the item after which to retrieve the next page. + description: The entity ID to retrieve after the given one. entity_fieldname: after - example: '01631667477600000000000100100374' + example: 01619571f3c00242ac12000600000000 external_param: true in: query name: after parameter_fieldname: after + pattern: '[a-f0-9]{32}' required: false type: string - _key: data api_fieldname: data + description: A list of entities. entity_fieldname: data items: - - _key: foreign_key - entity: device - group: Devices - - _key: properties - account_id: - description: The ID of the associated account. - example: '00000000000000000000000000000000' - type: string - auto_update: - description: 'DEPRECATED: Mark this device for automatic firmware update.' - type: boolean - bootstrap_expiration_date: - description: The expiration date of the certificate used to connect - to bootstrap server. - format: date - type: string - x-nullable: true - bootstrapped_timestamp: - description: The timestamp of the device's most recent bootstrap process. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - ca_id: - description: The certificate issuer's ID. - example: '00000000000000000000000000000000' - maxLength: 500 - type: string - connector_expiration_date: - description: The expiration date of the certificate used to connect - to LwM2M server. - format: date - type: string - x-nullable: true - created_at: - description: The timestamp of when the device was created in the device - directory. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - custom_attributes: - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to five custom key-value attributes. Note that keys - cannot begin with a number. Both keys and values are limited to 128 - characters. Updating this field replaces existing contents. - example: - key: value - maxProperties: 5 - type: object - deployed_state: - description: 'DEPRECATED: The state of the device''s deployment.' - enum: - - development - - production - type: string - deployment: - description: 'DEPRECATED: The last deployment used on the device.' - example: '' - type: string - description: - description: The description of the device. - example: description - maxLength: 2000 - type: string - device_class: - description: An ID representing the model and hardware revision of the - device. - example: '' - maxLength: 32 - type: string - device_execution_mode: - default: 0 - description: "The execution mode from the certificate of the device.\ - \ Defaults to inheriting from host_gateway device.\nPermitted values:\n\ - \ - 0 - Unspecified execution mode (default if host_gateway invalid\ - \ or not set). The device firmware uses a certificate that is not\ - \ identified as a developer or production certificate.\n - 1 - Development\ - \ device. The device firmware uses a developer certificate to communicate\ - \ with Device Management.\n - 5 - Production device. The device firmware\ - \ uses a factory-generated certificate to communicate with Device\ - \ Management." - enum: - - 0 - - 1 - - 5 - example: 0 - type: integer - device_key: - description: The fingerprint of the device certificate. - example: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 - maxLength: 512 - type: string - endpoint_name: - description: The endpoint name given to the device. - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - type: string - endpoint_type: - description: The endpoint type of the device. For example, the device - is a gateway. - example: '' - maxLength: 64 - type: string - enrolment_list_timestamp: - description: The claim date/time. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - etag: - description: The entity instance signature. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - firmware_checksum: - description: The SHA256 checksum of the current firmware image. - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - groups: - description: An array containing an ID of each group this device belongs - to. - items: - example: '00000000000000000000000000000000' - type: string - type: array - host_gateway: - description: The ID of the host gateway, if appropriate. - example: '' - type: string - id: - description: The ID of the device. The device ID is used across all - Device Management APIs. - example: '00000000000000000000000000000000' - type: string - issuer_fingerprint: - description: SHA256 fingerprint of the certificate used to validate - the signature of the device certificate. - example: C42EDEFC75871E4CE2146FCDA67D03DDA05CC26FDF93B17B55F42C1EADFDC322 - pattern: '[A-Fa-f0-9]{64}' - type: string - x-nullable: true - last_operator_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' - type: string - last_operator_suspended_description: - description: The most recent description why the device was suspended - or returned to service. - example: Suspended for maintenance. - maxLength: 2000 - type: string - last_operator_suspended_updated_at: - description: The timestamp of the most recent suspension activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - last_system_suspended_category: - description: The reference of the block category. - example: maintenance - pattern: '[a-f0-9_]{32}' - type: string - last_system_suspended_description: - description: The most recent description of why the device was blocked - or unblocked by the system. - example: A certificate in the device's certificate chain was blacklisted - by the system. - maxLength: 2000 - type: string - last_system_suspended_updated_at: - description: The timestamp of the most recent system block activity. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - lifecycle_status: - description: The lifecycle status of the device. - enum: - - enabled - - blocked - example: enabled - type: string - manifest: - description: 'DEPRECATED: The URL for the current device manifest.' - example: '' + description: Represents an API key in Device Management. + foreign_key: + entity: api_key + group: Accounts + properties: + - _key: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - manifest_timestamp: - description: The timestamp of the current manifest version. - example: '2017-05-22T12:37:55.576563Z' + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' format: date-time type: string - mechanism: - description: The ID of the channel used to communicate with the device. - enum: - - connector - - direct + - _key: creation_time + description: The timestamp of the API key creation in the storage, in + milliseconds. + example: 1518630727683 + format: int64 + type: integer + - _key: etag + description: API resource entity version. + example: '1' type: string - mechanism_url: - description: The address of the connector to use. - example: '' + - _key: groups + description: A list of group IDs this API key belongs to. + items: + type: string + type: array + - _key: id + description: The ID of the API key. + example: 01619571f7020242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - name: - description: The name of the device. - example: 00000000-0000-0000-0000-000000000000 - maxLength: 128 + - _key: key + description: The API key. + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 type: string - object: - description: The API resource entity. - example: device + - _key: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + example: 1518630727688 + format: int64 + type: integer + - _key: name + description: The display name for the API key. + example: API key gorgon + maxLength: 100 type: string - operator_suspended: - description: Is the device suspended by the operator? - type: boolean - serial_number: - description: The serial number of the device. - example: 00000000-0000-0000-0000-000000000000 + - _key: object + description: 'Entity name: always ''api-key''' + enum: + - api-key type: string - state: - description: The current state of the device. + - _key: owner + description: The owner of this API key, who is the creator by default. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: status + description: The status of the API key. enum: - - unenrolled - - cloud_enrolling - - bootstrapped - - registered - - deregistered + - ACTIVE + - INACTIVE + example: ACTIVE type: string - system_suspended: - description: Is the device suspended by the system? - type: boolean - updated_at: - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' format: date-time type: string - vendor_id: - description: The device vendor ID. - example: 00000000-0000-0000-0000-000000000000 - type: string + required: + - etag + - id + - key + - name + - object + type: object type: array - _key: has_more api_fieldname: has_more - description: Are there more results available. + description: Flag indicating whether there are more results. entity_fieldname: has_more example: false type: boolean - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. + default: 50 + description: The number of results to return (2-1000). Default 50. entity_fieldname: limit example: 50 external_param: true + format: int32 in: query - maximum: 1000 - minimum: 2 name: limit parameter_fieldname: limit required: false type: integer - _key: object api_fieldname: object - description: The type of this API object is a "list". + description: 'Entity name: always `list`.' entity_fieldname: object - example: list + enum: + - list type: string - _key: order api_fieldname: order - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order - example: DESC + enum: + - ASC + - DESC + enum_reference: account_order_enum external_param: true in: query name: order @@ -30137,12 +43877,20 @@ entities: type: string - _key: total_count api_fieldname: total_count + description: The total number of records, if requested. entity_fieldname: total_count - example: 1 - format: integer + example: 20 + format: int32 type: integer - - _key: '400' - description: Bad request. + required: + - data + - has_more + - limit + - object + - total_count + type: object + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -30189,8 +43937,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Unauthorized. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -30238,7 +43986,7 @@ entities: - type type: object - _key: '404' - description: Not found. + description: A group with that ID does not exist. schema: properties: - _key: code @@ -30288,384 +44036,288 @@ entities: return_info: custom: false self: false - type: device - return_type: paginated_response(device) - summary: Get a page of devices. - x_deprecation: null - x_filter: - account_id: - - eq - - neq - - in - - nin - auto_update: - - eq - - neq - bootstrap_expiration_date: - - in - - nin - - lte - - gte - bootstrapped_timestamp: - - in - - nin - - lte - - gte - ca_id: - - eq - - neq - - in - - nin - connector_expiration_date: - - in - - nin - - lte - - gte - created_at: - - in - - nin - - lte - - gte - deployed_state: - - eq - - neq - - in - - nin - deployment: - - eq - - neq - - in - - nin - description: - - eq - - neq - - in - - nin - device_class: - - eq - - neq - - in - - nin - device_execution_mode: - - eq - - neq - - in - - nin - device_key: - - eq - - neq - - in - - nin - endpoint_name: - - eq - - neq - - in - - nin - endpoint_type: - - eq - - neq - - in - - nin - enrolment_list_timestamp: - - in - - nin - - lte - - gte - firmware_checksum: - - eq - - neq - - in - - nin - host_gateway: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - last_operator_suspended_category: - - eq - - neq - - in - - nin - last_operator_suspended_updated_at: - - in - - nin - - lte - - gte - last_system_suspended_category: - - eq - - neq - - in - - nin - last_system_suspended_updated_at: - - in - - nin - - lte - - gte - lifecycle_status: - - eq - - neq - - in - - nin - manifest: - - eq - - neq - - in - - nin - manifest_timestamp: - - in - - nin - - lte - - gte - mechanism: - - eq - - neq - - in - - nin - mechanism_url: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - operator_suspended: - - eq - - neq - serial_number: - - eq - - neq - - in - - nin - state: - - eq - - neq - - in - - nin - system_suspended: - - eq - - neq - updated_at: - - in - - nin - - lte - - gte - vendor_id: - - eq - - neq - - in - - nin - - _key: list - description: List all groups. + type: api_key + return_type: paginated_response(api_key) + summary: Get the API keys of a policy group. + x_deprecation: + comment: This endpoint is deprecated, GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/applications + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: create + description: 'Create a new group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' -d ''{"name": "MyGroup1"}'' + + ```' drop_fields: - object - etag - type - filter - - data - - has_more - - total_count - - id__eq - - id__neq - - id__in - - id__nin - - devices_count__eq - - devices_count__neq - - devices_count__in - - devices_count__nin - - devices_count__lte - - devices_count__gte - - name__eq - - name__neq - - name__in - - name__nin - - created_at__in - - created_at__nin - - created_at__lte - - created_at__gte - - updated_at__in - - updated_at__nin - - updated_at__lte - - updated_at__gte + - id + - created_at + - updated_at + - account_id + - user_count + - application_count + - apikey_count field_renames: [] fields: - - _key: after - api_fieldname: after - description: The ID of the item after which to retrieve the next page. - entity_fieldname: after - example: '01631667477600000000000100100374' - external_param: true - in: query - name: after - parameter_fieldname: after - required: false - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated list of data fields to return. Currently supported: - `total_count`.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. - entity_fieldname: limit - example: 50 - external_param: true - in: query - maximum: 1000 - minimum: 2 - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - description: 'Record order. Acceptable values: ASC, DESC. Default: ASC.' - entity_fieldname: order - example: DESC + - _key: members + api_fieldname: members + description: Represents arrays of user and API key IDs. + entity_fieldname: members external_param: true - in: query - name: order - parameter_fieldname: order + in: body + name: members + parameter_fieldname: members + properties: + - _key: apikeys + description: An array of API key IDs. + items: + type: string + type: array + x-deprecation: + comment: This field is deprecated, use 'applications' + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: applications + description: An array of applicationIDs. + items: + type: string + type: array + - _key: users + description: An array of user IDs. + items: + type: string + type: array required: false + schema_param: true + type: object + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + in: body + maxLength: 100 + parameter_fieldname: name + required: true type: string - foreign_key: - entity: device_group - group: Devices - foreign_key_priority: self - group_id: Devices - method: get - mode: list - operation_id: Group_list - pagination: true + group_id: Accounts + method: post + mode: create + operation_id: createGroup + pagination: false parameter_map: - device-group-id: id - path: /v3/device-groups/ + group_id: id + path: /v3/policy-groups request_body: json request_content_type: application/json responses: - - _key: '200' - description: Ok. + - _key: '201' + description: New entity created. + schema: + description: This object contains basic information about groups. + foreign_key: + entity: subtenant_policy_group + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + entity_fieldname: apikey_count + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + entity_fieldname: id + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `group`.' + entity_fieldname: object + enum: + - group + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + entity_fieldname: user_count + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count + type: object + - _key: '400' + description: Error in input data, for example, invalid group name. schema: - foreign_key: - entity: device_group - group: Devices - pagination: true properties: - - _key: after - api_fieldname: after - description: An offset token for current page. - entity_fieldname: after - example: '01631667477600000000000100100374' - type: string - - _key: data - api_fieldname: data - entity_fieldname: data + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. items: - foreign_key: - entity: device_group - group: Devices properties: - - _key: created_at - description: The time the campaign was created. - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - description: Up to ten custom key-value attributes. Keys cannot begin - with a number. Both key and value are limited to 128 characters. Updating - this field replaces existing contents. - example: - key: value - maxProperties: 10 - type: object - - _key: description - description: The description of the group. - example: Devices on the factory floor. - maxLength: 2000 - type: string - - _key: devices_count - description: The number of devices in this group. - example: 10 - type: integer - - _key: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - description: The group ID. - example: 015c3029f6f7000000000001001000c3 + - _key: message + description: Message describing the error condition. type: string - _key: name - description: Name of the group. - example: My devices - maxLength: 128 + description: Name of the field which caused the error. type: string - - _key: object - description: 'Entity name: always `device-group`.' - example: device-group + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - - _key: updated_at - description: The time the object was updated. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: name + description: Name of the field which caused the error. type: string + required: + - name + - message type: object type: array - - _key: has_more - api_fieldname: has_more - description: More results are available. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: How many objects to retrieve in the page (2-1000). Limit values - outside of this range are set to the closest limit. - entity_fieldname: limit - example: 50 - maximum: 1000 - minimum: 2 - type: integer + - _key: message + description: A human readable informative explanation + example: Validation error + type: string - _key: object - api_fieldname: object - description: The type of this API object is 'list'. - entity_fieldname: object - example: list + description: Entity name, always `error`. + enum: + - error type: string - - _key: order - api_fieldname: order - description: Record order based on creation time. - entity_fieldname: order - example: DESC + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - example: 1 - format: integer - type: integer + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '401' - description: Unauthorized. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -30712,8 +44364,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not Found. + - _key: '409' + description: A group with that name already exists. schema: properties: - _key: code @@ -30763,197 +44415,452 @@ entities: return_info: custom: false self: true - type: device_group - return_type: paginated_response(device_group) - summary: List all groups. + type: policy_group + return_type: policy_group + summary: Create a new group. x_deprecation: null - x_filter: - created_at: - - in - - nin - - lte - - gte - devices_count: - - eq - - neq - - in - - nin - - lte - - gte - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - updated_at: - - in - - nin - - lte - - gte - - _key: read - description: Get a group. + x_filter: {} + - _key: delete + description: 'Delete a group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter - - name - - description - - custom_attributes - - devices_count - - created_at - - updated_at field_renames: [] fields: - _key: id - api_fieldname: id - description: The group ID. + api_fieldname: group_id + description: The ID of the group to delete. entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 + external_param: false in: path - parameter_fieldname: device-group-id + name: group_id + parameter_fieldname: group_id required: true type: string - group_id: Devices - method: get - mode: read - operation_id: Group_retrieve + group_id: Accounts + method: delete + mode: delete + operation_id: deleteGroup pagination: false parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/ + group_id: id + path: /v3/policy-groups/{group_id} request_body: json request_content_type: application/json responses: - - _key: '200' - description: Ok. + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. schema: - foreign_key: - entity: device_group - group: Devices properties: - - _key: created_at - api_fieldname: created_at - description: The time the campaign was created. - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with - a number. Both key and value are limited to 128 characters. Updating this - field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 10 - type: object - - _key: description - api_fieldname: description - description: The description of the group. - entity_fieldname: description - example: Devices on the factory floor. - maxLength: 2000 + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: devices_count - api_fieldname: devices_count - description: The number of devices in this group. - entity_fieldname: devices_count - example: 10 + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden, or Administrators group cannot be removed. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 type: integer - - _key: etag - api_fieldname: etag - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: id - api_fieldname: id - description: The group ID. - entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: name - api_fieldname: name - description: Name of the group. - entity_fieldname: name - example: My devices - maxLength: 128 + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: A group with that ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: 'Entity name: always `device-group`.' - entity_fieldname: object - example: device-group + description: Entity name, always `error`. + enum: + - error type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated. - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string + required: + - code + - message + - object + - request_id + - type type: object - - _key: '400' - description: Bad request. + return_info: + custom: false + self: true + type: policy_group + return_type: policy_group + summary: Delete a group. + x_deprecation: null + x_filter: {} + - _key: list + description: 'Retrieve an array of policy groups. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - total_count + - has_more + - data + - name__eq + field_renames: [] + fields: + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: policy_group_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: policy_group + group: Accounts + foreign_key_priority: self + group_id: Accounts + method: get + mode: list + operation_id: getAllGroups + pagination: true + parameter_map: + group_id: id + path: /v3/policy-groups + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. schema: + foreign_key: + entity: policy_group + group: Accounts + pagination: true properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data items: + description: This object contains basic information about groups. + foreign_key: + entity: subtenant_policy_group + group: Accounts properties: - - _key: message - description: Message describing the error condition. + - _key: account_id + description: The ID of the account this group belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + description: The number of API keys in this group. + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: The ID of the group. + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: name - description: Name of the field which caused the error. + description: The name of the group. + example: Administrators + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always `group`.' + enum: + - group + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time type: string + - _key: user_count + description: The number of users in this group. + example: 1 + format: int32 + type: integer required: + - account_id + - apikey_count + - etag + - id - name - - message + - object + - user_count type: object type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer - _key: object - description: Entity name, always `error`. + api_fieldname: object + description: 'Entity name: always `list`.' + entity_fieldname: object enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - list type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: subtenant_api_key_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer required: - - code - - message + - data + - has_more + - limit - object - - request_id - - type + - total_count type: object - _key: '401' - description: Unauthorized. + description: Authentication failure. schema: properties: - _key: code @@ -31000,8 +44907,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not Found. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -31051,56 +44958,155 @@ entities: return_info: custom: false self: true - type: device_group - return_type: device_group - summary: Get a group. + type: policy_group + return_type: paginated_response(policy_group) + summary: Get policy groups. x_deprecation: null - x_filter: {} - - _key: remove_device - description: Remove one device from a group. + x_filter: + name: + - eq + - _key: read + description: 'Retrieve a policy group. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter + - created_at + - updated_at + - account_id + - name + - user_count + - application_count + - apikey_count field_renames: [] fields: - - _key: device_id - api_fieldname: device_id - entity_fieldname: device_id - example: '00000000000000000000000000000000' - external_param: true - in: body - name: device_id - parameter_fieldname: device_id - required: false - schema_param: true - type: string - _key: id - api_fieldname: device-group-id + api_fieldname: id description: The ID of the group. entity_fieldname: id - external_param: false + example: 01619571dec00242ac12000600000000 in: path - name: device-group-id - parameter_fieldname: device-group-id + parameter_fieldname: group_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Devices - method: post - mode: remove_device - operation_id: Group_members_remove + group_id: Accounts + method: get + mode: read + operation_id: getGroupSummary pagination: false parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/devices/remove/ + group_id: id + path: /v3/policy-groups/{group_id} request_body: json request_content_type: application/json responses: - - _key: '204' - description: Success - device removed. - - _key: '400' - description: Bad request. + - _key: '200' + description: Successful operation. + schema: + description: This object contains basic information about groups. + foreign_key: + entity: subtenant_policy_group + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + entity_fieldname: apikey_count + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + entity_fieldname: id + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + maxLength: 100 + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `group`.' + entity_fieldname: object + enum: + - group + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + entity_fieldname: user_count + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count + type: object + - _key: '401' + description: Authentication failure. schema: properties: - _key: code @@ -31147,8 +45153,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Unauthorized. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -31196,7 +45202,7 @@ entities: - type type: object - _key: '404' - description: Not found. + description: A group with that ID does not exist. schema: properties: - _key: code @@ -31244,166 +45250,170 @@ entities: - type type: object return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Remove a device from a group. + custom: false + self: true + type: policy_group + return_type: policy_group + summary: Get a policy group. x_deprecation: null x_filter: {} - _key: update - description: Modify the attributes of a group. + description: 'Update a group name. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestGroup2"}'' + + ```' drop_fields: - object - etag - type - filter - - devices_count - created_at - updated_at + - account_id + - user_count + - application_count + - apikey_count field_renames: [] fields: - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with a - number. Both key and value are limited to 128 characters. Updating this field - replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - in: body - maxProperties: 10 - name: custom_attributes - parameter_fieldname: custom_attributes - required: false - schema_param: true - type: object - - _key: description - api_fieldname: description - description: The description of the group. - entity_fieldname: description - example: Devices on the factory floor. - in: body - maxLength: 2000 - name: description - parameter_fieldname: description - required: false - schema_param: true - type: string - _key: id api_fieldname: id - description: The group ID. + description: The ID of the group. entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 + example: 01619571dec00242ac12000600000000 in: path - parameter_fieldname: device-group-id + parameter_fieldname: group_id + pattern: '[a-f0-9]{32}' required: true type: string - _key: name api_fieldname: name - description: Name of the group. + description: The name of the group. entity_fieldname: name - example: My devices + example: Administrators in: body - maxLength: 128 - name: name + maxLength: 100 parameter_fieldname: name - required: false - schema_param: true + required: true type: string - group_id: Devices + group_id: Accounts method: put mode: update - operation_id: Group_update + operation_id: updateGroupName pagination: false parameter_map: - device-group-id: id - path: /v3/device-groups/{device-group-id}/ + group_id: id + path: /v3/policy-groups/{group_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Ok. + description: Successful operation. schema: + description: This object contains basic information about groups. foreign_key: - entity: device_group - group: Devices + entity: subtenant_policy_group + group: Accounts properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + entity_fieldname: apikey_count + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer - _key: created_at api_fieldname: created_at - description: The time the campaign was created. + description: Creation UTC time RFC3339. entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' + example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: custom_attributes - additionalProperties: - maxLength: 128 - pattern: ^[A-Za-z].* - type: string - api_fieldname: custom_attributes - description: Up to ten custom key-value attributes. Keys cannot begin with - a number. Both key and value are limited to 128 characters. Updating this - field replaces existing contents. - entity_fieldname: custom_attributes - example: - key: value - maxProperties: 10 - type: object - - _key: description - api_fieldname: description - description: The description of the group. - entity_fieldname: description - example: Devices on the factory floor. - maxLength: 2000 - type: string - - _key: devices_count - api_fieldname: devices_count - description: The number of devices in this group. - entity_fieldname: devices_count - example: 10 - type: integer - _key: etag api_fieldname: etag + description: API resource entity version. entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time + example: '1' type: string - _key: id api_fieldname: id - description: The group ID. + description: The ID of the group. entity_fieldname: id - example: 015c3029f6f7000000000001001000c3 + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - _key: name api_fieldname: name - description: Name of the group. + description: The name of the group. entity_fieldname: name - example: My devices - maxLength: 128 + example: Administrators + maxLength: 100 type: string - _key: object api_fieldname: object - description: 'Entity name: always `device-group`.' + description: 'Entity name: always `group`.' entity_fieldname: object - example: device-group + enum: + - group type: string - _key: updated_at api_fieldname: updated_at - description: The time the object was updated. + description: Last update UTC time RFC3339. entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' + example: '2018-02-14T15:24:14Z' format: date-time type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + entity_fieldname: user_count + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count type: object - _key: '400' - description: Bad request. + description: Error in input data, for example, the group name is too long. schema: properties: - _key: code @@ -31451,7 +45461,7 @@ entities: - type type: object - _key: '401' - description: Unauthorized. + description: Authentication failure. schema: properties: - _key: code @@ -31498,8 +45508,8 @@ entities: - request_id - type type: object - - _key: '404' - description: Not Found. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -31546,359 +45556,117 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: device_group - return_type: device_group - summary: Modify the attributes of a group. - x_deprecation: null - x_filter: {} - primary_key_field: id - swagger_models: - - DeviceGroup - - DeviceGroupManipulation - - DeviceGroupPage - - DevicePage - tags: - - Device directory - groups -- _key: firmware_image - field_renames: - - _key: datafile_url - api_fieldname: datafile - fields: - - _key: created_at - api_fieldname: created_at - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: datafile_checksum - api_fieldname: datafile_checksum - description: The checksum (sha256) generated for the datafile - example: '0000000000000000000000000000000000000000000000000000000000000000' - readOnly: true - required: false - type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - format: int64 - readOnly: true - required: false - type: integer - - _key: datafile_url - api_fieldname: datafile - description: The firmware image file URL - example: http://example.com/00000000000000000000000000000000 - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - description: The description of the object - example: '' - maxLength: 2000 - readOnly: false - required: false - type: string - - _key: id - api_fieldname: id - description: The firmware image ID - example: '00000000000000000000000000000000' - readOnly: false - required: true - type: string - - _key: name - api_fieldname: name - description: The firmware image name - example: '' - maxLength: 128 - readOnly: false - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Device_Update - methods: - - _key: create - description: Create a firmware image. - drop_fields: - - object - - etag - - type - - filter - - created_at - - datafile_checksum - - datafile_size - - id - - updated_at - - datafile_url - field_renames: - - _key: datafile_url - api_fieldname: datafile - fields: - - _key: description - api_fieldname: description - description: The description of the object - entity_fieldname: description - example: '' - in: stream - maxLength: 2000 - parameter_fieldname: description - required: false - type: string - - _key: firmware_image_file - api_fieldname: datafile - description: The firmware image file to upload - entity_fieldname: firmware_image_file - external_param: true - in: stream - name: datafile - parameter_fieldname: datafile - required: true - type: file - - _key: name - api_fieldname: name - description: The firmware image name - entity_fieldname: name - example: '' - in: stream - maxLength: 128 - parameter_fieldname: name - required: false - type: string - group_id: Device_Update - method: post - mode: create - notes: This is not a standard create method as it uploads a file which creates - an entity which contains URIs to the uploaded file. - operation_id: Firmware_Image_create - pagination: false - parameter_map: - datafile: firmware_image_file - image_id: id - path: /v3/firmware-images/ - request_body: file - request_content_type: multipart/form-data - responses: - - _key: '201' - description: Firmware image created. The API gateway enforces the account-specific - file size. + - _key: '404' + description: A group with that ID does not exist. schema: - foreign_key: - entity: firmware_image - group: Device_Update properties: - - _key: created_at - api_fieldname: created_at - description: The time the object was created - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: datafile - api_fieldname: datafile - description: The firmware image file URL - entity_fieldname: datafile_url - example: http://example.com/00000000000000000000000000000000 - type: string - - _key: datafile_checksum - api_fieldname: datafile_checksum - description: The checksum (sha256) generated for the datafile - entity_fieldname: datafile_checksum - example: '0000000000000000000000000000000000000000000000000000000000000000' - type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - entity_fieldname: datafile_size - format: int64 + - _key: code + description: HTTP response code + example: 400 + format: int32 type: integer - - _key: description - api_fieldname: description - description: The description of the object - entity_fieldname: description - example: '' - maxLength: 2000 - type: string - - _key: etag - api_fieldname: etag - description: The entity instance signature - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - api_fieldname: id - description: The firmware image ID - entity_fieldname: id - example: '00000000000000000000000000000000' - type: string - - _key: name - api_fieldname: name - description: The firmware image name - entity_fieldname: name - example: '' - maxLength: 128 + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: The API resource entity - entity_fieldname: object - example: firmware-image + description: Entity name, always `error`. + enum: + - error type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - created_at - - datafile - - datafile_checksum - - description - - etag - - id - - name + - code + - message - object - - updated_at - - _key: '400' - description: Cannot validate the data used to create the firmware image. - - _key: '401' - description: Not authenticated - - _key: '403' - description: Forbidden - - _key: '413' - description: Firmware image too large. - return_info: - custom: false - self: true - type: firmware_image - return_type: firmware_image - summary: Create an image - unaggregated: true - x_deprecation: null - x_filter: {} - - _key: delete - description: Delete a firmware image. - drop_fields: - - object - - etag - - type - - filter - field_renames: - - _key: datafile_url - api_fieldname: datafile - fields: - - _key: id - api_fieldname: image_id - description: The firmware image ID - entity_fieldname: id - external_param: false - in: path - name: image_id - parameter_fieldname: image_id - required: true - type: string - group_id: Device_Update - method: delete - mode: delete - operation_id: Firmware_Image_destroy - pagination: false - parameter_map: - image_id: id - path: /v3/firmware-images/{image_id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Firmware image deleted - - _key: '400' - description: Bad Request - - _key: '401' - description: Not authenticated - - _key: '404' - description: Firmware image not found + - request_id + - type + type: object return_info: custom: false self: true - type: firmware_image - return_type: firmware_image - summary: Delete an image + type: policy_group + return_type: policy_group + summary: Update the group name. x_deprecation: null x_filter: {} - - _key: list - description: List all firmware images. + - _key: users + description: 'Retrieve an array of users associated with a policy group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users + \ + + -H ''Authorization: Bearer '' + + ```' drop_fields: - object - etag - type - filter - - data - - has_more - total_count - - created_at__in - - created_at__nin - - created_at__lte - - created_at__gte - - datafile__eq - - datafile__neq - - datafile__in - - datafile__nin - - datafile_checksum__eq - - datafile_checksum__neq - - datafile_checksum__in - - datafile_checksum__nin - - datafile_size__eq - - datafile_size__neq - - datafile_size__in - - datafile_size__nin - - description__eq - - description__neq - - description__in - - description__nin - - id__eq - - id__neq - - id__in - - id__nin - - name__eq - - name__neq - - name__in - - name__nin - - updated_at__in - - updated_at__nin - - updated_at__lte - - updated_at__gte - field_renames: - - _key: datafile_url - api_fieldname: datafile + - has_more + - data + - status__eq + - status__in + - status__nin + field_renames: [] fields: - _key: after api_fieldname: after - description: The ID of the the item after which to retrieve the next page + description: The entity ID to retrieve after the given one. entity_fieldname: after - example: null + example: 01619571f3c00242ac12000600000000 external_param: true in: query name: after parameter_fieldname: after + pattern: '[a-f0-9]{32}' required: false type: string + - _key: id + api_fieldname: group_id + description: The ID of the group. + entity_fieldname: id + external_param: false + in: path + name: group_id + parameter_fieldname: group_id + required: true + type: string - _key: include api_fieldname: include - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + description: 'Comma-separated additional data to return. Currently supported: + total_count.' entity_fieldname: include external_param: true in: query @@ -31908,28 +45676,27 @@ entities: type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to the - closest limit. + default: 50 + description: The number of results to return (2-1000). Default 50. entity_fieldname: limit + example: 50 external_param: true format: int32 in: query - maximum: 1000 - minimum: 2 name: limit parameter_fieldname: limit required: false type: integer - _key: order api_fieldname: order - description: ASC or DESC + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC - DESC - enum_reference: firmware_image_order_enum - example: ASC + enum_reference: policy_group_order_enum external_param: true in: query name: order @@ -31937,730 +45704,819 @@ entities: required: false type: string foreign_key: - entity: firmware_image - group: Device_Update - foreign_key_priority: self - group_id: Device_Update + entity: user + group_id: Accounts method: get - mode: list - operation_id: Firmware_Image_list + mode: users + operation_id: getUsersOfGroup pagination: true parameter_map: - image_id: id - path: /v3/firmware-images/ + group_id: id + path: /v3/policy-groups/{group_id}/users request_body: json request_content_type: application/json responses: - _key: '200' - description: Request successful + description: Successful operation. schema: foreign_key: - entity: firmware_image - group: Device_Update + entity: user + group: Accounts pagination: true properties: - _key: after api_fieldname: after + description: The entity ID to retrieve after the given one. entity_fieldname: after - example: null + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false type: string - _key: data api_fieldname: data + description: A list of entities. entity_fieldname: data - example: '[]' items: + description: Represents a user in Device Management. foreign_key: - entity: firmware_image - group: Device_Update + entity: user + group: Accounts properties: + - _key: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: active_sessions + description: List of active user sessions. + items: + description: Represents an active user session. + foreign_key: + entity: active_session + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The UUID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + entity_fieldname: ip_address + example: 127.0.0.1 + type: string + - _key: login_time + api_fieldname: login_time + description: The login time of the user. + entity_fieldname: login_time + example: '2018-02-14T17:52:07Z' + format: date-time + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always ''user-session''' + entity_fieldname: object + enum: + - user-session + type: string + - _key: reference_token + api_fieldname: reference_token + description: The reference token. + entity_fieldname: reference_token + example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk + type: string + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + entity_fieldname: user_agent + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + type: string + required: + - account_id + - ip_address + - login_time + - object + - reference_token + - user_agent + type: object + type: array + - _key: address + description: Address. + example: 110 Fulbourn Rd, Cambridge, United Kingdom + type: string + x-nullable: true - _key: created_at - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: datafile - description: The firmware image file URL - example: http://example.com/00000000000000000000000000000000 + - _key: creation_time + description: A timestamp of the user creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + type: integer + - _key: custom_fields + additionalProperties: + type: string + description: User's account-specific custom properties. The value is + a string. + type: object + x-nullable: true + - _key: email + description: The email address. + example: user@arm.com + pattern: ^(?=.{3,254}$).+\@.+ + type: string + - _key: email_verified + description: A flag indicating whether the user's email address has + been verified or not. + example: true + type: boolean + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: full_name + description: The full name of the user. + example: User Doe + maxLength: 100 type: string - - _key: datafile_checksum - description: The checksum (sha256) generated for the datafile - example: '0000000000000000000000000000000000000000000000000000000000000000' + x-nullable: true + - _key: groups + description: A list of IDs of the groups this user belongs to. + items: + type: string + type: array + - _key: id + description: The ID of the user. + example: 01619571e2e89242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: datafile_size - description: The size of the datafile in bytes + - _key: is_gtc_accepted + description: A flag indicating that the user has accepted General Terms + and Conditions. + example: true + type: boolean + - _key: is_marketing_accepted + description: A flag indicating that the user has consented to receive + marketing information. + example: true + type: boolean + - _key: is_totp_enabled + description: A flag indicating whether two-factor authentication (TOTP) + has been enabled. + example: true + type: boolean + - _key: last_login_time + description: A timestamp of the latest login of the user, in milliseconds. + example: 1518630727688 format: int64 type: integer - - _key: description - description: The description of the object - example: '' - maxLength: 2000 - type: string - - _key: etag - description: The entity instance signature - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: login_history + description: Timestamps, succeedings, IP addresses and user agent information + of the last five logins of the user, with timestamps in RFC3339 format. + items: + description: Represents an entry in login history. + foreign_key: + entity: login_history + group: Accounts + properties: + - _key: date + api_fieldname: date + description: UTC time RFC3339 for this login attempt. + entity_fieldname: date + example: '2018-02-14T17:52:07Z' + format: date-time + type: string + - _key: ip_address + api_fieldname: ip_address + description: IP address of the client. + entity_fieldname: ip_address + example: 127.0.0.1 + type: string + - _key: success + api_fieldname: success + description: Flag indicating whether login attempt was successful + or not. + entity_fieldname: success + example: true + type: boolean + - _key: user_agent + api_fieldname: user_agent + description: User Agent header from the login request. + entity_fieldname: user_agent + example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 + type: string + required: + - date + - ip_address + - success + - user_agent + type: object + maxItems: 5 + type: array + - _key: login_profiles + description: A list of login profiles for the user. Specified as the + identity providers the user is associated with. + items: + description: Represents a user login profile in Device Management. + foreign_key: + entity: login_profile + group: Accounts + properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string + - _key: id + _override: true + api_fieldname: id + description: ID of the identity provider. + entity_fieldname: id + example: 01619571f3c00242ac12000600000000 + readOnly: false + type: string + - _key: name + _override: true + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + example: Pelion + readOnly: false + type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: login_profile_type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + example: NATIVE + readOnly: true + type: string + required: + - id + type: object + type: array + x-nullable: true + - _key: object + description: 'Entity name: always `user`.' + enum: + - user type: string - - _key: id - description: The firmware image ID - example: '00000000000000000000000000000000' + - _key: password + description: The password when creating a new user. It will be generated + when not present in the request. + example: PZf9eEUH43DAPE9ULINFeuj type: string - - _key: name - description: The firmware image name - example: '' - maxLength: 128 + x-nullable: true + - _key: password_changed_time + description: A timestamp of the latest change of the user password, + in milliseconds. + example: 1518630727688 + format: int64 + type: integer + - _key: phone_number + description: Phone number. + example: +44 (1223) 400 400 + maxLength: 100 type: string - - _key: object - description: The API resource entity - example: firmware-image + x-nullable: true + - _key: status + description: The status of the user. ENROLLING state indicates that + the user is in the middle of the enrollment process. INVITED means + that the user has not accepted the invitation request. RESET means + that the password must be changed immediately. INACTIVE users are + locked out and not permitted to use the system. + enum: + - ENROLLING + - INVITED + - ACTIVE + - RESET + - INACTIVE + example: ACTIVE type: string + - _key: totp_scratch_codes + description: A list of scratch codes for the two-factor authentication. + Visible only when 2FA is requested to be enabled or the codes regenerated. + items: + type: string + type: array + x-nullable: true - _key: updated_at - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' format: date-time type: string + - _key: username + description: A username. + example: admin + pattern: '[\w\-,._@+=]{4,30}' + type: string + x-nullable: true required: - - created_at - - datafile - - datafile_checksum - - description + - account_id + - email - etag - id - - name - object - - updated_at + - status + type: object type: array - _key: has_more api_fieldname: has_more + description: Flag indicating whether there are more results. entity_fieldname: has_more + example: false type: boolean - _key: limit api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. entity_fieldname: limit + example: 50 + external_param: true format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false type: integer - _key: object api_fieldname: object + description: 'Entity name: always `list`.' entity_fieldname: object - example: list + enum: + - list type: string - _key: order api_fieldname: order - description: The order of the records based on creation time, `ASC` or `DESC`; - by default `ASC`. + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC - DESC - example: ASC + enum_reference: account_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string - _key: total_count api_fieldname: total_count + description: The total number of records, if requested. entity_fieldname: total_count + example: 20 format: int32 type: integer - - _key: '400' - description: Bad Request + required: + - data + - has_more + - limit + - object + - total_count + type: object - _key: '401' - description: Not authenticated - - _key: '404' - description: Unable to find content - return_info: - custom: false - self: true - type: firmware_image - return_type: paginated_response(firmware_image) - summary: List all images - x_deprecation: null - x_filter: - created_at: - - in - - nin - - lte - - gte - datafile_checksum: - - eq - - neq - - in - - nin - datafile_size: - - eq - - neq - - in - - nin - datafile_url: - - eq - - neq - - in - - nin - description: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - updated_at: - - in - - nin - - lte - - gte - - _key: read - description: Retrieve a firmware image. - drop_fields: - - object - - etag - - type - - filter - - created_at - - datafile_checksum - - datafile_size - - description - - name - - updated_at - - datafile_url - field_renames: - - _key: datafile_url - api_fieldname: datafile - fields: - - _key: id - api_fieldname: id - description: The firmware image ID - entity_fieldname: id - example: '00000000000000000000000000000000' - in: path - parameter_fieldname: image_id - required: true - type: string - group_id: Device_Update - method: get - mode: read - operation_id: Firmware_Image_retrieve - pagination: false - parameter_map: - image_id: id - path: /v3/firmware-images/{image_id}/ - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Retrieved result successfully + description: Authentication failure. schema: - foreign_key: - entity: firmware_image - group: Device_Update properties: - - _key: created_at - api_fieldname: created_at - description: The time the object was created - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: datafile - api_fieldname: datafile - description: The firmware image file URL - entity_fieldname: datafile_url - example: http://example.com/00000000000000000000000000000000 + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: datafile_checksum - api_fieldname: datafile_checksum - description: The checksum (sha256) generated for the datafile - entity_fieldname: datafile_checksum - example: '0000000000000000000000000000000000000000000000000000000000000000' + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - entity_fieldname: datafile_size - format: int64 + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 type: integer - - _key: description - api_fieldname: description - description: The description of the object - entity_fieldname: description - example: '' - maxLength: 2000 + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: etag - api_fieldname: etag - description: The entity instance signature - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: object + description: Entity name, always `error`. + enum: + - error type: string - - _key: id - api_fieldname: id - description: The firmware image ID - entity_fieldname: id - example: '00000000000000000000000000000000' + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 type: string - - _key: name - api_fieldname: name - description: The firmware image name - entity_fieldname: name - example: '' - maxLength: 128 + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: A group with that ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error type: string - _key: object - api_fieldname: object - description: The API resource entity - entity_fieldname: object - example: firmware-image + description: Entity name, always `error`. + enum: + - error type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: - - created_at - - datafile - - datafile_checksum - - description - - etag - - id - - name + - code + - message - object - - updated_at - - _key: '400' - description: Bad Request - - _key: '401' - description: Not authenticated - - _key: '404' - description: Firmware image can't be found + - request_id + - type + type: object return_info: custom: false - self: true - type: firmware_image - return_type: firmware_image - summary: Get an image + self: false + type: user + return_type: paginated_response(user) + summary: Get users of a policy group. x_deprecation: null - x_filter: {} + x_filter: + status: + - eq + - in + - nin primary_key_field: id swagger_models: - - FirmwareImage - - FirmwareImagePage - tags: [] -- _key: firmware_manifest - field_renames: - - _key: datafile_url - api_fieldname: datafile - - _key: key_table_url - api_fieldname: key_table + - ApiKeyInfoRespList + - GroupCreationInfo + - GroupSummary + - GroupSummaryList + - GroupUpdateInfo + - UserInfoRespList + tags: + - Account - policy groups +- _key: pre_shared_key + field_renames: [] fields: - _key: created_at api_fieldname: created_at - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' + description: The date-time (RFC3339) when this PSK was uploaded to Device Management. + example: '2017-07-21T17:32:28.012Z' format: date-time readOnly: true required: false type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - format: int64 - readOnly: true - required: false - type: integer - - _key: datafile_url - api_fieldname: datafile - description: The URL of the firmware manifest binary - example: http://example.com/00000000000000000000000000000000 - readOnly: true - required: false - type: string - - _key: description - api_fieldname: description - description: The description of the firmware manifest - example: '' - maxLength: 2000 + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + description: The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) + (non-control) ASCII characters. + example: my-endpoint-0001 + getter_custom_method: pre_shared_key_id_getter + pattern: ^[ -~]{16,64}$ readOnly: false required: false - type: string - - _key: device_class - api_fieldname: device_class - description: The class of the device - example: 00000000-0000-0000-0000-000000000000 - readOnly: true - required: false + setter_custom_method: pre_shared_key_id_setter type: string - _key: id + _override: true api_fieldname: id - description: The firmware manifest ID - example: '00000000000000000000000000000000' - readOnly: false - required: true - type: string - - _key: key_table_url - api_fieldname: key_table - description: The key table of pre-shared keys for devices - example: http://example.com - format: uri - readOnly: true - required: false - type: string - - _key: name - api_fieldname: name - description: The name of the object - example: '' - maxLength: 128 + description: The Id of the pre_shared_key, shadows the endpoint_name + getter_custom_method: pre_shared_key_id_getter readOnly: false required: false + setter_custom_method: pre_shared_key_id_setter type: string - - _key: timestamp - api_fieldname: timestamp - description: The firmware manifest version as a timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Device_Update + group_id: Security methods: - _key: create - description: Upload a firmware manifest. The API enforces a maximum size of manifests - of 2 KB. + description: "Upload a PSK for an endpoint to allow it to bootstrap. The existing\ + \ key cannot be overwritten, but needs\nto be deleted first in the case of re-setting\ + \ a PSK for an endpoint.\n\n**Note**: The PSK APIs are available only to accounts\ + \ that have this feature enabled.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys\ + \ \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\"\ + \ \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\": \"\ + 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```" drop_fields: - object - etag - type - filter - - created_at - - datafile_size - - device_class - - id - - timestamp - - updated_at - - datafile_url - - key_table_url - field_renames: - - _key: datafile_url - api_fieldname: datafile - - _key: key_table_url - api_fieldname: key_table + field_renames: [] fields: - - _key: description - api_fieldname: description - description: The description of the firmware manifest - entity_fieldname: description - example: '' - in: stream - maxLength: 2000 - parameter_fieldname: description - required: false + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + entity_fieldname: endpoint_name + getter_custom_method: pre_shared_key_id_getter + readOnly: false + setter_custom_method: pre_shared_key_id_setter type: string - - _key: firmware_manifest_file - api_fieldname: datafile - description: The manifest file to create. The API gateway enforces the account-specific - file size. - entity_fieldname: firmware_manifest_file + - _key: id + _override: true + api_fieldname: id + description: The Id of the pre_shared_key, shadows the endpoint_name + entity_fieldname: id + example: my-endpoint-0001 + getter_custom_method: pre_shared_key_id_getter + in: body + name: endpoint_name + pattern: ^[ -~]{16,64}$ + schema_param: true + setter_custom_method: pre_shared_key_id_setter + type: string + - _key: secret_hex + api_fieldname: secret_hex + description: The secret of the PSK in hexadecimal. It is not case sensitive; + 4a is same as 4A, and it is allowed with or without 0x in the beginning. The + minimum length of the secret is 128 bits and maximum 256 bits. + entity_fieldname: secret_hex + example: 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a external_param: true - in: stream - name: datafile - parameter_fieldname: datafile + in: body + name: secret_hex + parameter_fieldname: secret_hex + pattern: ^(0[xX])?[0-9a-fA-F]{32,64}$ required: true - type: file - - _key: key_table_file - api_fieldname: key_table - description: The key table of pre-shared keys for devices - entity_fieldname: key_table_file - external_param: true - in: stream - name: key_table - parameter_fieldname: key_table - required: false - type: file - - _key: name - api_fieldname: name - description: The name of the object - entity_fieldname: name - example: '' - in: stream - maxLength: 128 - parameter_fieldname: name - required: false + schema_param: true type: string - group_id: Device_Update + group_id: Security method: post mode: create - notes: This is not a standard create method as it uploads a file (or files) which - creates an entity which contains URIs to the uploaded file(s). - operation_id: Firmware_Manifest_create + operation_id: uploadPreSharedKey pagination: false parameter_map: - datafile: firmware_manifest_file - key_table: key_table_file - manifest_id: id - path: /v3/firmware-manifests/ - request_body: file - request_content_type: multipart/form-data + endpoint_name: id + path: /v2/device-shared-keys + request_body: json + request_content_type: application/json responses: - _key: '201' - description: Created - schema: - foreign_key: - entity: firmware_manifest - group: Device_Update - properties: - - _key: created_at - api_fieldname: created_at - description: The time the object was created - entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: datafile - api_fieldname: datafile - description: The URL of the firmware manifest binary - entity_fieldname: datafile_url - example: http://example.com/00000000000000000000000000000000 - type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - entity_fieldname: datafile_size - format: int64 - type: integer - - _key: description - api_fieldname: description - description: The description of the firmware manifest - entity_fieldname: description - example: '' - maxLength: 2000 - type: string - - _key: device_class - api_fieldname: device_class - description: The class of the device - entity_fieldname: device_class - example: 00000000-0000-0000-0000-000000000000 - type: string - - _key: etag - api_fieldname: etag - description: The entity instance signature - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - api_fieldname: id - description: The firmware manifest ID - entity_fieldname: id - example: '00000000000000000000000000000000' - type: string - - _key: key_table - api_fieldname: key_table - description: The key table of pre-shared keys for devices - entity_fieldname: key_table_url - example: http://example.com - format: uri - type: string - - _key: name - api_fieldname: name - description: The name of the object - entity_fieldname: name - example: '' - maxLength: 128 - type: string - - _key: object - api_fieldname: object - description: The API resource entity - entity_fieldname: object - example: firmware-manifest - type: string - - _key: timestamp - api_fieldname: timestamp - description: The firmware manifest version as a timestamp - entity_fieldname: timestamp - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - required: - - created_at - - datafile - - description - - device_class - - etag - - id - - name - - object - - timestamp - - updated_at + description: Successfully created. - _key: '400' - description: 'Validation error. The data used to create the firmware manifest - did not validate and/or the manifest uploaded exceeded 2 KB in size. - - ' + description: Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, + INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT. + schema: + type: string - _key: '401' - description: Not authenticated + description: Authentication failure. - _key: '403' - description: Forbidden + description: Forbidden. You need to read and accept the PSK license in Device + Management Portal. + - _key: '409' + description: Conflict. The PSK for the endpoint already exists and cannot be + overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT. + schema: + type: string return_info: custom: false self: true - type: firmware_manifest - return_type: firmware_manifest - summary: Upload a manifest - unaggregated: true + type: pre_shared_key + return_type: pre_shared_key + summary: Upload a PSK to Pelion Device Management. x_deprecation: null x_filter: {} - _key: delete - description: Delete a firmware manifest. + description: 'Remove a PSK. + + + **Example:** + + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + \ + + -H "Authorization: Bearer " + + ```' drop_fields: - object - etag - type - filter - field_renames: - - _key: datafile_url - api_fieldname: datafile - - _key: key_table_url - api_fieldname: key_table + field_renames: [] fields: + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + entity_fieldname: endpoint_name + getter_custom_method: pre_shared_key_id_getter + readOnly: false + setter_custom_method: pre_shared_key_id_setter + type: string - _key: id - api_fieldname: manifest_id - description: The firmware manifest ID + _override: true + api_fieldname: id + description: The Id of the pre_shared_key, shadows the endpoint_name entity_fieldname: id - external_param: false + getter_custom_method: pre_shared_key_id_getter in: path - name: manifest_id - parameter_fieldname: manifest_id + name: endpoint_name required: true + setter_custom_method: pre_shared_key_id_setter type: string - group_id: Device_Update + group_id: Security method: delete mode: delete - operation_id: Firmware_Manifest_destroy + operation_id: deletePreSharedKey pagination: false parameter_map: - manifest_id: id - path: /v3/firmware-manifests/{manifest_id}/ + endpoint_name: id + path: /v2/device-shared-keys/{endpoint_name} request_body: json request_content_type: application/json responses: - _key: '204' - description: Firmware manifest deleted + description: Successfully deleted. Responds even if the endpoint does not have + an associated PSK. - _key: '400' - description: Bad Request + description: Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME. + schema: + type: string - _key: '401' - description: Not authenticated - - _key: '404' - description: Firmware manifest not found + description: Authentication failure. return_info: custom: false self: true - type: firmware_manifest - return_type: firmware_manifest - summary: Delete a manifest + type: pre_shared_key + return_type: pre_shared_key + summary: Remove a PSK. x_deprecation: null x_filter: {} - _key: list - description: List firmware manifests. + description: 'Retrieve pre-shared keys (PSKs) with pagination. Default page size + of 50 entries. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \ + + -H "Authorization: Bearer " + + ```' drop_fields: - object - etag - type - filter - - data + - order - has_more - - total_count - - created_at__in - - created_at__nin - - created_at__lte - - created_at__gte - - datafile__eq - - datafile__neq - - datafile__in - - datafile__nin - - datafile_size__eq - - datafile_size__neq - - datafile_size__in - - datafile_size__nin - - description__eq - - description__neq - - description__in - - description__nin - - device_class__eq - - device_class__neq - - device_class__in - - device_class__nin - - id__eq - - id__neq - - id__in - - id__nin - - name__eq - - name__neq - - name__in - - name__nin - - timestamp__in - - timestamp__nin - - timestamp__lte - - timestamp__gte - - updated_at__in - - updated_at__nin - - updated_at__lte - - updated_at__gte - field_renames: - - _key: datafile_url - api_fieldname: datafile - - _key: key_table_url - api_fieldname: key_table + - continuation_marker + - data + field_renames: [] fields: - _key: after api_fieldname: after - description: The ID of the the item after which to retrieve the next page + description: An offset token for fetching a specific page. Provided by the server. entity_fieldname: after - example: null + example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 external_param: true in: query name: after parameter_fieldname: after required: false type: string - - _key: include - api_fieldname: include - description: 'A comma-separated list of data fields to return. Currently supported: - total_count' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + entity_fieldname: endpoint_name + getter_custom_method: pre_shared_key_id_getter + readOnly: false + setter_custom_method: pre_shared_key_id_setter + type: string + - _key: id + _override: true + api_fieldname: id + description: The Id of the pre_shared_key, shadows the endpoint_name + entity_fieldname: id + getter_custom_method: pre_shared_key_id_getter + setter_custom_method: pre_shared_key_id_setter type: string - _key: limit api_fieldname: limit - description: How many objects to retrieve in the page. The minimum limit is - 2 and the maximum is 1000. Limit values outside of this range are set to the - closest limit. + default: 50 + description: The number of objects to retrieve on a page (2-1000). Values outside + the range are set to the closest limit. entity_fieldname: limit + example: 50 external_param: true - format: int32 in: query maximum: 1000 minimum: 2 @@ -32668,649 +46524,331 @@ entities: parameter_fieldname: limit required: false type: integer - - _key: order - api_fieldname: order - description: ASC or DESC - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: firmware_manifest_order_enum - example: ASC - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string foreign_key: - entity: firmware_manifest - group: Device_Update + entity: pre_shared_key + group: Security foreign_key_priority: self - group_id: Device_Update + group_id: Security method: get mode: list - operation_id: Firmware_Manifest_list + operation_id: listPreSharedKeys pagination: true parameter_map: - manifest_id: id - path: /v3/firmware-manifests/ + endpoint_name: id + path: /v2/device-shared-keys request_body: json request_content_type: application/json responses: - _key: '200' - description: Request successful + description: List of PSKs. schema: foreign_key: - entity: firmware_manifest - group: Device_Update + entity: pre_shared_key + group: Security pagination: true properties: - _key: after api_fieldname: after + description: An offset token for current page. entity_fieldname: after - example: null + example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 + type: string + - _key: continuation_marker + api_fieldname: continuation_marker + description: An offset token for fetching the next page. Note that exactly + the same limit needs to be used on the request for fetching subsequent + pages. + entity_fieldname: continuation_marker + example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005 type: string - _key: data api_fieldname: data + description: Array of the PSK entries. The array is empty if there are no + PSKs. entity_fieldname: data - example: '[]' items: foreign_key: - entity: firmware_manifest - group: Device_Update + entity: pre_shared_key + group: Security properties: - _key: created_at - description: The time the object was created - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: datafile - description: The URL of the firmware manifest binary - example: http://example.com/00000000000000000000000000000000 - type: string - - _key: datafile_size - description: The size of the datafile in bytes - format: int64 - type: integer - - _key: description - description: The description of the firmware manifest - example: '' - maxLength: 2000 - type: string - - _key: device_class - description: The class of the device - example: 00000000-0000-0000-0000-000000000000 - type: string - - _key: etag - description: The entity instance signature - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - description: The firmware manifest ID - example: '00000000000000000000000000000000' - type: string - - _key: key_table - description: The key table of pre-shared keys for devices - example: http://example.com - format: uri - type: string - - _key: name - description: The name of the object - example: '' - maxLength: 128 - type: string - - _key: object - description: The API resource entity - example: firmware-manifest - type: string - - _key: timestamp - description: The firmware manifest version as a timestamp - example: '2017-05-22T12:37:55.576563Z' + description: The date-time (RFC3339) when this PSK was uploaded to Device + Management. + example: '2017-07-21T17:32:28.012Z' format: date-time type: string - - _key: updated_at - description: The time the object was updated - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: endpoint_name + _override: true + description: The unique endpoint identifier that this PSK applies to. + 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) + (non-control) ASCII characters. + example: my-endpoint-0001 + getter_custom_method: pre_shared_key_id_getter + pattern: ^[ -~]{16,64}$ + readOnly: false + setter_custom_method: pre_shared_key_id_setter type: string required: - - created_at - - datafile - - description - - device_class - - etag - - id - - name - - object - - timestamp - - updated_at + - endpoint_name + type: object + minLength: 0 type: array - _key: has_more api_fieldname: has_more + description: More results are available. entity_fieldname: has_more + example: true type: boolean - _key: limit api_fieldname: limit + description: The value of limit query parameter from the request, or default + if not specified. entity_fieldname: limit - format: int32 + example: 50 type: integer - _key: object api_fieldname: object + description: The type of this API object is a "list". entity_fieldname: object example: list type: string - _key: order api_fieldname: order - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' + description: Record order based on creation time. entity_fieldname: order - enum: - - ASC - - DESC - example: ASC + example: DESC type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - format: int32 - type: integer + required: + - object + - limit + - order + - has_more + - data + type: object - _key: '400' - description: Bad Request - - _key: '401' - description: Not authenticated - - _key: '404' - description: Unable to find content + description: Bad request. Contains the error as a string, either TOKEN_NOT_FOUND + or INVALID_LIMIT. return_info: custom: false self: true - type: firmware_manifest - return_type: paginated_response(firmware_manifest) - summary: List manifests + type: pre_shared_key + return_type: paginated_response(pre_shared_key) + summary: List PSKs. x_deprecation: null - x_filter: - created_at: - - in - - nin - - lte - - gte - datafile_size: - - eq - - neq - - in - - nin - datafile_url: - - eq - - neq - - in - - nin - description: - - eq - - neq - - in - - nin - device_class: - - eq - - neq - - in - - nin - id: - - eq - - neq - - in - - nin - name: - - eq - - neq - - in - - nin - timestamp: - - in - - nin - - lte - - gte - updated_at: - - in - - nin - - lte - - gte + x_filter: {} - _key: read - description: Retrieve a firmware manifest. + description: 'Check if a PSK for an endpoint exists or not. The response does + not contain the secret itself. + + + **Example:** + + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + \ + + -H "Authorization: Bearer " + + ```' drop_fields: - object - etag - type - filter - created_at - - datafile_size - - description - - device_class - - name - - timestamp - - updated_at - - datafile_url - - key_table_url - field_renames: - - _key: datafile_url - api_fieldname: datafile - - _key: key_table_url - api_fieldname: key_table + field_renames: [] fields: + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + description: The unique endpoint identifier that this PSK applies to. 16-64 + [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) + ASCII characters. + entity_fieldname: endpoint_name + example: my-endpoint-0001 + getter_custom_method: pre_shared_key_id_getter + pattern: ^[ -~]{16,64}$ + readOnly: false + setter_custom_method: pre_shared_key_id_setter + type: string - _key: id + _override: true api_fieldname: id - description: The firmware manifest ID + description: The Id of the pre_shared_key, shadows the endpoint_name entity_fieldname: id - example: '00000000000000000000000000000000' + getter_custom_method: pre_shared_key_id_getter in: path - parameter_fieldname: manifest_id + name: endpoint_name required: true + setter_custom_method: pre_shared_key_id_setter type: string - group_id: Device_Update + group_id: Security method: get mode: read - operation_id: Firmware_Manifest_retrieve + operation_id: getPreSharedKey pagination: false parameter_map: - manifest_id: id - path: /v3/firmware-manifests/{manifest_id}/ + endpoint_name: id + path: /v2/device-shared-keys/{endpoint_name} request_body: json request_content_type: application/json responses: - _key: '200' - description: Retrieved result successfully + description: Pre-shared key for the device (does not contain secret). schema: foreign_key: - entity: firmware_manifest - group: Device_Update + entity: pre_shared_key + group: Security properties: - _key: created_at api_fieldname: created_at - description: The time the object was created + description: The date-time (RFC3339) when this PSK was uploaded to Device + Management. entity_fieldname: created_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: datafile - api_fieldname: datafile - description: The URL of the firmware manifest binary - entity_fieldname: datafile_url - example: http://example.com/00000000000000000000000000000000 - type: string - - _key: datafile_size - api_fieldname: datafile_size - description: The size of the datafile in bytes - entity_fieldname: datafile_size - format: int64 - type: integer - - _key: description - api_fieldname: description - description: The description of the firmware manifest - entity_fieldname: description - example: '' - maxLength: 2000 - type: string - - _key: device_class - api_fieldname: device_class - description: The class of the device - entity_fieldname: device_class - example: 00000000-0000-0000-0000-000000000000 - type: string - - _key: etag - api_fieldname: etag - description: The entity instance signature - entity_fieldname: etag - example: '2017-05-22T12:37:55.576563Z' - format: date-time - type: string - - _key: id - api_fieldname: id - description: The firmware manifest ID - entity_fieldname: id - example: '00000000000000000000000000000000' - type: string - - _key: key_table - api_fieldname: key_table - description: The key table of pre-shared keys for devices - entity_fieldname: key_table_url - example: http://example.com - format: uri - type: string - - _key: name - api_fieldname: name - description: The name of the object - entity_fieldname: name - example: '' - maxLength: 128 - type: string - - _key: object - api_fieldname: object - description: The API resource entity - entity_fieldname: object - example: firmware-manifest - type: string - - _key: timestamp - api_fieldname: timestamp - description: The firmware manifest version as a timestamp - entity_fieldname: timestamp - example: '2017-05-22T12:37:55.576563Z' + example: '2017-07-21T17:32:28.012Z' format: date-time type: string - - _key: updated_at - api_fieldname: updated_at - description: The time the object was updated - entity_fieldname: updated_at - example: '2017-05-22T12:37:55.576563Z' - format: date-time + - _key: endpoint_name + _override: true + api_fieldname: endpoint_name + description: The unique endpoint identifier that this PSK applies to. 16-64 + [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) + (non-control) ASCII characters. + entity_fieldname: endpoint_name + example: my-endpoint-0001 + getter_custom_method: pre_shared_key_id_getter + pattern: ^[ -~]{16,64}$ + readOnly: false + setter_custom_method: pre_shared_key_id_setter type: string required: - - created_at - - datafile - - description - - device_class - - etag - - id - - name - - object - - timestamp - - updated_at + - endpoint_name + type: object - _key: '400' - description: Bad request + description: Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME. + schema: + type: string - _key: '401' - description: Not authenticated + description: Authentication failure. - _key: '404' - description: Firmware manifest can't be found + description: The PSK does not exist. return_info: custom: false self: true - type: firmware_manifest - return_type: firmware_manifest - summary: Get a manifest + type: pre_shared_key + return_type: pre_shared_key + summary: Get a PSK. x_deprecation: null x_filter: {} primary_key_field: id swagger_models: - - FirmwareManifest - - FirmwareManifestPage - tags: [] -- _key: light_theme_color + - ListOfPreSharedKeysWithoutSecret + - PreSharedKey + - PreSharedKeyWithoutSecret + tags: + - Security and identity - pre-shared keys +- _key: saml2_request field_renames: [] fields: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - in: body - parameter_fieldname: color - readOnly: false - required: false - type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: light_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - readOnly: false + - _key: entity_descriptor + api_fieldname: entity_descriptor + description: Contains an entity descriptor document for the identity provider. + Can be used as an alternative method to provide the identity provider's attributes. + format: byte + maxLength: 65535 + readOnly: true required: false type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - in: body - parameter_fieldname: updated_at + - _key: idp_entity_id + api_fieldname: idp_entity_id + description: Entity ID of the identity provider. readOnly: true required: false type: string - group_id: Branding - methods: - - _key: delete - description: 'Resets the branding color to its light theme default. - - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: The name of the branding color. - entity_fieldname: reference - enum: &id004 - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: light_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - _key: idp_x509_certs + api_fieldname: idp_x509_certs + description: List of public X509 certificates of the identity provider. Certificates + must be in PEM format. + items: type: string - group_id: Branding - method: delete - mode: delete - operation_id: resetLightColor - pagination: false - path: /v3/branding-colors/light/{reference} - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Deleted successfully. - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Color not found. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Reset branding color to default. - x_deprecation: null - x_filter: {} - - _key: list - description: 'Retrieve the light theme branding colors. + readOnly: true + required: false + type: array + - _key: slo_endpoint + api_fieldname: slo_endpoint + description: URL of the identity provider's SLO endpoint. + readOnly: true + required: false + type: string + - _key: sp_entity_id + api_fieldname: sp_entity_id + description: Entity ID of the service provider. We recommend that you leave it + empty and let the system generate it. + readOnly: true + required: false + type: string + - _key: sso_endpoint + api_fieldname: sso_endpoint + description: URL of the identity provider's SSO endpoint. + readOnly: true + required: false + type: string + group_id: Accounts + methods: [] + primary_key_field: null + swagger_models: + - SAML2Req + tags: [] +- _key: server_credentials + field_renames: [] + fields: + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + format: date-time + readOnly: true + required: false + type: string + - _key: id + api_fieldname: id + description: Unique entity ID. + readOnly: true + required: false + type: string + - _key: server_certificate + api_fieldname: server_certificate + description: PEM-format X.509 server certificate used to validate the server certificate + received during the TLS/DTLS handshake. + readOnly: true + required: false + type: string + - _key: server_uri + api_fieldname: server_uri + description: Server URI that the client connects to. + readOnly: true + required: false + type: string + group_id: Security + methods: + - _key: get_bootstrap + additional_operations: + - notes: The information returned by this endpoint can be obtained by calling + `get_bootstrap`. + operation_id: getAllServerCredentials + description: 'Return bootstrap server credentials for client to connect to bootstrap + server. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light \ + curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/bootstrap + \ - -H ''Authorization: Bearer '' + -H "Authorization: Bearer " ```' drop_fields: @@ -33318,143 +46856,72 @@ entities: - etag - type - filter - - limit - - after - - order - - total_count - - has_more - - data + - id + - created_at + - server_certificate + - server_uri field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - entity_fieldname: reference - is_primary_key: true - type: string - foreign_key: - entity: light_theme_color - group: Branding - foreign_key_priority: self - group_id: Branding + fields: [] + group_id: Security method: get - mode: list - operation_id: getLightColors - pagination: true - path: /v3/branding-colors/light + mode: get_bootstrap + operation_id: getBootstrapServerCredentials + pagination: false + path: /v3/server-credentials/bootstrap request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: Bootstrap server credentials fetched successfully. + examples: + - _key: Success + created_at: '2017-12-11T14:22:20.009Z' + etag: '1' + id: 015fee4431fd38c98640fbfb00000000 + object: server-credentials + server_certificate: '-----BEGIN CERTIFICATE-----\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\n-----END + CERTIFICATE-----' + server_uri: coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000 schema: foreign_key: - entity: light_theme_color - group: Branding - pagination: true + entity: server_credentials + group: Security properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + type: string + - _key: id + api_fieldname: id + description: Unique entity ID. + entity_fieldname: id type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - foreign_key: - entity: dark_theme_color - group: Branding - properties: - - _key: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - type: string - x-nullable: true - - _key: object - description: 'Entity name: always ''branding_color''' - enum: - - branding_color - readOnly: true - type: string - - _key: reference - _override: true - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - is_primary_key: true - type: string - - _key: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - type: string - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - description: The number of results to return, or equal to `total_count`. - entity_fieldname: limit - example: 50 - format: int32 - type: integer - _key: object api_fieldname: object - description: 'Entity name: always `list`.' + description: 'Entity name: always `server-credentials`.' entity_fieldname: object - enum: - - list type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' - entity_fieldname: order - enum: - - ASC - - DESC + - _key: server_certificate + api_fieldname: server_certificate + description: PEM-format X.509 server certificate used to validate the server + certificate received during the TLS/DTLS handshake. + entity_fieldname: server_certificate + type: string + - _key: server_uri + api_fieldname: server_uri + description: Server URI that the client connects to. + entity_fieldname: server_uri type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count type: object - - _key: '401' - description: Authentication failure. + - _key: '400' + description: Bad request. schema: properties: - _key: code @@ -33501,8 +46968,15 @@ entities: - request_id - type type: object - - _key: '403' - description: Forbidden. + - _key: '401' + description: Invalid access token. + examples: + - _key: Authentication Error + code: 401 + message: Invalid access token. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: invalid_auth schema: properties: - _key: code @@ -33552,23 +47026,26 @@ entities: return_info: custom: false self: true - type: light_theme_color - return_type: paginated_response(light_theme_color) - summary: Get light theme branding colors. + type: server_credentials + return_type: server_credentials + summary: Fetch bootstrap server credentials. x_deprecation: null x_filter: {} - - _key: read - description: 'Retrieve the requested light theme branding color. + - _key: get_lwm2m + additional_operations: + - notes: The information returned by this endpoint can be obtained by calling + `get_lwm2m`. + operation_id: getAllServerCredentials + description: 'Return LwM2M server credentials for client to connect to LwM2M server. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/{reference} - \ + curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/lwm2m \ - -H ''Authorization: Bearer '' + -H "Authorization: Bearer " ```' drop_fields: @@ -33576,152 +47053,72 @@ entities: - etag - type - filter - - color - - updated_at + - id + - created_at + - server_certificate + - server_uri field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id004 - enum_reference: light_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - group_id: Branding + fields: [] + group_id: Security method: get - mode: read - operation_id: getLightColor + mode: get_lwm2m + operation_id: getL2M2MServerCredentials pagination: false - path: /v3/branding-colors/light/{reference} + path: /v3/server-credentials/lwm2m request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: LwM2M server credentials fetched successfully. + examples: + - _key: Success + created_at: '2017-12-11T14:22:20.009Z' + etag: '1' + id: 015fee4431fd38c98640fbfb00000000 + object: server-credentials + server_certificate: '-----BEGIN CERTIFICATE-----\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\n-----END + CERTIFICATE-----' + server_uri: coaps://mds.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000 schema: foreign_key: - entity: subtenant_light_theme_color - group: Branding + entity: server_credentials + group: Security properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' - in: body - parameter_fieldname: color - required: false - type: string - x-nullable: true - - _key: object - api_fieldname: object - description: 'Entity name: always ''branding_color''' - entity_fieldname: object - enum: - - branding_color - external_param: true - in: body - name: object - parameter_fieldname: object - readOnly: true - required: false - schema_param: true - type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at format: date-time - in: body - parameter_fieldname: updated_at - readOnly: true - required: false type: string - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + type: string + - _key: id + api_fieldname: id + description: Unique entity ID. + entity_fieldname: id type: string - _key: object - description: Entity name, always `error`. - enum: - - error + api_fieldname: object + description: 'Entity name: always `server-credentials`.' + entity_fieldname: object type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - _key: server_certificate + api_fieldname: server_certificate + description: PEM-format X.509 server certificate used to validate the server + certificate received during the TLS/DTLS handshake. + entity_fieldname: server_certificate type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error + - _key: server_uri + api_fieldname: server_uri + description: Server URI that the client connects to. + entity_fieldname: server_uri type: string - required: - - code - - message - - object - - request_id - - type type: object - - _key: '403' - description: Forbidden. + - _key: '400' + description: Bad request. schema: properties: - _key: code @@ -33768,8 +47165,15 @@ entities: - request_id - type type: object - - _key: '404' - description: Color not found. + - _key: '401' + description: Invalid access token. + examples: + - _key: Authentication Error + code: 401 + message: Invalid access token. + object: error + request_id: 015fee4431fd38c98640fbfb00000000 + type: invalid_auth schema: properties: - _key: code @@ -33819,31 +47223,140 @@ entities: return_info: custom: false self: true - type: light_theme_color - return_type: light_theme_color - summary: Get light theme branding color. + type: server_credentials + return_type: server_credentials + summary: Fetch LwM2M server credentials. x_deprecation: null x_filter: {} - - _key: update - additional_operations: - - notes: Bulk operation is not appriate for SDK's entity model, this functionality - is covered by the update method. - operation_id: bulkSetLightColors - description: 'Update light theme branding color. + primary_key_field: id + swagger_models: + - ServerCredentialsResponseData + tags: + - Security and identity - server credentials +- _key: subtenant_api_key + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time + readOnly: true + required: false + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + example: 1518630727683 + format: int64 + readOnly: true + required: false + type: integer + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + in: body + items: + type: string + parameter_fieldname: groups + readOnly: false + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + readOnly: false + required: true + type: string + - _key: key + api_fieldname: key + description: The API key. + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + readOnly: true + required: false + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + example: 1518630727688 + format: int64 + readOnly: true + required: false + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + readOnly: false + required: true + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + readOnly: false + required: false + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + enum: + - ACTIVE + - INACTIVE + enum_reference: subtenant_api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + readOnly: false + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Accounts + methods: + - _key: create + description: 'Create a new API key. There is no default value for the owner ID, + and it must be from the same account where the new API key is created. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/branding-colors/light/primary + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ - -d ''{ "color": "purple" }'' + -d ''{"name": "MyKey1"}'' ```' drop_fields: @@ -33851,123 +47364,202 @@ entities: - etag - type - filter + - id + - created_at + - updated_at + - key + - creation_time + - last_login_time field_renames: [] fields: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups in: body - parameter_fieldname: color + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name required: false type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id004 - enum_reference: light_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: &id009 + - ACTIVE + - INACTIVE + enum_reference: subtenant_api_key_status_enum + example: ACTIVE in: body - parameter_fieldname: updated_at - readOnly: true + parameter_fieldname: status required: false type: string - group_id: Branding - method: put - mode: update - operation_id: setLightColor + group_id: Accounts + method: post + mode: create + operation_id: createAccountApiKey pagination: false - path: /v3/branding-colors/light/{reference} + parameter_map: + apikey_id: id + path: /v3/accounts/{account_id}/api-keys request_body: json request_content_type: application/json responses: - - _key: '200' - description: Color has been set successfully. + - _key: '201' + description: New entity created. schema: + description: Represents an API key in Device Management. foreign_key: - entity: subtenant_light_theme_color - group: Branding + entity: api_key + group: Accounts properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups in: body - parameter_fieldname: color + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name required: false type: string - x-nullable: true - _key: object api_fieldname: object - description: 'Entity name: always ''branding_color''' + description: 'Entity name: always ''api-key''' entity_fieldname: object enum: - - branding_color - external_param: true + - api-key + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 in: body - name: object - parameter_fieldname: object - readOnly: true + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' required: false - schema_param: true type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - ACTIVE + - INACTIVE + enum_reference: api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time - in: body - parameter_fieldname: updated_at - readOnly: true - required: false type: string + required: + - etag + - id + - key + - name + - object type: object - _key: '400' - description: Error in input data format. + description: Error in input data, for example, missing API key name. schema: properties: - _key: code @@ -34111,7 +47703,7 @@ entities: - type type: object - _key: '404' - description: Color not found. + description: An account with the given ID does not exist. schema: properties: - _key: code @@ -34161,99 +47753,29 @@ entities: return_info: custom: false self: true - type: light_theme_color - return_type: light_theme_color - summary: Updates light theme branding color. - x_deprecation: null + type: subtenant_api_key + return_type: subtenant_api_key + summary: Create a new API key. + x_deprecation: + comment: This endpoint is deprecated. Use POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: {} - primary_key_field: reference - swagger_models: - - BrandingColor - - BrandingColorList - tags: - - User interface configuration - colors -- _key: light_theme_image - field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: light_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - readOnly: false - required: false - type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Branding - methods: - _key: delete - description: 'Revert an account branding image to light theme default. + description: 'Delete an API key. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X POST https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference}/clear + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -34263,66 +47785,39 @@ entities: - filter field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the branding images (icon or picture). - entity_fieldname: reference - enum: &id005 - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: light_theme_image_reference_enum + - _key: account_id + api_fieldname: account_id + description: Account ID. + entity_fieldname: account_id + external_param: false in: path - is_primary_key: true - name: reference + name: account_id + parameter_fieldname: account_id required: true type: string - group_id: Branding - method: post + - _key: id + api_fieldname: apikey_id + description: The ID of the API key to delete. + entity_fieldname: id + external_param: false + in: path + name: apikey_id + parameter_fieldname: apikey_id + required: true + type: string + group_id: Accounts + method: delete mode: delete - operation_id: clearLightImage + operation_id: deleteAccountApiKey pagination: false - path: /v3/branding-images/light/{reference}/clear + parameter_map: + apikey_id: id + path: /v3/accounts/{account_id}/api-keys/{apikey_id} request_body: json request_content_type: application/json responses: - _key: '204' - description: Image reverted successfully. + description: Deleted successfully. - _key: '401' description: Authentication failure. schema: @@ -34420,7 +47915,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: An account or API key with the specified ID does not exist. schema: properties: - _key: code @@ -34470,22 +47965,29 @@ entities: return_info: custom: false self: true - type: light_theme_image - return_type: light_theme_image - summary: Revert an image to light theme default. - x_deprecation: null + type: subtenant_api_key + return_type: subtenant_api_key + summary: Delete the API key. + x_deprecation: + comment: This endpoint is deprecated. Use DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: {} - - _key: list - description: 'Retrieve the metadata of all light theme branding images. + - _key: policy_groups + description: 'Retrieve an array of policy groups associated with an API key. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light \ + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -34493,30 +47995,93 @@ entities: - etag - type - filter - - limit - - after - - order - total_count - has_more - data field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - entity_fieldname: reference - is_primary_key: true + - _key: account_id + api_fieldname: account_id + description: Account ID. + entity_fieldname: account_id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: id + api_fieldname: apikey_id + description: The ID of the API key. + entity_fieldname: id + external_param: false + in: path + name: apikey_id + parameter_fieldname: apikey_id + required: true + type: string + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: subtenant_api_key_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string foreign_key: - entity: light_theme_image - group: Branding - foreign_key_priority: self - group_id: Branding + entity: subtenant_policy_group + group_id: Accounts method: get - mode: list - operation_id: getAllLightImageData + mode: policy_groups + operation_id: getGroupsOfAccountApikey pagination: true - path: /v3/branding-images/light + parameter_map: + apikey_id: id + path: /v3/accounts/{account_id}/api-keys/{apikey_id}/groups request_body: json request_content_type: application/json responses: @@ -34524,87 +48089,94 @@ entities: description: Successful operation. schema: foreign_key: - entity: light_theme_image - group: Branding + entity: subtenant_policy_group + group: Accounts pagination: true properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after pattern: '[a-f0-9]{32}' + required: false type: string - _key: data api_fieldname: data description: A list of entities. entity_fieldname: data items: + description: This object contains basic information about groups. foreign_key: - entity: dark_theme_image - group: Branding + entity: subtenant_policy_group + group: Accounts properties: - - _key: object - description: 'Entity name: always ''branding_image''' - enum: - - branding_image - readOnly: true + - _key: account_id + description: The ID of the account this group belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: reference - _override: true - description: Name of the image. - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - is_primary_key: true + - _key: apikey_count + description: The number of API keys in this group. + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time type: string - - _key: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: etag + description: API resource entity version. + example: '1' + type: string + - _key: id + description: The ID of the group. + example: 01619571dec00242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: name + description: The name of the group. + example: Administrators + maxLength: 100 + type: string + - _key: object + description: 'Entity name: always `group`.' + enum: + - group type: string - _key: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + - _key: user_count + description: The number of users in this group. + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count type: object type: array - _key: has_more @@ -34615,10 +48187,16 @@ entities: type: boolean - _key: limit api_fieldname: limit - description: The number of results to return, or equal to `total_count`. + default: 50 + description: The number of results to return (2-1000). Default 50. entity_fieldname: limit example: 50 + external_param: true format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false type: integer - _key: object api_fieldname: object @@ -34629,12 +48207,19 @@ entities: type: string - _key: order api_fieldname: order - description: 'The order of the records to return based on creation time. - Available values: ASC, DESC; by default ASC.' + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC - DESC + enum_reference: api_key_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false type: string - _key: total_count api_fieldname: total_count @@ -34746,138 +48331,238 @@ entities: - request_id - type type: object + - _key: '404' + description: An account or API key with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false - self: true - type: light_theme_image - return_type: paginated_response(light_theme_image) - summary: Get metadata of all light theme images. - x_deprecation: null + self: false + type: subtenant_policy_group + return_type: paginated_response(subtenant_policy_group) + summary: Get policy groups of an API key. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/groups + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: {} - _key: read - description: 'Retrieve metadata for one account light theme branding image. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/branding-images/light/{reference} - \ - - -H ''Authorization: Bearer '' - - ```' + description: "Retrieve details of an API key.\nNote: This endpoint is restricted\ + \ to administrators.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}\ + \ \\\n -H 'Authorization: Bearer '\n```" drop_fields: - object - etag - type - filter - - static_uri + - created_at - updated_at + - key + - name + - groups + - owner + - status + - creation_time + - last_login_time field_renames: [] fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id005 - enum_reference: light_theme_image_reference_enum + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Branding + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + group_id: Accounts method: get mode: read - operation_id: getLightImageData + operation_id: getAccountApiKey pagination: false - path: /v3/branding-images/light/{reference} + parameter_map: + apikey_id: id + path: /v3/accounts/{account_id}/api-keys/{apikey_id} request_body: json request_content_type: application/json responses: - _key: '200' description: Successful operation. schema: + description: Represents an API key in Device Management. foreign_key: - entity: subtenant_light_theme_image - group: Branding + entity: api_key + group: Accounts properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + in: body + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + required: false + type: string - _key: object api_fieldname: object - description: 'Entity name: always ''branding_image''' + description: 'Entity name: always ''api-key''' entity_fieldname: object enum: - - branding_image - readOnly: true + - api-key type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + enum_reference: api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + required: + - etag + - id + - key + - name + - object type: object - _key: '401' description: Authentication failure. @@ -34976,7 +48661,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: An account or API key with the specified ID does not exist. schema: properties: - _key: code @@ -35026,147 +48711,243 @@ entities: return_info: custom: false self: true - type: light_theme_image - return_type: light_theme_image - summary: Get metadata of a light theme image. - x_deprecation: null + type: subtenant_api_key + return_type: subtenant_api_key + summary: Get API key details. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: {} - _key: update - additional_operations: - - notes: The multipart request is more generic and better supported by SDKs. - operation_id: uploadLightImage - description: Upload a new account branding image as form data in the light theme - in PNG or JPEG format. + description: 'Update API key details. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestApiKey25"}'' + + ```' drop_fields: - object - etag - type - filter - - static_uri + - created_at - updated_at + - key + - creation_time + - last_login_time field_renames: [] fields: - - _key: image - api_fieldname: image - description: The image in PNG or JPEG format as multipart form data. - entity_fieldname: image - external_param: true - in: stream - name: image - parameter_fieldname: image + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' required: true - type: file - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id005 - enum_reference: light_theme_image_reference_enum + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + in: body + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Branding - method: post + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + required: false + type: string + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: *id009 + enum_reference: subtenant_api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: put mode: update - operation_id: uploadLightImageMultipart + operation_id: updateAccountApiKey pagination: false - path: /v3/branding-images/light/{reference}/upload-multipart - request_body: file - request_content_type: multipart/form-data + parameter_map: + apikey_id: id + path: /v3/accounts/{account_id}/api-keys/{apikey_id} + request_body: json + request_content_type: application/json responses: - - _key: '201' - description: Image uploaded successfully. - headers: - - _key: Content-Location - description: Location of the image metadata. - type: string - - _key: Location - description: Location of the image binary. - type: string + - _key: '200' + description: Successful operation. schema: + description: Represents an API key in Device Management. foreign_key: - entity: subtenant_light_theme_image - group: Branding + entity: api_key + group: Accounts properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: creation_time + api_fieldname: creation_time + description: The timestamp of the API key creation in the storage, in milliseconds. + entity_fieldname: creation_time + example: 1518630727683 + format: int64 + type: integer + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: groups + api_fieldname: groups + description: A list of group IDs this API key belongs to. + entity_fieldname: groups + in: body + items: + type: string + parameter_fieldname: groups + required: false + type: array + - _key: id + api_fieldname: id + description: The ID of the API key. + entity_fieldname: id + example: 01619571f7020242ac12000600000000 + in: path + parameter_fieldname: apikey_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: key + api_fieldname: key + description: The API key. + entity_fieldname: key + example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + type: string + - _key: last_login_time + api_fieldname: last_login_time + description: The timestamp of the latest API key usage, in milliseconds. + entity_fieldname: last_login_time + example: 1518630727688 + format: int64 + type: integer + - _key: name + api_fieldname: name + description: The display name for the API key. + entity_fieldname: name + example: API key gorgon + in: body + maxLength: 100 + parameter_fieldname: name + required: false + type: string - _key: object api_fieldname: object - description: 'Entity name: always ''branding_image''' + description: 'Entity name: always ''api-key''' entity_fieldname: object enum: - - branding_image - readOnly: true + - api-key type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - _key: owner + api_fieldname: owner + description: The owner of this API key, who is the creator by default. + entity_fieldname: owner + example: 01619571e2e89242ac12000600000000 + in: body + parameter_fieldname: owner + pattern: '[a-f0-9]{32}' + required: false type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: status + api_fieldname: status + description: The status of the API key. + entity_fieldname: status + enum: + - ACTIVE + - INACTIVE + enum_reference: api_key_status_enum + example: ACTIVE + in: body + parameter_fieldname: status + required: false type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + required: + - etag + - id + - key + - name + - object type: object - _key: '400' - description: Error in input data format, for example, image is too large. + description: Error in input data, for example, invalid API key name. schema: properties: - _key: code @@ -35310,7 +49091,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: An account ID or API key with the specified ID does not exist. schema: properties: - _key: code @@ -35360,270 +49141,90 @@ entities: return_info: custom: false self: true - type: light_theme_image - return_type: light_theme_image - summary: Upload a light theme image. - x_deprecation: null + type: subtenant_api_key + return_type: subtenant_api_key + summary: Update API key details. + x_deprecation: + comment: This endpoint is deprecated. Use PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/applications/{application_id}/access-keys/{access_key_id} + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] x_filter: {} - primary_key_field: reference + primary_key_field: id swagger_models: - - BrandingImage - - BrandingImageList + - ApiKeyInfoReq + - ApiKeyInfoResp + - ApiKeyUpdateReq + - GroupSummaryList tags: - - User interface configuration - images -- _key: login_history - field_renames: [] - fields: - - _key: date - api_fieldname: date - description: UTC time RFC3339 for this login attempt. - example: '2018-02-14T17:52:07Z' - format: date-time - readOnly: true - required: false - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - example: 127.0.0.1 - readOnly: true - required: false - type: string - - _key: success - api_fieldname: success - description: Flag indicating whether login attempt was successful or not. - example: true - readOnly: true - required: false - type: boolean - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, - like Gecko) Chrome/41.0.2227.1 Safari/537.36 - readOnly: true - required: false - type: string - group_id: Accounts - methods: [] - primary_key_field: null - swagger_models: - - LoginHistory - tags: [] -- _key: login_profile + - Tenant accounts - API keys +- _key: subtenant_dark_theme_color field_renames: [] fields: - - _key: id - _override: true - api_fieldname: id - description: ID of the identity provider. + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + example: '#f3f93e' + in: body + parameter_fieldname: color readOnly: false required: false type: string - - _key: name + x-nullable: true + - _key: reference _override: true - api_fieldname: name - description: Name of the identity provider. - readOnly: false - required: false - type: string - group_id: Accounts - methods: [] - primary_key_field: id - swagger_models: - - LoginProfile - tags: [] -- _key: parent_account - field_renames: [] - fields: - - _key: admin_email - api_fieldname: admin_email - description: The email address of the admin user who is the contact person of - the parent account. - example: info@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - readOnly: true - required: false - type: string - - _key: admin_name - api_fieldname: admin_name - description: The name of the admin user who is the contact person of the parent - account. - example: J. Doe - maxLength: 100 - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: The ID of the parent account. - example: 01619571dad80242ac12000600000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - group_id: Accounts - methods: [] - primary_key_field: id - swagger_models: - - ParentAccountInfo - tags: [] -- _key: password_policy - field_renames: [] - fields: - - _key: minimum_length - api_fieldname: minimum_length - description: Minimum length for the password. - example: '8' - maximum: 512 - minimum: 8 - readOnly: true - required: false - type: integer - group_id: Accounts - methods: [] - primary_key_field: null - swagger_models: - - PasswordPolicy - tags: [] -- _key: policy - field_renames: [] - fields: - - _key: action - api_fieldname: action - description: Comma-separated list of actions, empty string represents all actions. - example: GET - readOnly: true - required: false - type: string - - _key: allow - api_fieldname: allow - description: True or false controlling whether an action is allowed or not. - example: true - readOnly: true - required: false - type: boolean - - _key: feature - api_fieldname: feature - description: Feature name corresponding to this policy. - example: update-campaigns - readOnly: true - required: false - type: string - - _key: inherited - api_fieldname: inherited - description: Flag indicating whether this feature is inherited or overwritten - specifically. - example: false - readOnly: true - required: false - type: boolean - - _key: inherited_from - api_fieldname: inherited_from - description: An ID indicating where this policy is inherited from. - example: 016ada3ec2d46665bf66e32e00000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: inherited_type - api_fieldname: inherited_type - description: Indicates the type of entity this policy is inherited from. + api_fieldname: reference + description: Color name. enum: - - account - - template - - tier_template - enum_reference: policy_inherited_type_enum - example: account - readOnly: true - required: false - type: string - - _key: resource - api_fieldname: resource - description: Resource that is protected by this policy. - example: /v3/update-campaign - readOnly: true - required: false - type: string - group_id: Accounts - methods: [] - primary_key_field: null - swagger_models: - - FeaturePolicy - tags: [] -- _key: policy_group - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: The ID of the account this group belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - readOnly: true - required: false - type: string - - _key: apikey_count - api_fieldname: apikey_count - description: The number of API keys in this group. - example: 0 - format: int32 - readOnly: true - required: false - type: integer - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: The ID of the group. - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: subtenant_dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference readOnly: false - required: true - type: string - - _key: name - api_fieldname: name - description: The name of the group. - example: Administrators - maxLength: 100 - readOnly: true required: false type: string - _key: updated_at api_fieldname: updated_at - description: Last update UTC time RFC3339. + description: Last update time in UTC. example: '2018-02-14T15:24:14Z' format: date-time + in: body + parameter_fieldname: updated_at readOnly: true required: false type: string - - _key: user_count - api_fieldname: user_count - description: The number of users in this group. - example: 1 - format: int32 - readOnly: true - required: false - type: integer - group_id: Accounts + group_id: Branding methods: - - _key: api_keys - description: 'Manage policy groups. + - _key: delete + description: 'Resets the branding color to its dark theme default. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/api-keys + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -35631,245 +49232,337 @@ entities: - etag - type - filter - - total_count - - has_more - - data field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: id - api_fieldname: group_id - description: The ID of the group. - entity_fieldname: id - external_param: false in: path - name: group_id - parameter_fieldname: group_id + name: account_id + parameter_fieldname: account_id required: true type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: policy_group_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: reference + _override: true + api_fieldname: reference + description: The name of the branding color. + entity_fieldname: reference + enum: &id010 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: subtenant_dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - foreign_key: - entity: api_key - group_id: Accounts - method: get - mode: api_keys - operation_id: getApiKeysOfGroup - pagination: true - parameter_map: - group_id: id - path: /v3/policy-groups/{group_id}/api-keys + group_id: Branding + method: delete + mode: delete + operation_id: resetAccountDarkColor + pagination: false + path: /v3/accounts/{account_id}/branding-colors/dark/{reference} request_body: json request_content_type: application/json responses: - - _key: '200' - description: Successful operation. + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. schema: - foreign_key: - entity: api_key - group: Accounts - pagination: true properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. items: - description: Represents an API key in Device Management. - foreign_key: - entity: api_key - group: Accounts properties: - - _key: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - description: The timestamp of the API key creation in the storage, in - milliseconds. - example: 1518630727683 - format: int64 - type: integer - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: groups - description: A list of group IDs this API key belongs to. - items: - type: string - type: array - - _key: id - description: The ID of the API key. - example: 01619571f7020242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: key - description: The API key. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 + - _key: message + description: Message describing the error condition. type: string - - _key: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - _key: name - description: The display name for the API key. - example: API key gorgon - maxLength: 100 + description: Name of the field which caused the error. type: string - - _key: object - description: 'Entity name: always ''api-key''' - enum: - - api-key + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - - _key: owner - description: The owner of this API key, who is the creator by default. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' + - _key: name + description: Name of the field which caused the error. type: string - - _key: status - description: The status of the API key. - enum: - - ACTIVE - - INACTIVE - example: ACTIVE + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: Color or account not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + - _key: name + description: Name of the field which caused the error. type: string required: - - etag - - id - - key - name - - object + - message type: object type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: true + self: false + type: void + return_type: void + spec: + return_type: void + summary: Reset branding color to default. + x_deprecation: null + x_filter: {} + - _key: read + description: 'Retrieve the requested dark theme branding color. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + - color + - updated_at + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + external_param: true + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id010 + enum_reference: subtenant_dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + group_id: Branding + method: get + mode: read + operation_id: getAccountDarkColor + pagination: false + path: /v3/accounts/{account_id}/branding-colors/dark/{reference} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + foreign_key: + entity: subtenant_light_theme_color + group: Branding + properties: + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color required: false - type: integer + type: string + x-nullable: true - _key: object api_fieldname: object - description: 'Entity name: always `list`.' + description: 'Entity name: always ''branding_color''' entity_fieldname: object enum: - - list + - branding_color + external_param: true + in: body + name: object + parameter_fieldname: object + readOnly: true + required: false + schema_param: true type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference enum: - - ASC - - DESC - enum_reference: account_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: light_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true required: false type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count type: object - _key: '401' description: Authentication failure. @@ -35968,7 +49661,7 @@ entities: - type type: object - _key: '404' - description: A group with that ID does not exist. + description: Color or account not found. schema: properties: - _key: code @@ -36017,23 +49710,34 @@ entities: type: object return_info: custom: false - self: false - type: api_key - return_type: paginated_response(api_key) - summary: Get the API keys of a group. + self: true + type: subtenant_dark_theme_color + return_type: subtenant_dark_theme_color + summary: Get dark theme branding color. x_deprecation: null x_filter: {} - - _key: list - description: 'Retrieve all group information. + - _key: update + additional_operations: + - notes: Bulk operation is not appriate for SDK's entity model, this functionality + is covered by the update method. + operation_id: bulkSetAccountDarkColors + description: 'Update a dark theme branding color. + + Note: This endpoint is restricted to administrators. **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups \ + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary + \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{ "color": "#f3f93e" }'' ```' drop_fields: @@ -36041,269 +49745,133 @@ entities: - etag - type - filter - - total_count - - has_more - - data - - name__eq field_renames: [] fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false + in: path + name: account_id + parameter_fieldname: account_id + required: true type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color required: false type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: policy_group_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order + x-nullable: true + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference + enum: *id010 + enum_reference: subtenant_dark_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true required: false type: string - foreign_key: - entity: policy_group - group: Accounts - foreign_key_priority: self - group_id: Accounts - method: get - mode: list - operation_id: getAllGroups - pagination: true - parameter_map: - group_id: id - path: /v3/policy-groups + group_id: Branding + method: put + mode: update + operation_id: setAccountDarkColor + pagination: false + path: /v3/accounts/{account_id}/branding-colors/dark/{reference} request_body: json request_content_type: application/json responses: - _key: '200' - description: Successful operation. + description: Color has been set successfully. schema: foreign_key: - entity: policy_group - group: Accounts - pagination: true + entity: subtenant_light_theme_color + group: Branding properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' + - _key: color + api_fieldname: color + description: The color given as name (purple) or as a hex code. + entity_fieldname: color + example: '#f3f93e' + in: body + parameter_fieldname: color required: false type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: This object contains basic information about groups. - foreign_key: - entity: subtenant_policy_group - group: Accounts - properties: - - _key: account_id - description: The ID of the account this group belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: apikey_count - description: The number of API keys in this group. - example: 0 - format: int32 - type: integer - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: id - description: The ID of the group. - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: name - description: The name of the group. - example: Administrators - maxLength: 100 - type: string - - _key: object - description: 'Entity name: always `group`.' - enum: - - group - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: user_count - description: The number of users in this group. - example: 1 - format: int32 - type: integer - required: - - account_id - - apikey_count - - etag - - id - - name - - object - - user_count - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer + x-nullable: true - _key: object api_fieldname: object - description: 'Entity name: always `list`.' + description: 'Entity name: always ''branding_color''' entity_fieldname: object enum: - - list - type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: subtenant_api_key_order_enum + - branding_color external_param: true - in: query - name: order - parameter_fieldname: order + in: body + name: object + parameter_fieldname: object + readOnly: true required: false + schema_param: true type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. + - _key: reference + _override: true + api_fieldname: reference + description: Color name. + entity_fieldname: reference enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - error_color + - primary + - secondary + - success_color + - warning_color + - canvas_background + - canvas_background_font_color + - workspace_background + - workspace_background_font_color + - info_color + - info_font_color + - primary_font_color + - secondary_font_color + - error_font_color + - success_font_color + - warning_font_color + enum_reference: light_theme_color_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + in: body + parameter_fieldname: updated_at + readOnly: true + required: false type: string - required: - - code - - message - - object - - request_id - - type type: object - - _key: '403' - description: Forbidden. + - _key: '400' + description: Error in input data format. schema: properties: - _key: code @@ -36337,155 +49905,18 @@ entities: type: string - _key: request_id description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: policy_group - return_type: paginated_response(policy_group) - summary: Get all group information. - x_deprecation: null - x_filter: - name: - - eq - - _key: read - description: 'Retrieve general information about a group. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id} - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - created_at - - updated_at - - account_id - - name - - user_count - - apikey_count - field_renames: [] - fields: - - _key: id - api_fieldname: id - description: The ID of the group. - entity_fieldname: id - example: 01619571dec00242ac12000600000000 - in: path - parameter_fieldname: group_id - pattern: '[a-f0-9]{32}' - required: true - type: string - group_id: Accounts - method: get - mode: read - operation_id: getGroupSummary - pagination: false - parameter_map: - group_id: id - path: /v3/policy-groups/{group_id} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - description: This object contains basic information about groups. - foreign_key: - entity: subtenant_policy_group - group: Accounts - properties: - - _key: account_id - api_fieldname: account_id - description: The ID of the account this group belongs to. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: apikey_count - api_fieldname: apikey_count - description: The number of API keys in this group. - entity_fieldname: apikey_count - example: 0 - format: int32 - type: integer - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - example: '1' - type: string - - _key: id - api_fieldname: id - description: The ID of the group. - entity_fieldname: id - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: name - api_fieldname: name - description: The name of the group. - entity_fieldname: name - example: Administrators - maxLength: 100 - type: string - - _key: object - api_fieldname: object - description: 'Entity name: always `group`.' - entity_fieldname: object - enum: - - group - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update UTC time RFC3339. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: user_count - api_fieldname: user_count - description: The number of users in this group. - entity_fieldname: user_count - example: 1 - format: int32 - type: integer required: - - account_id - - apikey_count - - etag - - id - - name + - code + - message - object - - user_count + - request_id + - type type: object - _key: '401' description: Authentication failure. @@ -36584,7 +50015,7 @@ entities: - type type: object - _key: '404' - description: A group with that ID does not exist. + description: Color or account not found. schema: properties: - _key: code @@ -36634,480 +50065,179 @@ entities: return_info: custom: false self: true - type: policy_group - return_type: policy_group - summary: Get group information. + type: subtenant_dark_theme_color + return_type: subtenant_dark_theme_color + summary: Updates a dark theme branding color. x_deprecation: null x_filter: {} - - _key: users - description: 'Retrieve users of a group with details. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/policy-groups/{group_id}/users - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - total_count - - has_more - - data - - status__eq - - status__in - - status__nin - field_renames: [] - fields: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: id - api_fieldname: group_id - description: The ID of the group. - entity_fieldname: id - external_param: false - in: path - name: group_id - parameter_fieldname: group_id - required: true - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: policy_group_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: user - group_id: Accounts - method: get - mode: users - operation_id: getUsersOfGroup - pagination: true - parameter_map: - group_id: id - path: /v3/policy-groups/{group_id}/users - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: user - group: Accounts - pagination: true - properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: Represents a user in Device Management. - foreign_key: - entity: user - group: Accounts - properties: - - _key: account_id - description: The ID of the account. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: active_sessions - description: List of active user sessions. - items: - description: Represents an active user session. - foreign_key: - entity: active_session - group: Accounts - properties: - - _key: account_id - api_fieldname: account_id - description: The UUID of the account. - entity_fieldname: account_id - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - entity_fieldname: ip_address - example: 127.0.0.1 - type: string - - _key: login_time - api_fieldname: login_time - description: The login time of the user. - entity_fieldname: login_time - example: '2018-02-14T17:52:07Z' - format: date-time - type: string - - _key: object - api_fieldname: object - description: 'Entity name: always ''user-session''' - entity_fieldname: object - enum: - - user-session - type: string - - _key: reference_token - api_fieldname: reference_token - description: The reference token. - entity_fieldname: reference_token - example: rt_CI6+5hS8p9DrCmkRyS6u4doUdiXr71dX7MqD+g0327hYQthEkYTxMMnCwHyf1rDdk - type: string - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - entity_fieldname: user_agent - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 - type: string - required: - - account_id - - ip_address - - login_time - - object - - reference_token - - user_agent - type: object - type: array - - _key: address - description: Address. - example: 110 Fulbourn Rd, Cambridge, United Kingdom - type: string - x-nullable: true - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: creation_time - description: A timestamp of the user creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - type: integer - - _key: custom_fields - additionalProperties: - type: string - description: User's account-specific custom properties. The value is - a string. - type: object - x-nullable: true - - _key: email - description: The email address. - example: user@arm.com - pattern: ^(?=.{3,254}$).+\@.+ - type: string - - _key: email_verified - description: A flag indicating whether the user's email address has - been verified or not. - example: true - type: boolean - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: full_name - description: The full name of the user. - example: User Doe - maxLength: 100 - type: string - x-nullable: true - - _key: groups - description: A list of IDs of the groups this user belongs to. - items: - type: string - type: array - - _key: id - description: The ID of the user. - example: 01619571e2e89242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: is_gtc_accepted - description: A flag indicating that the user has accepted General Terms - and Conditions. - example: true - type: boolean - - _key: is_marketing_accepted - description: A flag indicating that the user has consented to receive - marketing information. - example: true - type: boolean - - _key: is_totp_enabled - description: A flag indicating whether two-factor authentication (TOTP) - has been enabled. - example: true - type: boolean - - _key: last_login_time - description: A timestamp of the latest login of the user, in milliseconds. - example: 1518630727688 - format: int64 - type: integer - - _key: login_history - description: Timestamps, succeedings, IP addresses and user agent information - of the last five logins of the user, with timestamps in RFC3339 format. - items: - description: Represents an entry in login history. - foreign_key: - entity: login_history - group: Accounts - properties: - - _key: date - api_fieldname: date - description: UTC time RFC3339 for this login attempt. - entity_fieldname: date - example: '2018-02-14T17:52:07Z' - format: date-time - type: string - - _key: ip_address - api_fieldname: ip_address - description: IP address of the client. - entity_fieldname: ip_address - example: 127.0.0.1 - type: string - - _key: success - api_fieldname: success - description: Flag indicating whether login attempt was successful - or not. - entity_fieldname: success - example: true - type: boolean - - _key: user_agent - api_fieldname: user_agent - description: User Agent header from the login request. - entity_fieldname: user_agent - example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 - (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36 - type: string - required: - - date - - ip_address - - success - - user_agent - type: object - maxItems: 5 - type: array - - _key: login_profiles - description: A list of login profiles for the user. Specified as the - identity providers the user is associated with. - items: - description: Represents a user login profile in Device Management. - foreign_key: - entity: login_profile - group: Accounts - properties: - - _key: id - _override: true - api_fieldname: id - description: ID of the identity provider. - entity_fieldname: id - readOnly: false - type: string - - _key: name - _override: true - api_fieldname: name - description: Name of the identity provider. - entity_fieldname: name - readOnly: false - type: string - - _key: type - api_fieldname: type - description: Identity provider type. - entity_fieldname: type - enum: - - NATIVE - - MBED - - SAML2 - - OIDC - readOnly: true - type: string - required: - - id - type: object - type: array - x-nullable: true - - _key: object - description: 'Entity name: always `user`.' - enum: - - user - type: string - - _key: password - description: The password when creating a new user. It will be generated - when not present in the request. - example: PZf9eEUH43DAPE9ULINFeuj - type: string - x-nullable: true - - _key: password_changed_time - description: A timestamp of the latest change of the user password, - in milliseconds. - example: 1518630727688 - format: int64 - type: integer - - _key: phone_number - description: Phone number. - example: +44 (1223) 400 400 - maxLength: 100 - type: string - x-nullable: true - - _key: status - description: The status of the user. ENROLLING state indicates that - the user is in the middle of the enrollment process. INVITED means - that the user has not accepted the invitation request. RESET means - that the password must be changed immediately. INACTIVE users are - locked out and not permitted to use the system. - enum: - - ENROLLING - - INVITED - - ACTIVE - - RESET - - INACTIVE - example: ACTIVE - type: string - - _key: totp_scratch_codes - description: A list of scratch codes for the two-factor authentication. - Visible only when 2FA is requested to be enabled or the codes regenerated. - items: - type: string - type: array - x-nullable: true - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time - type: string - - _key: username - description: A username. - example: admin - pattern: '[\w\-,._@+=]{4,30}' - type: string - x-nullable: true - required: - - account_id - - email - - etag - - id - - object - - status - type: object - type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: object - api_fieldname: object - description: 'Entity name: always `list`.' - entity_fieldname: object - enum: - - list - type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: account_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer - required: - - data - - has_more - - limit - - object - - total_count - type: object + primary_key_field: reference + swagger_models: + - BrandingColor + tags: + - Tenant user interface configuration - colors +- _key: subtenant_dark_theme_image + field_renames: [] + fields: + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: subtenant_dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + readOnly: false + required: false + type: string + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + required: false + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true + required: false + type: string + group_id: Branding + methods: + - _key: delete + description: 'Revert an account branding image to dark theme default. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + external_param: true + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: reference + _override: true + api_fieldname: reference + description: Name of the branding images (icon or picture). + entity_fieldname: reference + enum: &id011 + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: subtenant_dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + group_id: Branding + method: post + mode: delete + operation_id: clearAccountDarkImage + pagination: false + path: /v3/accounts/{account_id}/branding-images/dark/{reference}/clear + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Image reverted successfully. - _key: '401' description: Authentication failure. schema: @@ -37205,7 +50335,7 @@ entities: - type type: object - _key: '404' - description: A group with that ID does not exist. + description: Unknown image reference, or account not found. schema: properties: - _key: code @@ -37224,434 +50354,56 @@ entities: description: Name of the field which caused the error. type: string required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: false - type: user - return_type: paginated_response(user) - summary: Get users of a group. - x_deprecation: null - x_filter: - status: - - eq - - in - - nin - primary_key_field: id - swagger_models: - - ApiKeyInfoRespList - - GroupSummary - - GroupSummaryList - - UserInfoRespList - tags: - - Account - policy groups -- _key: pre_shared_key - field_renames: [] - fields: - - _key: created_at - api_fieldname: created_at - description: The date-time (RFC3339) when this PSK was uploaded to Device Management. - example: '2017-07-21T17:32:28.012Z' - format: date-time - readOnly: true - required: false - type: string - - _key: endpoint_name - _override: true - api_fieldname: endpoint_name - description: The unique endpoint identifier that this PSK applies to. 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) - (non-control) ASCII characters. - example: my-endpoint-0001 - getter_custom_method: pre_shared_key_id_getter - pattern: ^[ -~]{16,64}$ - readOnly: false - required: false - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: id - _override: true - api_fieldname: id - description: The Id of the pre_shared_key, shadows the endpoint_name - getter_custom_method: pre_shared_key_id_getter - readOnly: false - required: false - setter_custom_method: pre_shared_key_id_setter - type: string - group_id: Security - methods: - - _key: create - description: "Upload a PSK for an endpoint to allow it to bootstrap. The existing\ - \ key cannot be overwritten, but needs\nto be deleted first in the case of re-setting\ - \ a PSK for an endpoint.\n\n**Note**: The PSK APIs are available only to accounts\ - \ that have this feature enabled.\n\n**Example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v2/device-shared-keys\ - \ \\\n-H \"Authorization: Bearer \" \\\n-H \"content-type: application/json\"\ - \ \\\n -d '{ \"endpoint_name\": \"my-endpoint-0001\", \"secret_hex\": \"\ - 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a\" }'\n```" - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: endpoint_name - _override: true - api_fieldname: endpoint_name - entity_fieldname: endpoint_name - getter_custom_method: pre_shared_key_id_getter - readOnly: false - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: id - _override: true - api_fieldname: id - description: The Id of the pre_shared_key, shadows the endpoint_name - entity_fieldname: id - example: my-endpoint-0001 - getter_custom_method: pre_shared_key_id_getter - in: body - name: endpoint_name - pattern: ^[ -~]{16,64}$ - schema_param: true - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: secret_hex - api_fieldname: secret_hex - description: The secret of the PSK in hexadecimal. It is not case sensitive; - 4a is same as 4A, and it is allowed with or without 0x in the beginning. The - minimum length of the secret is 128 bits and maximum 256 bits. - entity_fieldname: secret_hex - example: 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a - external_param: true - in: body - name: secret_hex - parameter_fieldname: secret_hex - pattern: ^(0[xX])?[0-9a-fA-F]{32,64}$ - required: true - schema_param: true - type: string - group_id: Security - method: post - mode: create - operation_id: uploadPreSharedKey - pagination: false - parameter_map: - endpoint_name: id - path: /v2/device-shared-keys - request_body: json - request_content_type: application/json - responses: - - _key: '201' - description: Successfully created. - - _key: '400' - description: Bad request. Contains comma-separated errors INVALID_ENDPOINT_NAME, - INVALID_SECRET_HEX, and MALFORMED_JSON_CONTENT. - schema: - type: string - - _key: '401' - description: Authentication failure. - - _key: '403' - description: Forbidden. You need to read and accept the PSK license in Device - Management Portal. - - _key: '409' - description: Conflict. The PSK for the endpoint already exists and cannot be - overwritten. Contains error KEY_ALREADY_EXISTS_FOR_ENDPOINT. - schema: - type: string - return_info: - custom: false - self: true - type: pre_shared_key - return_type: pre_shared_key - summary: Upload a PSK to Pelion Device Management. - x_deprecation: null - x_filter: {} - - _key: delete - description: 'Remove a PSK. - - - **Example:** - - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 - \ - - -H "Authorization: Bearer " - - ```' - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: endpoint_name - _override: true - api_fieldname: endpoint_name - entity_fieldname: endpoint_name - getter_custom_method: pre_shared_key_id_getter - readOnly: false - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: id - _override: true - api_fieldname: id - description: The Id of the pre_shared_key, shadows the endpoint_name - entity_fieldname: id - getter_custom_method: pre_shared_key_id_getter - in: path - name: endpoint_name - required: true - setter_custom_method: pre_shared_key_id_setter - type: string - group_id: Security - method: delete - mode: delete - operation_id: deletePreSharedKey - pagination: false - parameter_map: - endpoint_name: id - path: /v2/device-shared-keys/{endpoint_name} - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Successfully deleted. Responds even if the endpoint does not have - an associated PSK. - - _key: '400' - description: Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME. - schema: - type: string - - _key: '401' - description: Authentication failure. - return_info: - custom: false - self: true - type: pre_shared_key - return_type: pre_shared_key - summary: Remove a PSK. - x_deprecation: null - x_filter: {} - - _key: list - description: 'Retrieve pre-shared keys (PSKs) with pagination. Default page size - of 50 entries. - - - **Example:** - - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys \ - - -H "Authorization: Bearer " - - ```' - drop_fields: - - object - - etag - - type - - filter - - order - - has_more - - continuation_marker - - data - field_renames: [] - fields: - - _key: after - api_fieldname: after - description: An offset token for fetching a specific page. Provided by the server. - entity_fieldname: after - example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 - external_param: true - in: query - name: after - parameter_fieldname: after - required: false - type: string - - _key: endpoint_name - _override: true - api_fieldname: endpoint_name - entity_fieldname: endpoint_name - getter_custom_method: pre_shared_key_id_getter - readOnly: false - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: id - _override: true - api_fieldname: id - description: The Id of the pre_shared_key, shadows the endpoint_name - entity_fieldname: id - getter_custom_method: pre_shared_key_id_getter - setter_custom_method: pre_shared_key_id_setter - type: string - - _key: limit - api_fieldname: limit - description: The number of entries per page. - entity_fieldname: limit - example: 50 - external_param: true - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - foreign_key: - entity: pre_shared_key - group: Security - foreign_key_priority: self - group_id: Security - method: get - mode: list - operation_id: listPreSharedKeys - pagination: true - parameter_map: - endpoint_name: id - path: /v2/device-shared-keys - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: List of PSKs. - schema: - foreign_key: - entity: pre_shared_key - group: Security - pagination: true - properties: - - _key: after - api_fieldname: after - description: An offset token for current page. - entity_fieldname: after - example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810004 - type: string - - _key: continuation_marker - api_fieldname: continuation_marker - description: An offset token for fetching the next page. Note that exactly - the same limit needs to be used on the request for fetching subsequent - pages. - entity_fieldname: continuation_marker - example: 001e001000120010fac8f300487f11e8839a459edde8bd42f07fffffebf07fffffebb1219cc7862b64bbaf775dc545e274810005 - type: string - - _key: data - api_fieldname: data - description: Array of the PSK entries. The array is empty if there are no - PSKs. - entity_fieldname: data - items: - foreign_key: - entity: pre_shared_key - group: Security - properties: - - _key: created_at - description: The date-time (RFC3339) when this PSK was uploaded to Device - Management. - example: '2017-07-21T17:32:28.012Z' - format: date-time - type: string - - _key: endpoint_name - _override: true - description: The unique endpoint identifier that this PSK applies to. - 16-64 [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) - (non-control) ASCII characters. - example: my-endpoint-0001 - getter_custom_method: pre_shared_key_id_getter - pattern: ^[ -~]{16,64}$ - readOnly: false - setter_custom_method: pre_shared_key_id_setter - type: string - required: - - endpoint_name + - name + - message type: object - minLength: 0 type: array - - _key: has_more - api_fieldname: has_more - description: More results are available. - entity_fieldname: has_more - example: true - type: boolean - - _key: limit - api_fieldname: limit - description: The value of limit query parameter from the request, or default - if not specified. - entity_fieldname: limit - example: 50 - type: integer + - _key: message + description: A human readable informative explanation + example: Validation error + type: string - _key: object - api_fieldname: object - description: The type of this API object is a "list". - entity_fieldname: object - example: list + description: Entity name, always `error`. + enum: + - error type: string - - _key: order - api_fieldname: order - description: Record order based on creation time. - entity_fieldname: order - example: DESC + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string required: + - code + - message - object - - limit - - order - - has_more - - data + - request_id + - type type: object - - _key: '400' - description: Bad request. Contains the error as a string, either TOKEN_NOT_FOUND - or INVALID_LIMIT. return_info: custom: false self: true - type: pre_shared_key - return_type: paginated_response(pre_shared_key) - summary: List PSKs. + type: subtenant_dark_theme_image + return_type: subtenant_dark_theme_image + summary: Revert an image to dark theme default. x_deprecation: null x_filter: {} - _key: read - description: 'Check if a PSK for an endpoint exists or not. The response does - not contain the secret itself. + description: 'Retrieve metadata of one account dark theme branding image. + Note: This endpoint is restricted to administrators. - **Example:** + **Example:** ``` - curl -X GET https://api.us-east-1.mbedcloud.com/v2/device-shared-keys/my-endpoint-0001 + curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} \ - -H "Authorization: Bearer " + -H ''Authorization: Bearer '' ```' drop_fields: @@ -37659,219 +50411,423 @@ entities: - etag - type - filter - - created_at + - static_uri + - updated_at field_renames: [] fields: - - _key: endpoint_name - _override: true - api_fieldname: endpoint_name - description: The unique endpoint identifier that this PSK applies to. 16-64 - [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) (non-control) - ASCII characters. - entity_fieldname: endpoint_name - example: my-endpoint-0001 - getter_custom_method: pre_shared_key_id_getter - pattern: ^[ -~]{16,64}$ - readOnly: false - setter_custom_method: pre_shared_key_id_setter + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + external_param: true + in: path + name: account_id + parameter_fieldname: account_id + required: true type: string - - _key: id + - _key: reference _override: true - api_fieldname: id - description: The Id of the pre_shared_key, shadows the endpoint_name - entity_fieldname: id - getter_custom_method: pre_shared_key_id_getter + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id011 + enum_reference: subtenant_dark_theme_image_reference_enum in: path - name: endpoint_name + is_primary_key: true + name: reference required: true - setter_custom_method: pre_shared_key_id_setter type: string - group_id: Security + group_id: Branding method: get mode: read - operation_id: getPreSharedKey + operation_id: getAccountDarkImageData pagination: false - parameter_map: - endpoint_name: id - path: /v2/device-shared-keys/{endpoint_name} + path: /v3/accounts/{account_id}/branding-images/dark/{reference} request_body: json request_content_type: application/json responses: - _key: '200' - description: Pre-shared key for the device (does not contain secret). + description: Successful operation. schema: foreign_key: - entity: pre_shared_key - group: Security + entity: subtenant_light_theme_image + group: Branding properties: - - _key: created_at - api_fieldname: created_at - description: The date-time (RFC3339) when this PSK was uploaded to Device - Management. - entity_fieldname: created_at - example: '2017-07-21T17:32:28.012Z' - format: date-time + - _key: object + api_fieldname: object + description: 'Entity name: always ''branding_image''' + entity_fieldname: object + enum: + - branding_image + readOnly: true type: string - - _key: endpoint_name + - _key: reference _override: true - api_fieldname: endpoint_name - description: The unique endpoint identifier that this PSK applies to. 16-64 - [printable](https://en.wikipedia.org/wiki/ASCII#Printable_characters) - (non-control) ASCII characters. - entity_fieldname: endpoint_name - example: my-endpoint-0001 - getter_custom_method: pre_shared_key_id_getter - pattern: ^[ -~]{16,64}$ - readOnly: false - setter_custom_method: pre_shared_key_id_setter + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: light_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true type: string - required: - - endpoint_name type: object - - _key: '400' - description: Bad request. Endpoint name validation failed. Contains error INVALID_ENDPOINT_NAME. - schema: - type: string - _key: '401' description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: The PSK does not exist. + description: Unknown image reference, or account not found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true - type: pre_shared_key - return_type: pre_shared_key - summary: Get a PSK. + type: subtenant_dark_theme_image + return_type: subtenant_dark_theme_image + summary: Get metadata of a dark theme image. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - ListOfPreSharedKeysWithoutSecret - - PreSharedKey - - PreSharedKeyWithoutSecret - tags: - - PreSharedKeys -- _key: server_credentials - field_renames: [] - fields: - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - format: date-time - readOnly: true - required: false - type: string - - _key: id - api_fieldname: id - description: Unique entity ID. - readOnly: true - required: false - type: string - - _key: server_certificate - api_fieldname: server_certificate - description: PEM-format X.509 server certificate used to validate the server certificate - received during the TLS/DTLS handshake. - readOnly: true - required: false - type: string - - _key: server_uri - api_fieldname: server_uri - description: Server URI that the client connects to. - readOnly: true - required: false - type: string - group_id: Security - methods: - - _key: get_bootstrap + - _key: update additional_operations: - - notes: The information returned by this endpoint can be obtained by calling - `get_bootstrap`. - operation_id: getAllServerCredentials - description: 'Return bootstrap server credentials for client to connect to bootstrap - server. - - - **Example:** - - ``` - - curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/bootstrap - \ - - -H "Authorization: Bearer " + - notes: The multipart endpoint is used by the SDKs as it offers the same functionality + as the standard upload endpoint. + operation_id: uploadAccountDarkImage + description: 'Upload a new account dark theme branding image as form data in PNG + or JPEG format. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - id - - created_at - - server_certificate - - server_uri + - static_uri + - updated_at field_renames: [] - fields: [] - group_id: Security - method: get - mode: get_bootstrap - operation_id: getBootstrapServerCredentials + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account. + entity_fieldname: account_id + external_param: true + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: image + api_fieldname: image + description: The image in PNG or JPEG format as multipart form data. + entity_fieldname: image + external_param: true + in: stream + name: image + parameter_fieldname: image + required: true + type: file + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: *id011 + enum_reference: subtenant_dark_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true + type: string + group_id: Branding + method: post + mode: update + operation_id: uploadAccountDarkImageMultipart pagination: false - path: /v3/server-credentials/bootstrap - request_body: json - request_content_type: application/json + path: /v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart + request_body: file + request_content_type: multipart/form-data responses: - - _key: '200' - description: Bootstrap server credentials fetched successfully. - examples: - - _key: Success - created_at: '2017-12-11T14:22:20.009Z' - etag: '1' - id: 015fee4431fd38c98640fbfb00000000 - object: server-credentials - server_certificate: '-----BEGIN CERTIFICATE-----\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\n-----END - CERTIFICATE-----' - server_uri: coaps://coap.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000 + - _key: '201' + description: Image uploaded successfully. + headers: + - _key: Content-Location + description: Location of the image metadata. + type: string + - _key: Location + description: Location of the image binary. + type: string schema: foreign_key: - entity: server_credentials - group: Security - properties: - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - format: date-time - type: string - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - type: string - - _key: id - api_fieldname: id - description: Unique entity ID. - entity_fieldname: id - type: string + entity: subtenant_light_theme_image + group: Branding + properties: - _key: object api_fieldname: object - description: 'Entity name: always `server-credentials`.' + description: 'Entity name: always ''branding_image''' entity_fieldname: object + enum: + - branding_image + readOnly: true type: string - - _key: server_certificate - api_fieldname: server_certificate - description: PEM-format X.509 server certificate used to validate the server - certificate received during the TLS/DTLS handshake. - entity_fieldname: server_certificate + - _key: reference + _override: true + api_fieldname: reference + description: Name of the image. + entity_fieldname: reference + enum: + - brand_logo_portrait + - brand_logo_square + - brand_logo_landscape + - brand_logo_email + - desktop_background_landscape + - desktop_background_square + - desktop_background_portrait + - carousel_image_portrait_0 + - carousel_image_portrait_1 + - carousel_image_portrait_2 + - carousel_image_portrait_3 + - carousel_image_portrait_4 + - carousel_image_portrait_5 + - carousel_image_portrait_6 + - carousel_image_portrait_7 + - carousel_image_portrait_8 + - carousel_image_portrait_9 + - carousel_image_square_0 + - carousel_image_square_1 + - carousel_image_square_2 + - carousel_image_square_3 + - carousel_image_square_4 + - carousel_image_square_5 + - carousel_image_square_6 + - carousel_image_square_7 + - carousel_image_square_8 + - carousel_image_square_9 + - carousel_image_landscape_0 + - carousel_image_landscape_1 + - carousel_image_landscape_2 + - carousel_image_landscape_3 + - carousel_image_landscape_4 + - carousel_image_landscape_5 + - carousel_image_landscape_6 + - carousel_image_landscape_7 + - carousel_image_landscape_8 + - carousel_image_landscape_9 + enum_reference: light_theme_image_reference_enum + in: path + is_primary_key: true + name: reference + required: true type: string - - _key: server_uri - api_fieldname: server_uri - description: Server URI that the client connects to. - entity_fieldname: server_uri + - _key: static_uri + api_fieldname: static_uri + description: The static link to the image. + entity_fieldname: static_uri + example: https://static.mbed.com/123456789.jpg + format: uri + readOnly: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update time in UTC. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + readOnly: true type: string type: object - _key: '400' - description: Bad request. + description: Error in input data format, for example, image is too large. schema: properties: - _key: code @@ -37919,14 +50875,7 @@ entities: - type type: object - _key: '401' - description: Invalid access token. - examples: - - _key: Authentication Error - code: 401 - message: Invalid access token. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: invalid_auth + description: Authentication failure. schema: properties: - _key: code @@ -37973,102 +50922,8 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: server_credentials - return_type: server_credentials - summary: Fetch bootstrap server credentials. - x_deprecation: null - x_filter: {} - - _key: get_lwm2m - additional_operations: - - notes: The information returned by this endpoint can be obtained by calling - `get_lwm2m`. - operation_id: getAllServerCredentials - description: 'Return LwM2M server credentials for client to connect to LwM2M server. - - - **Example:** - - ``` - - curl -X GET http://api.us-east-1.mbedcloud.com/v3/server-credentials/lwm2m \ - - -H "Authorization: Bearer " - - ```' - drop_fields: - - object - - etag - - type - - filter - - id - - created_at - - server_certificate - - server_uri - field_renames: [] - fields: [] - group_id: Security - method: get - mode: get_lwm2m - operation_id: getL2M2MServerCredentials - pagination: false - path: /v3/server-credentials/lwm2m - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: LwM2M server credentials fetched successfully. - examples: - - _key: Success - created_at: '2017-12-11T14:22:20.009Z' - etag: '1' - id: 015fee4431fd38c98640fbfb00000000 - object: server-credentials - server_certificate: '-----BEGIN CERTIFICATE-----\nMIICNTCCAdugAwIBAgIQXCeldn1YhYpDkaBhq8+mWTAKBggqhkjOPQQDAjByMQsw\nCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNVBAcTCUNh\nbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIEludGVncmF0\naW9uIEJvb3RzdHJhcENBMCAXDTE3MDUxNTE5NDkxMVoYDzIwNTIwNTE1MTk1OTEw\nWjByMQswCQYDVQQGEwJHQjEXMBUGA1UECBMOQ2FtYnJpZGdlc2hpcmUxEjAQBgNV\nBAcTCUNhbWJyaWRnZTEQMA4GA1UEChMHQVJNIEx0ZDEkMCIGA1UEAxMbQVJNIElu\ndGVncmF0aW9uIEJvb3RzdHJhcENBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\ni3yGw4hU5l/gV04brCmC6n2RAGOnSgW8VMVxJzMZGy76Qfh6mgxd/LM3AZnFyb54\nWx3ssBod3ORvVwT0Osqo0qNRME8wCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFBPvafpiPwCG9AW4tuay8dtpELQ5MBAGCSsGAQQBgjcVAQQD\nAgEAMAoGCCqGSM49BAMCA0gAMEUCIQCiUIgPVegmSeb1cYYzKQVM+f0fFJiShdlc\nSAKewnmoWQIgPv48oL/TDxWDVrzy+hYmesFoqryRPGlENvl0oYJ2em4=\n-----END - CERTIFICATE-----' - server_uri: coaps://mds.us-east-1.mbedcloud.com:5684?aid=015843e32ec902420a015e0700000000 - schema: - foreign_key: - entity: server_credentials - group: Security - properties: - - _key: created_at - api_fieldname: created_at - description: Creation UTC time RFC3339. - entity_fieldname: created_at - format: date-time - type: string - - _key: etag - api_fieldname: etag - description: API resource entity version. - entity_fieldname: etag - type: string - - _key: id - api_fieldname: id - description: Unique entity ID. - entity_fieldname: id - type: string - - _key: object - api_fieldname: object - description: 'Entity name: always `server-credentials`.' - entity_fieldname: object - type: string - - _key: server_certificate - api_fieldname: server_certificate - description: PEM-format X.509 server certificate used to validate the server - certificate received during the TLS/DTLS handshake. - entity_fieldname: server_certificate - type: string - - _key: server_uri - api_fieldname: server_uri - description: Server URI that the client connects to. - entity_fieldname: server_uri - type: string - type: object - - _key: '400' - description: Bad request. + - _key: '403' + description: Forbidden. schema: properties: - _key: code @@ -38115,15 +50970,8 @@ entities: - request_id - type type: object - - _key: '401' - description: Invalid access token. - examples: - - _key: Authentication Error - code: 401 - message: Invalid access token. - object: error - request_id: 015fee4431fd38c98640fbfb00000000 - type: invalid_auth + - _key: '404' + description: Unknown image reference. schema: properties: - _key: code @@ -38173,22 +51021,22 @@ entities: return_info: custom: false self: true - type: server_credentials - return_type: server_credentials - summary: Fetch LwM2M server credentials. + type: subtenant_dark_theme_image + return_type: subtenant_dark_theme_image + summary: Upload a dark theme image. x_deprecation: null x_filter: {} - primary_key_field: id + primary_key_field: reference swagger_models: - - ServerCredentialsResponseData + - BrandingImage tags: - - Service security - server credentials -- _key: subtenant_api_key + - Tenant user interface configuration - images +- _key: subtenant_identity_provider field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' readOnly: false @@ -38202,77 +51050,239 @@ entities: readOnly: true required: false type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - example: 1518630727683 - format: int64 - readOnly: true - required: false - type: integer - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. + - _key: description + api_fieldname: description + description: Description for the identity provider. in: body - items: - type: string - parameter_fieldname: groups + maxLength: 500 + parameter_fieldname: description readOnly: false required: false - type: array + type: string - _key: id api_fieldname: id - description: The ID of the API key. - example: 01619571f7020242ac12000600000000 + description: Entity ID. + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' readOnly: false required: true type: string - - _key: key - api_fieldname: key - description: The API key. - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - readOnly: true - required: false - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - example: 1518630727688 - format: int64 + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity provider. readOnly: true required: false - type: integer + type: boolean - _key: name api_fieldname: name - description: The display name for the API key. - example: API key gorgon + description: Name of the identity provider. in: body maxLength: 100 parameter_fieldname: name readOnly: false required: true type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - example: 01619571e2e89242ac12000600000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + foreign_key: + entity: oidc_request + group: Accounts in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity provider's + API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID tokens. + PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results in + the transmission of clear-text credentials, the client must use the POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true readOnly: false required: false - type: string + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this empty + to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in PEM + format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + readOnly: false + required: false + type: object - _key: status api_fieldname: status - description: The status of the API key. + description: Status of the identity provider. enum: - ACTIVE - - INACTIVE - enum_reference: subtenant_api_key_status_enum - example: ACTIVE + - SUSPENDED + enum_reference: subtenant_identity_provider_status_enum in: body parameter_fieldname: status readOnly: false @@ -38289,24 +51299,9 @@ entities: group_id: Accounts methods: - _key: create - description: 'Create a new API key. There is no default value for the owner ID, - and it must be from the same account where the new API key is created. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys - \ - - -H ''Authorization: Bearer '' \ + description: 'Create a new identity provider. - -H ''content-type: application/json'' \ - - -d ''{"name": "MyKey1"}'' - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag @@ -38315,14 +51310,12 @@ entities: - id - created_at - updated_at - - key - - creation_time - - last_login_time + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 in: path @@ -38330,45 +51323,239 @@ entities: pattern: '[a-f0-9]{32}' required: true type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description in: body - items: - type: string - parameter_fieldname: groups + maxLength: 500 + parameter_fieldname: description required: false - type: array + type: string + - _key: discovery + allowEmptyValue: true + api_fieldname: discovery + description: 'Indicates that the OpenID Connect endpoints and keys should be + set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + entity_fieldname: discovery + external_param: true + in: query + name: discovery + parameter_fieldname: discovery + required: false + type: boolean - _key: name api_fieldname: name - description: The display name for the API key. + description: Name of the identity provider. entity_fieldname: name - example: API key gorgon in: body maxLength: 100 parameter_fieldname: name required: true type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID + tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the POST + mode. + enum: &id012 + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true required: false - type: string + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in + PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object - _key: status api_fieldname: status - description: The status of the API key. + description: Status of the identity provider. entity_fieldname: status - enum: &id006 + enum: &id013 - ACTIVE - - INACTIVE - enum_reference: subtenant_api_key_status_enum - example: ACTIVE + - SUSPENDED + enum_reference: subtenant_identity_provider_status_enum in: body parameter_fieldname: status required: false @@ -38376,25 +51563,31 @@ entities: group_id: Accounts method: post mode: create - operation_id: createAccountApiKey + operation_id: createAccountIdentityProvider pagination: false parameter_map: - apikey_id: id - path: /v3/accounts/{account_id}/api-keys + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers request_body: json request_content_type: application/json responses: - _key: '201' description: New entity created. + headers: + - _key: Content-Location + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string + - _key: Location + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - description: Represents an API key in Device Management. foreign_key: - entity: api_key + entity: identity_provider group: Accounts properties: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -38406,57 +51599,42 @@ entities: example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string - _key: etag api_fieldname: etag description: API resource entity version. entity_fieldname: etag example: '1' type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - in: body - items: - type: string - parameter_fieldname: groups - required: false - type: array - _key: id api_fieldname: id - description: The ID of the API key. + description: Entity ID. entity_fieldname: id - example: 01619571f7020242ac12000600000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' - required: true - type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer + required: true + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean - _key: name api_fieldname: name - description: The display name for the API key. + description: Name of the identity provider. entity_fieldname: name - example: API key gorgon in: body maxLength: 100 parameter_fieldname: name @@ -38464,34 +51642,232 @@ entities: type: string - _key: object api_fieldname: object - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - api-key + - identity-provider type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true required: false - type: string + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object - _key: status api_fieldname: status - description: The status of the API key. + description: Status of the identity provider. entity_fieldname: status enum: - ACTIVE - - INACTIVE - enum_reference: api_key_status_enum - example: ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum in: body parameter_fieldname: status required: false type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true + type: string - _key: updated_at api_fieldname: updated_at description: Last update UTC time RFC3339. @@ -38502,156 +51878,12 @@ entities: required: - etag - id - - key - name - object - type: object - - _key: '400' - description: Error in input data, for example, missing display name. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - type type: object - - _key: '404' - description: An account with the given ID does not exist. + - _key: '400' + description: Error in input data, for example, too long name. schema: properties: - _key: code @@ -38698,68 +51930,6 @@ entities: - request_id - type type: object - return_info: - custom: false - self: true - type: subtenant_api_key - return_type: subtenant_api_key - summary: Create a new API key. - x_deprecation: null - x_filter: {} - - _key: delete - description: 'Delete an API key. - - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: Account ID. - entity_fieldname: account_id - external_param: false - in: path - name: account_id - parameter_fieldname: account_id - required: true - type: string - - _key: id - api_fieldname: apikey_id - description: The ID of the API key to delete. - entity_fieldname: id - external_param: false - in: path - name: apikey_id - parameter_fieldname: apikey_id - required: true - type: string - group_id: Accounts - method: delete - mode: delete - operation_id: deleteAccountApiKey - pagination: false - parameter_map: - apikey_id: id - path: /v3/accounts/{account_id}/api-keys/{apikey_id} - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Deleted successfully. - _key: '401' description: Authentication failure. schema: @@ -38857,310 +52027,105 @@ entities: - type type: object - _key: '404' - description: An account or API key with the specified ID does not exist. + description: Account not found. schema: properties: - _key: code description: HTTP response code example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: false - self: true - type: subtenant_api_key - return_type: subtenant_api_key - summary: Delete the API key. - x_deprecation: null - x_filter: {} - - _key: policy_groups - description: 'Retrieve groups associated with the API key. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}/groups - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - total_count - - has_more - - data - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: Account ID. - entity_fieldname: account_id - external_param: false - in: path - name: account_id - parameter_fieldname: account_id - required: true - type: string - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: id - api_fieldname: apikey_id - description: The ID of the API key. - entity_fieldname: id - external_param: false - in: path - name: apikey_id - parameter_fieldname: apikey_id - required: true - type: string - - _key: include - api_fieldname: include - description: 'Comma-separated additional data to return. Currently supported: - total_count.' - entity_fieldname: include - external_param: true - in: query - name: include - parameter_fieldname: include - required: false - type: string - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. - Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: subtenant_api_key_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false - type: string - foreign_key: - entity: subtenant_policy_group - group_id: Accounts - method: get - mode: policy_groups - operation_id: getGroupsOfAccountApikey - pagination: true - parameter_map: - apikey_id: id - path: /v3/accounts/{account_id}/api-keys/{apikey_id}/groups - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: subtenant_policy_group - group: Accounts - pagination: true - properties: - - _key: after - api_fieldname: after - description: The entity ID to fetch after the given one. - entity_fieldname: after - example: 01619571f3c00242ac12000600000000 - external_param: true - in: query - name: after - parameter_fieldname: after - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: data - api_fieldname: data - description: A list of entities. - entity_fieldname: data - items: - description: This object contains basic information about groups. - foreign_key: - entity: subtenant_policy_group - group: Accounts - properties: - - _key: account_id - description: The ID of the account this group belongs to. - example: 01619571e2e90242ac12000600000000 - pattern: '[a-f0-9]{32}' - type: string - - _key: apikey_count - description: The number of API keys in this group. - example: 0 - format: int32 - type: integer - - _key: created_at - description: Creation UTC time RFC3339. - example: '2018-02-13T09:35:20Z' - format: date-time - type: string - - _key: etag - description: API resource entity version. - example: '1' - type: string - - _key: id - description: The ID of the group. - example: 01619571dec00242ac12000600000000 - pattern: '[a-f0-9]{32}' + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. type: string - _key: name - description: The name of the group. - example: Administrators - maxLength: 100 - type: string - - _key: object - description: 'Entity name: always `group`.' - enum: - - group - type: string - - _key: updated_at - description: Last update UTC time RFC3339. - example: '2018-02-14T15:24:14Z' - format: date-time + description: Name of the field which caused the error. type: string - - _key: user_count - description: The number of users in this group. - example: 1 - format: int32 - type: integer required: - - account_id - - apikey_count - - etag - - id - name - - object - - user_count + - message type: object type: array - - _key: has_more - api_fieldname: has_more - description: Flag indicating whether there are more results. - entity_fieldname: has_more - example: false - type: boolean - - _key: limit - api_fieldname: limit - default: 50 - description: The number of results to return (2-1000). Default 50. - entity_fieldname: limit - example: 50 - external_param: true - format: int32 - in: query - name: limit - parameter_fieldname: limit - required: false - type: integer + - _key: message + description: A human readable informative explanation + example: Validation error + type: string - _key: object - api_fieldname: object - description: 'Entity name: always `list`.' - entity_fieldname: object + description: Entity name, always `error`. enum: - - list + - error type: string - - _key: order - api_fieldname: order - default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' - entity_fieldname: order - enum: - - ASC - - DESC - enum_reference: api_key_order_enum - external_param: true - in: query - name: order - parameter_fieldname: order - required: false + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error type: string - - _key: total_count - api_fieldname: total_count - description: The total number of records, if requested. - entity_fieldname: total_count - example: 20 - format: int32 - type: integer required: - - data - - has_more - - limit + - code + - message - object - - total_count + - request_id + - type type: object + return_info: + custom: false + self: true + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Create a new identity provider. + x_deprecation: null + x_filter: {} + - _key: delete + description: 'Delete an identity provider by ID. + + Note: This endpoint is restricted to administrators.' + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: Account ID. + entity_fieldname: account_id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: id + api_fieldname: identity_provider_id + description: The ID of the identity provider to delete. + entity_fieldname: id + external_param: false + in: path + name: identity_provider_id + parameter_fieldname: identity_provider_id + required: true + type: string + group_id: Accounts + method: delete + mode: delete + operation_id: deleteAccountIdentityProvider + pagination: false + parameter_map: + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Deleted successfully. - _key: '401' description: Authentication failure. schema: @@ -39210,7 +52175,7 @@ entities: - type type: object - _key: '403' - description: Forbidden. + description: Forbidden, or identity provider is in use. schema: properties: - _key: code @@ -39258,7 +52223,7 @@ entities: - type type: object - _key: '404' - description: An account or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: properties: - _key: code @@ -39307,15 +52272,16 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_policy_group - return_type: paginated_response(subtenant_policy_group) - summary: Get groups associated with the API key. + self: true + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Delete an identity provider by ID. x_deprecation: null x_filter: {} - - _key: read - description: "Retrieve API key details.\n\n**Example:**\n```\ncurl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id}\ - \ \\\n -H 'Authorization: Bearer '\n```" + - _key: delete_service_provider_certificate + description: 'Delete a service provider certificate. + + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag @@ -39323,18 +52289,17 @@ entities: - filter - created_at - updated_at - - key - name - - groups - - owner + - description - status - - creation_time - - last_login_time + - saml2_attributes + - oidc_attributes + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 in: path @@ -39344,36 +52309,39 @@ entities: type: string - _key: id api_fieldname: id - description: The ID of the API key. + description: Entity ID. entity_fieldname: id - example: 01619571f7020242ac12000600000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' required: true type: string group_id: Accounts - method: get - mode: read - operation_id: getAccountApiKey + method: post + mode: delete_service_provider_certificate + operation_id: deleteAccountSpCertificate pagination: false parameter_map: - apikey_id: id - path: /v3/accounts/{account_id}/api-keys/{apikey_id} + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/delete-sp-certificate request_body: json request_content_type: application/json responses: - _key: '200' description: Successful operation. + headers: + - _key: Content-Location + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - description: Represents an API key in Device Management. foreign_key: - entity: api_key + entity: identity_provider group: Accounts properties: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -39385,57 +52353,42 @@ entities: example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string - _key: etag api_fieldname: etag description: API resource entity version. entity_fieldname: etag example: '1' type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - in: body - items: - type: string - parameter_fieldname: groups - required: false - type: array - _key: id api_fieldname: id - description: The ID of the API key. + description: Entity ID. entity_fieldname: id - example: 01619571f7020242ac12000600000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' required: true type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean - _key: name api_fieldname: name - description: The display name for the API key. + description: Name of the identity provider. entity_fieldname: name - example: API key gorgon in: body maxLength: 100 parameter_fieldname: name @@ -39443,34 +52396,232 @@ entities: type: string - _key: object api_fieldname: object - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - api-key + - identity-provider type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true required: false - type: string + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object - _key: status api_fieldname: status - description: The status of the API key. + description: Status of the identity provider. entity_fieldname: status enum: - ACTIVE - - INACTIVE - enum_reference: api_key_status_enum - example: ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum in: body parameter_fieldname: status required: false type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true + type: string - _key: updated_at api_fieldname: updated_at description: Last update UTC time RFC3339. @@ -39481,9 +52632,9 @@ entities: required: - etag - id - - key - name - object + - type type: object - _key: '401' description: Authentication failure. @@ -39582,7 +52733,7 @@ entities: - type type: object - _key: '404' - description: An account or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: properties: - _key: code @@ -39632,29 +52783,15 @@ entities: return_info: custom: false self: true - type: subtenant_api_key - return_type: subtenant_api_key - summary: Get API key details. + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Delete the service provider certificate. x_deprecation: null x_filter: {} - - _key: update - description: 'Update API key details. - - - **Example:** - - ``` + - _key: generate_service_provider_certificate + description: 'Generate a new service provider certificate. - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/api-keys/{apikey_id} - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{"name": "TestApiKey25"}'' - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag @@ -39662,14 +52799,17 @@ entities: - filter - created_at - updated_at - - key - - creation_time - - last_login_time + - name + - description + - status + - saml2_attributes + - oidc_attributes + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 in: path @@ -39677,79 +52817,77 @@ entities: pattern: '[a-f0-9]{32}' required: true type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups + - _key: algorithm + api_fieldname: algorithm + description: The algorithm and its key size used for generating the certificate. + Defaults to RSA2048. + entity_fieldname: algorithm + enum: + - RSA2048 + - RSA3072 + - EC224 + - EC256 + - EC384 + - EC521 + - ECDSA224 + - ECDSA256 + - ECDSA384 + - ECDSA521 + enum_reference: subtenant_identity_provider_algorithm_enum + external_param: true in: body - items: - type: string - parameter_fieldname: groups + name: algorithm + parameter_fieldname: algorithm required: false - type: array + schema_param: true + type: string - _key: id api_fieldname: id - description: The ID of the API key. + description: Entity ID. entity_fieldname: id - example: 01619571f7020242ac12000600000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' required: true type: string - - _key: name - api_fieldname: name - description: The display name for the API key. - entity_fieldname: name - example: API key gorgon - in: body - maxLength: 100 - parameter_fieldname: name - required: true - type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 - in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' - required: false - type: string - - _key: status - api_fieldname: status - description: The status of the API key. - entity_fieldname: status - enum: *id006 - enum_reference: subtenant_api_key_status_enum - example: ACTIVE + - _key: validity + api_fieldname: validity + description: Validity for the certificate in days. + entity_fieldname: validity + external_param: true + format: int32 in: body - parameter_fieldname: status + name: validity + parameter_fieldname: validity required: false - type: string + schema_param: true + type: integer group_id: Accounts - method: put - mode: update - operation_id: updateAccountApiKey + method: post + mode: generate_service_provider_certificate + operation_id: generateAccountSpCertificate pagination: false parameter_map: - apikey_id: id - path: /v3/accounts/{account_id}/api-keys/{apikey_id} + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/generate-sp-certificate request_body: json request_content_type: application/json responses: - _key: '200' description: Successful operation. + headers: + - _key: Content-Location + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: - description: Represents an API key in Device Management. foreign_key: - entity: api_key + entity: identity_provider group: Accounts properties: - _key: account_id api_fieldname: account_id - description: The ID of the account. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -39761,57 +52899,42 @@ entities: example: '2018-02-13T09:35:20Z' format: date-time type: string - - _key: creation_time - api_fieldname: creation_time - description: The timestamp of the API key creation in the storage, in milliseconds. - entity_fieldname: creation_time - example: 1518630727683 - format: int64 - type: integer + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string - _key: etag api_fieldname: etag description: API resource entity version. entity_fieldname: etag example: '1' type: string - - _key: groups - api_fieldname: groups - description: A list of group IDs this API key belongs to. - entity_fieldname: groups - in: body - items: - type: string - parameter_fieldname: groups - required: false - type: array - _key: id api_fieldname: id - description: The ID of the API key. + description: Entity ID. entity_fieldname: id - example: 01619571f7020242ac12000600000000 + example: 01619571d01d0242ac12000600000000 in: path - parameter_fieldname: apikey_id + parameter_fieldname: identity_provider_id pattern: '[a-f0-9]{32}' required: true type: string - - _key: key - api_fieldname: key - description: The API key. - entity_fieldname: key - example: ak_1MDE2MTk1NzFmNmU4MDI0MmFjMTIwMDA2MDAwMDAwMDA01619571f7020242ac12000600000000 - type: string - - _key: last_login_time - api_fieldname: last_login_time - description: The timestamp of the latest API key usage, in milliseconds. - entity_fieldname: last_login_time - example: 1518630727688 - format: int64 - type: integer + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean - _key: name api_fieldname: name - description: The display name for the API key. + description: Name of the identity provider. entity_fieldname: name - example: API key gorgon in: body maxLength: 100 parameter_fieldname: name @@ -39819,34 +52942,232 @@ entities: type: string - _key: object api_fieldname: object - description: 'Entity name: always ''api-key''' + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - api-key + - identity-provider type: string - - _key: owner - api_fieldname: owner - description: The owner of this API key, who is the creator by default. - entity_fieldname: owner - example: 01619571e2e89242ac12000600000000 + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts in: body - parameter_fieldname: owner - pattern: '[a-f0-9]{32}' + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true required: false - type: string + type: object - _key: status api_fieldname: status - description: The status of the API key. + description: Status of the identity provider. entity_fieldname: status enum: - ACTIVE - - INACTIVE - enum_reference: api_key_status_enum - example: ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum in: body parameter_fieldname: status required: false type: string + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true + type: string - _key: updated_at api_fieldname: updated_at description: Last update UTC time RFC3339. @@ -39857,12 +53178,13 @@ entities: required: - etag - id - - key - name - object + - type type: object - _key: '400' - description: Error in input data, for example, missing display name. + description: Error in input data, for example, invalid certificate validity + value. schema: properties: - _key: code @@ -40006,7 +53328,7 @@ entities: - type type: object - _key: '404' - description: An account ID or API key with the specified ID does not exist. + description: An account or identity provider not found. schema: properties: - _key: code @@ -40056,421 +53378,437 @@ entities: return_info: custom: false self: true - type: subtenant_api_key - return_type: subtenant_api_key - summary: Update API key details. + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Generate a new service provider certificate. x_deprecation: null x_filter: {} - primary_key_field: id - swagger_models: - - ApiKeyInfoReq - - ApiKeyInfoResp - - ApiKeyUpdateReq - - GroupSummaryList - tags: - - Tenant accounts - API keys -- _key: subtenant_dark_theme_color - field_renames: [] - fields: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - example: '#f3f93e' - in: body - parameter_fieldname: color - readOnly: false - required: false - type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: subtenant_dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - readOnly: false - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - in: body - parameter_fieldname: updated_at - readOnly: true - required: false - type: string - group_id: Branding - methods: - - _key: delete - description: 'Resets the branding color of a tenant account to its dark theme - default. - - - **Example:** - - ``` - - curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} - \ - - -H ''Authorization: Bearer '' + - _key: list + description: 'Retrieve an array of identity providers. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter + - total_count + - has_more + - data field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id - external_param: true + external_param: false in: path name: account_id parameter_fieldname: account_id required: true type: string - - _key: reference - _override: true - api_fieldname: reference - description: The name of the branding color. - entity_fieldname: reference - enum: &id007 - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: subtenant_dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false type: string - group_id: Branding - method: delete - mode: delete - operation_id: resetAccountDarkColor - pagination: false - path: /v3/accounts/{account_id}/branding-colors/dark/{reference} + - _key: include + api_fieldname: include + description: 'Comma-separated additional data to return. Currently supported: + total_count.' + entity_fieldname: include + external_param: true + in: query + name: include + parameter_fieldname: include + required: false + type: string + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit + required: false + type: integer + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + enum_reference: subtenant_identity_provider_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order + required: false + type: string + foreign_key: + entity: subtenant_identity_provider + group: Accounts + foreign_key_priority: self + group_id: Accounts + method: get + mode: list + operation_id: getAllAccountIdentityProviders + pagination: true + parameter_map: + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers request_body: json request_content_type: application/json responses: - - _key: '204' - description: Deleted successfully. - - _key: '401' - description: Authentication failure. + - _key: '200' + description: Successful operation. schema: + foreign_key: + entity: subtenant_identity_provider + group: Accounts + pagination: true properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. + - _key: after + api_fieldname: after + description: The entity ID to retrieve after the given one. + entity_fieldname: after + example: 01619571f3c00242ac12000600000000 + external_param: true + in: query + name: after + parameter_fieldname: after + pattern: '[a-f0-9]{32}' + required: false + type: string + - _key: data + api_fieldname: data + description: A list of entities. + entity_fieldname: data items: + foreign_key: + entity: identity_provider + group: Accounts properties: - - _key: message - description: Message describing the error condition. + - _key: account_id + description: The ID of the account the identity provider belongs to. + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - - _key: name - description: Name of the field which caused the error. + - _key: created_at + description: Creation UTC time RFC3339. + example: '2018-02-13T09:35:20Z' + format: date-time type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + - _key: description + description: Description for the identity provider. + maxLength: 500 type: string - - _key: name - description: Name of the field which caused the error. + - _key: etag + description: API resource entity version. + example: '1' type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Color or account not found. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + - _key: id + description: Entity ID. + example: 01619571d01d0242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string + - _key: is_default + description: Flag indicating whether this is the global default identity + provider. + readOnly: true + type: boolean - _key: name - description: Name of the field which caused the error. + description: Name of the identity provider. + maxLength: 100 type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - return_info: - custom: true - self: false - type: void - return_type: void - spec: - return_type: void - summary: Reset branding color to default. - x_deprecation: null - x_filter: {} - - _key: read - description: 'Retrieve the requested dark theme branding color. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/dark/{reference} - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - - color - - updated_at - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: Account ID. - entity_fieldname: account_id - external_param: true - in: path - name: account_id - parameter_fieldname: account_id - required: true - type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id007 - enum_reference: subtenant_dark_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - group_id: Branding - method: get - mode: read - operation_id: getAccountDarkColor - pagination: false - path: /v3/accounts/{account_id}/branding-colors/dark/{reference} - request_body: json - request_content_type: application/json - responses: - - _key: '200' - description: Successful operation. - schema: - foreign_key: - entity: subtenant_light_theme_color - group: Branding - properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' - in: body - parameter_fieldname: color + - _key: object + description: 'Entity name: always ''identity-provider''' + enum: + - identity-provider + type: string + - _key: oidc_attributes + description: Represents OIDC specific attributes. + foreign_key: + entity: oidc_request + group: Accounts + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by + the Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access + to identity provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to + sign ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request + results in the transmission of clear-text credentials, the client + must use the POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels + in the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: + - issuer + type: object + - _key: saml2_attributes + description: Represents SAML2 specific attributes in responses. + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave + this empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM + format. This is a read-only attribute, see API documentation about + how to generate a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + type: object + - _key: status + description: Status of the identity provider. + enum: + - ACTIVE + - SUSPENDED + type: string + - _key: type + description: Identity provider type. + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + type: string + - _key: updated_at + description: Last update UTC time RFC3339. + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + required: + - etag + - id + - name + - object + - type + type: object + type: array + - _key: has_more + api_fieldname: has_more + description: Flag indicating whether there are more results. + entity_fieldname: has_more + example: false + type: boolean + - _key: limit + api_fieldname: limit + default: 50 + description: The number of results to return (2-1000). Default 50. + entity_fieldname: limit + example: 50 + external_param: true + format: int32 + in: query + name: limit + parameter_fieldname: limit required: false - type: string - x-nullable: true + type: integer - _key: object api_fieldname: object - description: 'Entity name: always ''branding_color''' + description: 'Entity name: always `list`.' entity_fieldname: object enum: - - branding_color - external_param: true - in: body - name: object - parameter_fieldname: object - readOnly: true - required: false - schema_param: true + - list type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference + - _key: order + api_fieldname: order + default: ASC + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' + entity_fieldname: order enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: light_theme_color_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - in: body - parameter_fieldname: updated_at - readOnly: true + - ASC + - DESC + enum_reference: identity_provider_order_enum + external_param: true + in: query + name: order + parameter_fieldname: order required: false type: string + - _key: total_count + api_fieldname: total_count + description: The total number of records, if requested. + entity_fieldname: total_count + example: 20 + format: int32 + type: integer + required: + - data + - has_more + - limit + - object + - total_count type: object - _key: '401' description: Authentication failure. @@ -40569,7 +53907,7 @@ entities: - type type: object - _key: '404' - description: Color or account not found. + description: Account not found. schema: properties: - _key: code @@ -40619,529 +53957,365 @@ entities: return_info: custom: false self: true - type: subtenant_dark_theme_color - return_type: subtenant_dark_theme_color - summary: Get dark theme branding color. + type: subtenant_identity_provider + return_type: paginated_response(subtenant_identity_provider) + summary: Get all identity providers. x_deprecation: null x_filter: {} - - _key: update - additional_operations: - - notes: Bulk operation is not appriate for SDK's entity model, this functionality - is covered by the update method. - operation_id: bulkSetAccountDarkColors - description: 'Update a dark theme branding color of a tenant account. - - - **Example:** - - ``` - - curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/dark/primary - \ - - -H ''Authorization: Bearer '' \ - - -H ''content-type: application/json'' \ - - -d ''{ "color": "#f3f93e" }'' + - _key: read + description: 'Retrieve an identity provider. - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter + - created_at + - updated_at + - name + - description + - status + - saml2_attributes + - oidc_attributes + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - external_param: true + example: 01619571e2e90242ac12000600000000 in: path - name: account_id parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' - in: body - parameter_fieldname: color - required: false - type: string - x-nullable: true - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: *id007 - enum_reference: subtenant_dark_theme_color_reference_enum + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - in: body - parameter_fieldname: updated_at - readOnly: true - required: false - type: string - group_id: Branding - method: put - mode: update - operation_id: setAccountDarkColor + group_id: Accounts + method: get + mode: read + operation_id: getAccountIdentityProvider pagination: false - path: /v3/accounts/{account_id}/branding-colors/dark/{reference} + parameter_map: + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Color has been set successfully. + description: Successful operation. schema: foreign_key: - entity: subtenant_light_theme_color - group: Branding + entity: identity_provider + group: Accounts properties: - - _key: color - api_fieldname: color - description: The color given as name (purple) or as a hex code. - entity_fieldname: color - example: '#f3f93e' - in: body - parameter_fieldname: color - required: false + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' type: string - x-nullable: true - - _key: object - api_fieldname: object - description: 'Entity name: always ''branding_color''' - entity_fieldname: object - enum: - - branding_color - external_param: true + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description in: body - name: object - parameter_fieldname: object - readOnly: true + maxLength: 500 + parameter_fieldname: description required: false - schema_param: true type: string - - _key: reference - _override: true - api_fieldname: reference - description: Color name. - entity_fieldname: reference - enum: - - error_color - - primary - - secondary - - success_color - - warning_color - - canvas_background - - canvas_background_font_color - - workspace_background - - workspace_background_font_color - - info_color - - info_font_color - - primary_font_color - - secondary_font_color - - error_font_color - - success_font_color - - warning_font_color - enum_reference: light_theme_color_reference_enum + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - entity_fieldname: updated_at - example: '2018-02-14T15:24:14Z' - format: date-time - in: body - parameter_fieldname: updated_at + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default readOnly: true - required: false - type: string - type: object - - _key: '400' - description: Error in input data format. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. - type: string - - _key: name - description: Name of the field which caused the error. - type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true type: string - _key: object - description: Entity name, always `error`. + api_fieldname: object + description: 'Entity name: always ''identity-provider''' + entity_fieldname: object enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error + - identity-provider type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '401' - description: Authentication failure. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts properties: - - _key: message - description: Message describing the error condition. + - _key: email + description: Custom claim name for 'email'. + example: email_address type: string - - _key: name - description: Name of the field which caused the error. + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '403' - description: Forbidden. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name type: string + x-nullable: true - _key: name - description: Name of the field which caused the error. + description: Custom claim name for 'name'. + example: name type: string - required: - - name - - message - type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. - enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 - type: string - - _key: type - description: Error type used to categorise the error. - example: validation_error - type: string - required: - - code - - message - - object - - request_id - - type - type: object - - _key: '404' - description: Color or account not found. - schema: - properties: - - _key: code - description: HTTP response code - example: 400 - format: int32 - type: integer - - _key: fields - description: Request fields which failed validation. - items: - properties: - - _key: message - description: Message describing the error condition. + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number type: string - - _key: name - description: Name of the field which caused the error. + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub type: string - required: - - name - - message + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true type: object - type: array - - _key: message - description: A human readable informative explanation - example: Validation error - type: string - - _key: object - description: Entity name, always `error`. + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status enum: - - error - type: string - - _key: request_id - description: ID of the request. - example: 0161991d63150242ac12000600000000 + - ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum + in: body + parameter_fieldname: status + required: false type: string - _key: type - description: Error type used to categorise the error. - example: validation_error + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time type: string required: - - code - - message + - etag + - id + - name - object - - request_id - type type: object - return_info: - custom: false - self: true - type: subtenant_dark_theme_color - return_type: subtenant_dark_theme_color - summary: Updates a dark theme branding color. - x_deprecation: null - x_filter: {} - primary_key_field: reference - swagger_models: - - BrandingColor - tags: - - Tenant user interface configuration - colors -- _key: subtenant_dark_theme_image - field_renames: [] - fields: - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: subtenant_dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - readOnly: false - required: false - type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true - required: false - type: string - - _key: updated_at - api_fieldname: updated_at - description: Last update time in UTC. - example: '2018-02-14T15:24:14Z' - format: date-time - readOnly: true - required: false - type: string - group_id: Branding - methods: - - _key: delete - description: 'Revert an account branding image to dark theme default. - - - **Example:** - - ``` - - curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference}/clear - \ - - -H ''Authorization: Bearer '' - - ```' - drop_fields: - - object - - etag - - type - - filter - field_renames: [] - fields: - - _key: account_id - api_fieldname: account_id - description: Account ID. - entity_fieldname: account_id - external_param: true - in: path - name: account_id - parameter_fieldname: account_id - required: true - type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the branding images (icon or picture). - entity_fieldname: reference - enum: &id008 - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: subtenant_dark_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true - type: string - group_id: Branding - method: post - mode: delete - operation_id: clearAccountDarkImage - pagination: false - path: /v3/accounts/{account_id}/branding-images/dark/{reference}/clear - request_body: json - request_content_type: application/json - responses: - - _key: '204' - description: Image reverted successfully. - _key: '401' description: Authentication failure. schema: @@ -41239,7 +54413,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference, or account not found. + description: An account or identity provider not found. schema: properties: - _key: code @@ -41289,145 +54463,416 @@ entities: return_info: custom: false self: true - type: subtenant_dark_theme_image - return_type: subtenant_dark_theme_image - summary: Revert an image to dark theme default. + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Get an identity provider. x_deprecation: null x_filter: {} - - _key: read - description: 'Retrieve metadata of one account dark theme branding image. - - - **Example:** - - ``` - - curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/dark/{reference} - \ + - _key: refresh_tokens + description: 'Refresh an OIDC IdP''s signing keys. - -H ''Authorization: Bearer '' - - ```' + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - static_uri + - created_at - updated_at + - name + - description + - status + - saml2_attributes + - oidc_attributes + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - external_param: true + example: 01619571e2e90242ac12000600000000 in: path - name: account_id parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id008 - enum_reference: subtenant_dark_theme_image_reference_enum + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Branding - method: get - mode: read - operation_id: getAccountDarkImageData + group_id: Accounts + method: post + mode: refresh_tokens + operation_id: refreshAccountJwks pagination: false - path: /v3/accounts/{account_id}/branding-images/dark/{reference} + parameter_map: + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id}/refresh-jwks request_body: json request_content_type: application/json responses: - _key: '200' description: Successful operation. + headers: + - _key: Content-Location + description: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + type: string schema: foreign_key: - entity: subtenant_light_theme_image - group: Branding + entity: identity_provider + group: Accounts properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + in: path + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string - _key: object api_fieldname: object - description: 'Entity name: always ''branding_image''' + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - branding_image - readOnly: true + - identity-provider type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: light_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum + in: body + parameter_fieldname: status + required: false type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + required: + - etag + - id + - name + - object + - type + type: object + - _key: '400' + description: Not an OIDC IdP or JWKS URI is unspecified. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type type: object - _key: '401' description: Authentication failure. @@ -41526,7 +54971,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference, or account not found. + description: An account or identity provider not found. schema: properties: - _key: code @@ -41576,158 +55021,595 @@ entities: return_info: custom: false self: true - type: subtenant_dark_theme_image - return_type: subtenant_dark_theme_image - summary: Get metadata of a dark theme image. + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Refresh the OIDC signing keys. x_deprecation: null x_filter: {} - _key: update - additional_operations: - - notes: The multipart endpoint is used by the SDKs as it offers the same functionality - as the standard upload endpoint. - operation_id: uploadAccountDarkImage - description: Upload a new account dark theme branding image as form data in PNG - or JPEG format. + description: 'Update an existing identity provider. + + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag - type - filter - - static_uri + - created_at - updated_at + - is_default field_renames: [] fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account the identity provider belongs to. entity_fieldname: account_id - external_param: true + example: 01619571e2e90242ac12000600000000 in: path - name: account_id parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' required: true type: string - - _key: image - api_fieldname: image - description: The image in PNG or JPEG format as multipart form data. - entity_fieldname: image + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string + - _key: discovery + allowEmptyValue: true + api_fieldname: discovery + description: 'Indicates that the OpenID Connect endpoints and keys should be + set using the OpenID Connect Discovery mechanism. The following parameters + are set automatically: * authorization_endpoint * token_endpoint * userinfo_endpoint + * revocation_endpoint * jwks_uri * keys' + entity_fieldname: discovery external_param: true - in: stream - name: image - parameter_fieldname: image - required: true - type: file - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference - enum: *id008 - enum_reference: subtenant_dark_theme_image_reference_enum + in: query + name: discovery + parameter_fieldname: discovery + required: false + type: boolean + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 in: path - is_primary_key: true - name: reference + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' required: true type: string - group_id: Branding - method: post + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the Java + SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign ID + tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity provider's + API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication request. + When not configured otherwise, the default scopes are ['openid profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the POST + mode. + enum: *id012 + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in the + JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider in + PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status + enum: *id013 + enum_reference: subtenant_identity_provider_status_enum + in: body + parameter_fieldname: status + required: false + type: string + group_id: Accounts + method: put mode: update - operation_id: uploadAccountDarkImageMultipart + operation_id: updateAccountIdentityProvider pagination: false - path: /v3/accounts/{account_id}/branding-images/dark/{reference}/upload-multipart - request_body: file - request_content_type: multipart/form-data + parameter_map: + identity_provider_id: id + path: /v3/accounts/{account_id}/identity-providers/{identity_provider_id} + request_body: json + request_content_type: application/json responses: - - _key: '201' - description: Image uploaded successfully. - headers: - - _key: Content-Location - description: Location of the image metadata. - type: string - - _key: Location - description: Location of the image binary. - type: string + - _key: '200' + description: Successful operation. schema: foreign_key: - entity: subtenant_light_theme_image - group: Branding + entity: identity_provider + group: Accounts properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account the identity provider belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: description + api_fieldname: description + description: Description for the identity provider. + entity_fieldname: description + in: body + maxLength: 500 + parameter_fieldname: description + required: false + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: Entity ID. + entity_fieldname: id + example: 01619571d01d0242ac12000600000000 + in: path + parameter_fieldname: identity_provider_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: is_default + api_fieldname: is_default + description: Flag indicating whether this is the global default identity + provider. + entity_fieldname: is_default + readOnly: true + type: boolean + - _key: name + api_fieldname: name + description: Name of the identity provider. + entity_fieldname: name + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string - _key: object api_fieldname: object - description: 'Entity name: always ''branding_image''' + description: 'Entity name: always ''identity-provider''' entity_fieldname: object enum: - - branding_image - readOnly: true + - identity-provider type: string - - _key: reference - _override: true - api_fieldname: reference - description: Name of the image. - entity_fieldname: reference + - _key: oidc_attributes + api_fieldname: oidc_attributes + description: Represents OIDC specific attributes. + entity_fieldname: oidc_attributes + foreign_key: + entity: oidc_request + group: Accounts + in: body + parameter_fieldname: oidc_attributes + properties: + - _key: authorization_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: auto_enrollment + description: For future use. + type: boolean + x-nullable: true + - _key: claim_mapping + description: Mapping for non-standard OIDC claim names. + foreign_key: + entity: oidc_request_claim_mapping + group: Accounts + properties: + - _key: email + description: Custom claim name for 'email'. + example: email_address + type: string + x-nullable: true + - _key: email_verified + description: Custom claim name for 'email_verified'. + example: email_verified + type: string + x-nullable: true + - _key: family_name + description: Custom claim name for 'family_name'. + example: family_name + type: string + x-nullable: true + - _key: given_name + description: Custom claim name for 'given_name'. + example: given_name + type: string + x-nullable: true + - _key: name + description: Custom claim name for 'name'. + example: name + type: string + x-nullable: true + - _key: phone_number + description: Custom claim name for 'phone_number'. + example: phone_number + type: string + x-nullable: true + - _key: sub + description: Custom claim name for 'sub'. + example: sub + type: string + x-nullable: true + - _key: updated_at + description: Custom claim name for 'updated_at'. + example: updated_at + type: string + x-nullable: true + - _key: updated_at_pattern + description: Custom pattern for claim 'updated_at' as defined by the + Java SimpleDateFormat class. + example: yyyy-MM-dd'T'HH:mm:ssXXX + type: string + x-nullable: true + type: object + x-nullable: true + - _key: client_id + description: Client ID needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: client_secret + description: Client secret needed to authenticate and gain access to identity + provider's API. + type: string + x-nullable: true + - _key: end_session_endpoint + description: URL of the provider's end session endpoint. + type: string + x-nullable: true + - _key: issuer + description: Issuer of the identity provider. + type: string + - _key: jwks_uri + description: URL of the provider's JSON web key set document. + type: string + x-nullable: true + - _key: keys + description: Provider's public keys and key IDs used to sign ID tokens. + PEM-encoded. + items: + description: Represents provider's public key and key ID used to sign + ID tokens. PEM-encoded. + foreign_key: + entity: identity_provider_public_key + group: Accounts + properties: + - _key: key + description: The public key. + type: string + - _key: kid + description: The public key ID. + type: string + type: object + type: array + x-nullable: true + - _key: redirect_uri + description: The URI needed to authenticate and gain access to identity + provider's API. Leave this empty to use the default redirect URI. + type: string + x-nullable: true + - _key: revocation_endpoint + description: URL of the provider's token revocation endpoint. + type: string + x-nullable: true + - _key: scopes + description: Space-separated list of scopes sent in the authentication + request. When not configured otherwise, the default scopes are ['openid + profile email'](https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims). + example: openid email + type: string + - _key: token_endpoint + description: URL of the OAuth 2.0 authorization endpoint. + type: string + x-nullable: true + - _key: token_request_mode + default: POST + description: One way to obtain the access token. Since the request results + in the transmission of clear-text credentials, the client must use the + POST mode. + enum: + - POST + - GET + type: string + - _key: token_response_path + description: Path to the standard data in the token response. Levels in + the JSON structure must be separated by '.' (dot) characters. + example: oidc.data + type: string + - _key: userinfo_endpoint + description: URL of the OAuth 2.0 UserInfo endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: saml2_attributes + api_fieldname: saml2_attributes + description: Represents SAML2 specific attributes in responses. + entity_fieldname: saml2_attributes + in: body + parameter_fieldname: saml2_attributes + properties: + - _key: assertion_endpoint + description: URL of the service provider's assertion endpoint. Leave this + empty to use the default assertion endpoint. + type: string + x-nullable: true + - _key: idp_entity_id + description: Entity ID of the identity provider. + type: string + x-nullable: true + - _key: idp_x509_certs + description: List of public X509 certificates of the identity provider + in PEM format. + items: + type: string + type: array + x-nullable: true + - _key: slo_endpoint + description: URL of the identity provider's SLO endpoint. + type: string + x-nullable: true + - _key: sp_entity_id + description: Entity ID of the service provider. + type: string + x-nullable: true + - _key: sp_x509_cert + description: Public X509 certificate of the service provider in PEM format. + This is a read-only attribute, see API documentation about how to generate + a new one or how to delete it. + readOnly: true + type: string + x-nullable: true + - _key: sso_endpoint + description: URL of the identity provider's SSO endpoint. + type: string + x-nullable: true + required: false + type: object + - _key: status + api_fieldname: status + description: Status of the identity provider. + entity_fieldname: status enum: - - brand_logo_portrait - - brand_logo_square - - brand_logo_landscape - - brand_logo_email - - desktop_background_landscape - - desktop_background_square - - desktop_background_portrait - - carousel_image_portrait_0 - - carousel_image_portrait_1 - - carousel_image_portrait_2 - - carousel_image_portrait_3 - - carousel_image_portrait_4 - - carousel_image_portrait_5 - - carousel_image_portrait_6 - - carousel_image_portrait_7 - - carousel_image_portrait_8 - - carousel_image_portrait_9 - - carousel_image_square_0 - - carousel_image_square_1 - - carousel_image_square_2 - - carousel_image_square_3 - - carousel_image_square_4 - - carousel_image_square_5 - - carousel_image_square_6 - - carousel_image_square_7 - - carousel_image_square_8 - - carousel_image_square_9 - - carousel_image_landscape_0 - - carousel_image_landscape_1 - - carousel_image_landscape_2 - - carousel_image_landscape_3 - - carousel_image_landscape_4 - - carousel_image_landscape_5 - - carousel_image_landscape_6 - - carousel_image_landscape_7 - - carousel_image_landscape_8 - - carousel_image_landscape_9 - enum_reference: light_theme_image_reference_enum - in: path - is_primary_key: true - name: reference - required: true + - ACTIVE + - SUSPENDED + enum_reference: identity_provider_status_enum + in: body + parameter_fieldname: status + required: false type: string - - _key: static_uri - api_fieldname: static_uri - description: The static link to the image. - entity_fieldname: static_uri - example: https://static.mbed.com/123456789.jpg - format: uri - readOnly: true + - _key: type + api_fieldname: type + description: Identity provider type. + entity_fieldname: type + enum: + - NATIVE + - MBED + - SAML2 + - OIDC + enum_reference: identity_provider_type_enum + in: body + parameter_fieldname: type + required: true type: string - _key: updated_at api_fieldname: updated_at - description: Last update time in UTC. + description: Last update UTC time RFC3339. entity_fieldname: updated_at example: '2018-02-14T15:24:14Z' format: date-time - readOnly: true type: string + required: + - etag + - id + - name + - object + - type type: object - _key: '400' - description: Error in input data format, for example, image is too large. + description: Error in input data, for example, missing name. schema: properties: - _key: code @@ -41871,7 +55753,7 @@ entities: - type type: object - _key: '404' - description: Unknown image reference. + description: An account or identity provider not found. schema: properties: - _key: code @@ -41921,16 +55803,20 @@ entities: return_info: custom: false self: true - type: subtenant_dark_theme_image - return_type: subtenant_dark_theme_image - summary: Upload a dark theme image. + type: subtenant_identity_provider + return_type: subtenant_identity_provider + summary: Update an existing identity provider. x_deprecation: null x_filter: {} - primary_key_field: reference + primary_key_field: id swagger_models: - - BrandingImage + - CertificateGenerationReq + - IdentityProviderCreationReq + - IdentityProviderInfo + - IdentityProviderList + - IdentityProviderUpdateReq tags: - - Tenant user interface configuration - images + - Tenant accounts - identity providers - _key: subtenant_light_theme_color field_renames: [] fields: @@ -41985,8 +55871,9 @@ entities: group_id: Branding methods: - _key: delete - description: 'Resets the branding color of a tenant account to its light theme - default. + description: 'Resets the branding color to its light theme default. + + Note: This endpoint is restricted to administrators. **Example:** @@ -41996,7 +55883,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -42008,7 +55895,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -42021,7 +55908,7 @@ entities: api_fieldname: reference description: The name of the branding color. entity_fieldname: reference - enum: &id009 + enum: &id014 - error_color - primary - secondary @@ -42212,6 +56099,8 @@ entities: - _key: read description: 'Retrieve the requested light theme branding color. + Note: This endpoint is restricted to administrators. + **Example:** @@ -42219,7 +56108,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-colors/light/{reference} - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -42233,7 +56122,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -42246,7 +56135,7 @@ entities: api_fieldname: reference description: Color name. entity_fieldname: reference - enum: *id009 + enum: *id014 enum_reference: subtenant_light_theme_color_reference_enum in: path is_primary_key: true @@ -42490,7 +56379,9 @@ entities: - notes: Bulk operation is not appriate for SDK's entity model, this functionality is covered by the update method. operation_id: bulkSetAccountLightColors - description: 'Update a light theme branding color of a tenant account. + description: 'Update a light theme branding color. + + Note: This endpoint is restricted to administrators. **Example:** @@ -42500,7 +56391,7 @@ entities: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id)/branding-colors/light/primary \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -42516,7 +56407,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -42539,7 +56430,7 @@ entities: api_fieldname: reference description: Color name. entity_fieldname: reference - enum: *id009 + enum: *id014 enum_reference: subtenant_light_theme_color_reference_enum in: path is_primary_key: true @@ -42915,13 +56806,15 @@ entities: - _key: delete description: 'Revert an account branding image to light theme default. + Note: This endpoint is restricted to administrators. + **Example:** ```curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference}/clear \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -42933,7 +56826,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -42946,7 +56839,7 @@ entities: api_fieldname: reference description: Name of the branding images (icon or picture). entity_fieldname: reference - enum: &id010 + enum: &id015 - brand_logo_portrait - brand_logo_square - brand_logo_landscape @@ -43156,6 +57049,8 @@ entities: - _key: read description: 'Retrieve metadata for one account light theme branding image. + Note: This endpoint is restricted to administrators. + **Example:** @@ -43164,7 +57059,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/branding-images/light/{reference} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -43178,7 +57073,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -43191,7 +57086,7 @@ entities: api_fieldname: reference description: Name of the image. entity_fieldname: reference - enum: *id010 + enum: *id015 enum_reference: subtenant_light_theme_image_reference_enum in: path is_primary_key: true @@ -43444,7 +57339,10 @@ entities: additional_operations: - notes: The multipart request is more generic and better supported by SDKs. operation_id: uploadAccountLightImage - description: Upload a new account branding image as form data in PNG or JPEG format. + description: 'Upload a new account branding image as form data in PNG or JPEG + format. + + Note: This endpoint is restricted to administrators.' drop_fields: - object - etag @@ -43456,7 +57354,7 @@ entities: fields: - _key: account_id api_fieldname: account_id - description: Account ID. + description: The ID of the account. entity_fieldname: account_id external_param: true in: path @@ -43479,7 +57377,7 @@ entities: api_fieldname: reference description: Name of the image. entity_fieldname: reference - enum: *id010 + enum: *id015 enum_reference: subtenant_light_theme_image_reference_enum in: path is_primary_key: true @@ -43807,6 +57705,19 @@ entities: readOnly: true required: false type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + example: 0 + format: int32 + readOnly: true + required: false + type: integer - _key: created_at api_fieldname: created_at description: Creation UTC time RFC3339. @@ -43829,9 +57740,11 @@ entities: api_fieldname: name description: The name of the group. example: Administrators + in: body maxLength: 100 - readOnly: true - required: false + parameter_fieldname: name + readOnly: false + required: true type: string - _key: updated_at api_fieldname: updated_at @@ -43852,7 +57765,9 @@ entities: group_id: Accounts methods: - _key: api_keys - description: 'List the API keys of the group with details. + description: 'Retrieve an array of API keys associated with a policy group. + + Note: This endpoint is restricted to administrators. **Example:** @@ -43862,7 +57777,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/api-keys \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -43887,7 +57802,7 @@ entities: type: string - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -43934,7 +57849,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -43970,7 +57885,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -44093,8 +58008,8 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC @@ -44266,14 +58181,669 @@ entities: type: object return_info: custom: false - self: false - type: subtenant_api_key - return_type: paginated_response(subtenant_api_key) - summary: Get API keys of a group. + self: false + type: subtenant_api_key + return_type: paginated_response(subtenant_api_key) + summary: Get API keys in a group. + x_deprecation: + comment: This endpoint is deprecated. Use GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/applications + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + x_filter: {} + - _key: create + description: 'Create a new group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "MyGroup1"}'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - id + - created_at + - updated_at + - user_count + - application_count + - apikey_count + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: members + api_fieldname: members + description: Represents arrays of user and API key IDs. + entity_fieldname: members + external_param: true + in: body + name: members + parameter_fieldname: members + properties: + - _key: apikeys + description: An array of API key IDs. + items: + type: string + type: array + x-deprecation: + comment: This field is deprecated, use 'applications' + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: applications + description: An array of applicationIDs. + items: + type: string + type: array + - _key: users + description: An array of user IDs. + items: + type: string + type: array + required: false + schema_param: true + type: object + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + group_id: Accounts + method: post + mode: create + operation_id: createAccountGroup + pagination: false + parameter_map: + group_id: id + path: /v3/accounts/{account_id}/policy-groups + request_body: json + request_content_type: application/json + responses: + - _key: '201' + description: New entity created. + schema: + description: This object contains basic information about groups. + foreign_key: + entity: policy_group + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + entity_fieldname: apikey_count + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + entity_fieldname: id + example: 01619571dec00242ac12000600000000 + in: path + parameter_fieldname: group_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `group`.' + entity_fieldname: object + enum: + - group + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + entity_fieldname: user_count + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count + type: object + - _key: '400' + description: Error in input data, for example, invalid group name. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An account with the specified ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '409' + description: A group with that name already exists. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: subtenant_policy_group + return_type: subtenant_policy_group + summary: Create a new group. + x_deprecation: null + x_filter: {} + - _key: delete + description: 'Delete a group. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} + \ + + -H ''Authorization: Bearer '' + + ```' + drop_fields: + - object + - etag + - type + - filter + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: Account ID. + entity_fieldname: account_id + external_param: false + in: path + name: account_id + parameter_fieldname: account_id + required: true + type: string + - _key: id + api_fieldname: group_id + description: The ID of the group to delete. + entity_fieldname: id + external_param: false + in: path + name: group_id + parameter_fieldname: group_id + required: true + type: string + group_id: Accounts + method: delete + mode: delete + operation_id: deleteAccountGroup + pagination: false + parameter_map: + group_id: id + path: /v3/accounts/{account_id}/policy-groups/{group_id} + request_body: json + request_content_type: application/json + responses: + - _key: '204' + description: Deleted successfully. + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden, or Administrators group cannot be removed. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: An account or group with that ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: subtenant_policy_group + return_type: subtenant_policy_group + summary: Delete a group. x_deprecation: null x_filter: {} - _key: list - description: 'Retrieve all group information. + description: 'Retrieve an array of policy groups. + + Note: This endpoint is restricted to administrators. **Example:** @@ -44283,7 +58853,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -44309,7 +58879,7 @@ entities: type: string - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -44346,7 +58916,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -44384,7 +58954,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -44414,6 +58984,16 @@ entities: example: 0 format: int32 type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer - _key: created_at description: Creation UTC time RFC3339. example: '2018-02-13T09:35:20Z' @@ -44487,8 +59067,8 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC @@ -44663,13 +59243,15 @@ entities: self: true type: subtenant_policy_group return_type: paginated_response(subtenant_policy_group) - summary: Get all group information. + summary: Get policy groups. x_deprecation: null x_filter: name: - eq - _key: read - description: 'Retrieve general information about the group. + description: 'Retrieve policy group details. + + Note: This endpoint is restricted to administrators. **Example:** @@ -44679,7 +59261,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -44691,6 +59273,7 @@ entities: - updated_at - name - user_count + - application_count - apikey_count field_renames: [] fields: @@ -44747,6 +59330,18 @@ entities: example: 0 format: int32 type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer - _key: created_at api_fieldname: created_at description: Creation UTC time RFC3339. @@ -44775,7 +59370,10 @@ entities: description: The name of the group. entity_fieldname: name example: Administrators + in: body maxLength: 100 + parameter_fieldname: name + required: true type: string - _key: object api_fieldname: object @@ -44956,11 +59554,383 @@ entities: self: true type: subtenant_policy_group return_type: subtenant_policy_group - summary: Get group information. + summary: Get policy group. + x_deprecation: null + x_filter: {} + - _key: update + description: 'Update a group name. + + Note: This endpoint is restricted to administrators. + + + **Example:** + + ``` + + curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/ + \ + + -H ''Authorization: Bearer '' \ + + -H ''content-type: application/json'' \ + + -d ''{"name": "TestGroup2"}'' + + ```' + drop_fields: + - object + - etag + - type + - filter + - created_at + - updated_at + - user_count + - application_count + - apikey_count + field_renames: [] + fields: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + in: path + parameter_fieldname: account_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + entity_fieldname: id + example: 01619571dec00242ac12000600000000 + in: path + parameter_fieldname: group_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + group_id: Accounts + method: put + mode: update + operation_id: updateAccountGroupName + pagination: false + parameter_map: + group_id: id + path: /v3/accounts/{account_id}/policy-groups/{group_id} + request_body: json + request_content_type: application/json + responses: + - _key: '200' + description: Successful operation. + schema: + description: This object contains basic information about groups. + foreign_key: + entity: policy_group + group: Accounts + properties: + - _key: account_id + api_fieldname: account_id + description: The ID of the account this group belongs to. + entity_fieldname: account_id + example: 01619571e2e90242ac12000600000000 + pattern: '[a-f0-9]{32}' + type: string + - _key: apikey_count + api_fieldname: apikey_count + description: The number of API keys in this group. + entity_fieldname: apikey_count + example: 0 + format: int32 + type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + api_fieldname: application_count + description: The number of applications in this group. + entity_fieldname: application_count + example: 0 + format: int32 + type: integer + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string + - _key: etag + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag + example: '1' + type: string + - _key: id + api_fieldname: id + description: The ID of the group. + entity_fieldname: id + example: 01619571dec00242ac12000600000000 + in: path + parameter_fieldname: group_id + pattern: '[a-f0-9]{32}' + required: true + type: string + - _key: name + api_fieldname: name + description: The name of the group. + entity_fieldname: name + example: Administrators + in: body + maxLength: 100 + parameter_fieldname: name + required: true + type: string + - _key: object + api_fieldname: object + description: 'Entity name: always `group`.' + entity_fieldname: object + enum: + - group + type: string + - _key: updated_at + api_fieldname: updated_at + description: Last update UTC time RFC3339. + entity_fieldname: updated_at + example: '2018-02-14T15:24:14Z' + format: date-time + type: string + - _key: user_count + api_fieldname: user_count + description: The number of users in this group. + entity_fieldname: user_count + example: 1 + format: int32 + type: integer + required: + - account_id + - apikey_count + - etag + - id + - name + - object + - user_count + type: object + - _key: '400' + description: Error in input data, for example, the group name is too long. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Authentication failure. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '403' + description: Forbidden. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '404' + description: A group with that ID does not exist. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + return_info: + custom: false + self: true + type: subtenant_policy_group + return_type: subtenant_policy_group + summary: Update the group name. x_deprecation: null x_filter: {} - _key: users - description: 'List users of the group with details. + description: 'Retrieve an array of users associated with a policy group. + + Note: This endpoint is restricted to administrators. **Example:** @@ -44970,7 +59940,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/policy-groups/{group_id}/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -44998,7 +59968,7 @@ entities: type: string - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -45045,7 +60015,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -45081,7 +60051,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -45121,6 +60091,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -45288,11 +60265,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -45300,17 +60285,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -45411,8 +60398,8 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC @@ -45587,7 +60574,7 @@ entities: self: false type: subtenant_user return_type: paginated_response(subtenant_user) - summary: Get users of a group. + summary: Get users in a policy group. x_deprecation: null x_filter: status: @@ -45597,8 +60584,10 @@ entities: primary_key_field: id swagger_models: - ApiKeyInfoRespList + - GroupCreationInfo - GroupSummary - GroupSummaryList + - GroupUpdateInfo - UserInfoRespList tags: - Tenant accounts - policy groups @@ -45658,13 +60647,19 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' example: false in: body parameter_fieldname: enrollment_mode readOnly: false required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: id api_fieldname: id description: Entity ID. @@ -45769,7 +60764,9 @@ entities: group_id: Security methods: - _key: create - description: 'Upload new trusted certificates. + description: 'Upload new trusted certificate. + + Note: This endpoint is restricted to administrators. **Example:** @@ -45779,7 +60776,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -45837,13 +60834,19 @@ entities: x-nullable: true - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: &id016 [] - _key: is_developer_certificate _override: true api_fieldname: is_developer_certificate @@ -45867,7 +60870,7 @@ entities: api_fieldname: service description: Service name where the certificate is used. entity_fieldname: service - enum: &id011 + enum: &id017 - lwm2m - bootstrap enum_reference: subtenant_trusted_certificate_service_enum @@ -45879,7 +60882,7 @@ entities: api_fieldname: status description: Status of the certificate. entity_fieldname: status - enum: &id012 + enum: &id018 - ACTIVE - INACTIVE enum_reference: subtenant_trusted_certificate_status_enum @@ -45955,13 +60958,19 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -46173,7 +61182,7 @@ entities: - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial accounts. schema: properties: - _key: code @@ -46277,7 +61286,9 @@ entities: x_deprecation: null x_filter: {} - _key: delete - description: 'Delete the trusted certificate. + description: 'Delete a trusted certificate. + + Note: This endpoint is restricted to administrators. **Example:** @@ -46287,7 +61298,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -46389,7 +61400,7 @@ entities: - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial accounts. schema: properties: - _key: code @@ -46437,7 +61448,7 @@ entities: - type type: object - _key: '404' - description: Account or certificate with the given ID not found. + description: An account or certificate with the given ID not found. schema: properties: - _key: code @@ -46489,7 +61500,7 @@ entities: self: true type: subtenant_trusted_certificate return_type: subtenant_trusted_certificate - summary: Delete trusted certificate by ID. + summary: Delete a trusted certificate by ID. x_deprecation: null x_filter: {} - _key: get_developer_certificate_info @@ -46504,7 +61515,7 @@ entities: curl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' drop_fields: @@ -46981,7 +61992,9 @@ entities: x_deprecation: null x_filter: {} - _key: read - description: 'Retrieve a trusted certificate by ID. + description: 'Retrieve a trusted certificate. + + Note: This endpoint is restricted to administrators. **Example:** @@ -46991,7 +62004,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -47114,13 +62127,19 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -47283,7 +62302,7 @@ entities: - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial accounts. schema: properties: - _key: code @@ -47331,7 +62350,7 @@ entities: - type type: object - _key: '404' - description: Account or certificate with the given ID not found. + description: An account or certificate with the given ID not found. schema: properties: - _key: code @@ -47383,13 +62402,13 @@ entities: self: true type: subtenant_trusted_certificate return_type: subtenant_trusted_certificate - summary: Get trusted certificate by ID. + summary: Get a trusted certificate. x_deprecation: null x_filter: {} - _key: update - description: "Update existing trusted certificates.\n\n**Example:**\n```\ncurl\ - \ -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id}\ - \ \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ + description: "Update a trusted certificate.\nNote: This endpoint is restricted\ + \ to administrators.\n\n**Example:**\n```\ncurl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/trusted-certificates/{cert_id}\ + \ \\\n -H 'Authorization: Bearer ' \\\n -H 'content-type: application/json'\ \ \\\n -d {\"description\": \"very important cert\"}\n ```" drop_fields: - object @@ -47440,13 +62459,19 @@ entities: x-nullable: true - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: *id016 - _key: id api_fieldname: id description: Entity ID. @@ -47480,7 +62505,7 @@ entities: api_fieldname: service description: Service name where the certificate is used. entity_fieldname: service - enum: *id011 + enum: *id017 enum_reference: subtenant_trusted_certificate_service_enum in: body parameter_fieldname: service @@ -47490,7 +62515,7 @@ entities: api_fieldname: status description: Status of the certificate. entity_fieldname: status - enum: *id012 + enum: *id018 enum_reference: subtenant_trusted_certificate_status_enum example: ACTIVE in: body @@ -47566,13 +62591,19 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -47784,7 +62815,7 @@ entities: - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial accounts. schema: properties: - _key: code @@ -47894,8 +62925,8 @@ entities: - TrustedCertificateResp - TrustedCertificateUpdateReq tags: - - Tenant device security - certificates - - Device security - developer class certificates + - Tenant security and identity - certificates + - Security and identity - developer class certificates - _key: subtenant_user field_renames: [] fields: @@ -47923,6 +62954,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -48145,11 +63183,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -48157,17 +63203,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -48262,6 +63310,8 @@ entities: description: 'Create or invite a new user to the account. Only email address is used; other attributes are set in the second step. + Note: This endpoint is restricted to administrators. + **Example:** @@ -48270,7 +63320,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -48391,11 +63441,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -48403,20 +63461,22 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type - enum: &id013 + entity_fieldname: login_profile_type + enum: &id019 - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string - required: &id014 + required: &id020 - id type: object parameter_fieldname: login_profiles @@ -48499,6 +63559,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -48722,11 +63789,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -48734,17 +63809,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -49095,6 +64172,8 @@ entities: - _key: delete description: 'Delete a user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -49103,7 +64182,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -49347,7 +64426,9 @@ entities: x_deprecation: null x_filter: {} - _key: policy_groups - description: 'Retrieve user''s groups. + description: 'Retrieve an array of policy groups associated with a user. + + Note: This endpoint is restricted to administrators. **Example:** @@ -49357,7 +64438,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -49382,7 +64463,7 @@ entities: type: string - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -49429,7 +64510,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -49465,7 +64546,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -49495,6 +64576,16 @@ entities: example: 0 format: int32 type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer - _key: created_at description: Creation UTC time RFC3339. example: '2018-02-13T09:35:20Z' @@ -49568,8 +64659,8 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, - DESC. Default: ASC.' + description: 'Record order based on creation. Acceptable values: ASC, DESC. + Default: ASC.' entity_fieldname: order enum: - ASC @@ -49744,12 +64835,14 @@ entities: self: false type: subtenant_policy_group return_type: paginated_response(subtenant_policy_group) - summary: Get user's groups. + summary: Get policy groups for a user. x_deprecation: null x_filter: {} - _key: read description: 'Retrieve user details. + Note: This endpoint is restricted to administrators. + **Example:** @@ -49758,7 +64851,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -49853,6 +64946,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -50076,11 +65176,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -50088,17 +65196,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -50353,6 +65463,8 @@ entities: - _key: update description: 'Update user details. + Note: This endpoint is restricted to administrators. + **Example:** @@ -50361,7 +65473,7 @@ entities: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -50482,11 +65594,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -50494,16 +65614,18 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type - enum: *id013 + entity_fieldname: login_profile_type + enum: *id019 + example: NATIVE readOnly: true type: string - required: *id014 + required: *id020 type: object parameter_fieldname: login_profiles required: false @@ -50574,6 +65696,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -50797,11 +65926,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -50809,17 +65946,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -51170,6 +66309,8 @@ entities: - _key: validate_email description: 'Validate user email. + Note: This endpoint is restricted to administrators. + **Example:** @@ -51178,7 +66319,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/users/{user_id}/validate-email \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -51449,11 +66590,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -51461,17 +66610,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -51503,6 +66654,8 @@ entities: - _key: create description: 'Invite a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -51511,7 +66664,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/accouns/{account_id}/user-invitations \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -51572,11 +66725,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -51584,17 +66745,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -51707,11 +66870,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -51719,17 +66890,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -51923,6 +67096,8 @@ entities: - _key: delete description: 'Delete an active user invitation sent to a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -51931,7 +67106,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -52130,6 +67305,8 @@ entities: description: 'Retrieve details of an active user invitation sent for a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -52138,7 +67315,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/accounts/{account_id}/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -52263,11 +67440,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -52275,17 +67460,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -52534,11 +67721,17 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' example: false readOnly: false required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: id api_fieldname: id description: Entity ID. @@ -52637,6 +67830,8 @@ entities: - _key: create description: 'Upload new trusted certificates. + Note: This endpoint is restricted to administrators. + **Example:** @@ -52644,7 +67839,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -52693,13 +67888,19 @@ entities: x-nullable: true - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: &id021 [] - _key: is_developer_certificate _override: true api_fieldname: is_developer_certificate @@ -52723,7 +67924,7 @@ entities: api_fieldname: service description: Service name where the certificate is used. entity_fieldname: service - enum: &id015 + enum: &id022 - lwm2m - bootstrap enum_reference: trusted_certificate_service_enum @@ -52735,7 +67936,7 @@ entities: api_fieldname: status description: Status of the certificate. entity_fieldname: status - enum: &id016 + enum: &id023 - ACTIVE - INACTIVE enum_reference: trusted_certificate_status_enum @@ -52805,10 +68006,16 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -53005,7 +68212,7 @@ entities: - type type: object - _key: '403' - description: Forbidden, only available for admins of commercial accounts. + description: Forbidden, only available for administrators of commercial accounts. schema: properties: - _key: code @@ -53119,7 +68326,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -53259,7 +68466,7 @@ entities: - type type: object - _key: '404' - description: Certificate not found. + description: A certificate not found. schema: properties: - _key: code @@ -53326,7 +68533,7 @@ entities: curl -X GET http://api.us-east-1.mbedcloud.com/v3/developer-certificates/THE_CERTIFICATE_ID \ - -H "Authorization: Bearer " + -H "Authorization: Bearer " ```' drop_fields: @@ -53803,7 +69010,7 @@ entities: x_deprecation: null x_filter: {} - _key: list - description: 'Retrieve trusted certificates in an array. + description: 'Retrieve an array of trusted certificates. **Example:** @@ -53812,7 +69019,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -53834,12 +69041,13 @@ entities: - status__eq - issuer__like - subject__like + - certificate_fingerprint__eq - valid__eq field_renames: [] fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -53885,7 +69093,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -53921,7 +69129,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -53966,9 +69174,15 @@ entities: format: int32 type: integer - _key: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' example: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag description: API resource entity version. example: '1' @@ -54192,6 +69406,8 @@ entities: summary: Get all trusted certificates. x_deprecation: null x_filter: + certificate_fingerprint: + - eq device_execution_mode: - eq - neq @@ -54214,7 +69430,7 @@ entities: valid: - eq - _key: read - description: 'Retrieve a trusted certificate by ID. + description: 'Retrieve a trusted certificate. **Example:** @@ -54224,7 +69440,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -54332,10 +69548,16 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -54532,7 +69754,7 @@ entities: - type type: object - _key: '404' - description: Certificate not found. + description: A certificate not found. schema: properties: - _key: code @@ -54584,7 +69806,7 @@ entities: self: true type: trusted_certificate return_type: trusted_certificate - summary: Get trusted certificate by ID. + summary: Get a trusted certificate. x_deprecation: null x_filter: {} - _key: update @@ -54598,7 +69820,7 @@ entities: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/trusted-certificates/{cert_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -54645,13 +69867,19 @@ entities: x-nullable: true - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default value + is false.' entity_fieldname: enrollment_mode example: false in: body parameter_fieldname: enrollment_mode required: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: *id021 - _key: id api_fieldname: id description: Entity ID. @@ -54685,7 +69913,7 @@ entities: api_fieldname: service description: Service name where the certificate is used. entity_fieldname: service - enum: *id015 + enum: *id022 enum_reference: trusted_certificate_service_enum in: body parameter_fieldname: service @@ -54695,7 +69923,7 @@ entities: api_fieldname: status description: Status of the certificate. entity_fieldname: status - enum: *id016 + enum: *id023 enum_reference: trusted_certificate_status_enum example: ACTIVE in: body @@ -54765,10 +69993,16 @@ entities: type: integer - _key: enrollment_mode api_fieldname: enrollment_mode - description: If true, signature is not required. Default value false. + description: 'DEPRECATED: Certificate is used in enrollment mode. Default + value is false.' entity_fieldname: enrollment_mode example: false type: boolean + x-deprecation: + comment: This field is deprecated, do not use it anymore. + end_of_life_at: '2021-11-01T00:00:00+00:00' + issued_at: '2020-11-01T00:00:00+00:00' + links: [] - _key: etag api_fieldname: etag description: API resource entity version. @@ -55013,7 +70247,7 @@ entities: - type type: object - _key: '404' - description: Certificate not found. + description: A certificate not found. schema: properties: - _key: code @@ -55124,11 +70358,42 @@ entities: - TrustedCertificateRespList - TrustedCertificateUpdateReq tags: - - Device security - certificates - - Device security - developer class certificates + - Security and identity - certificates + - Security and identity - developer class certificates - _key: update_campaign field_renames: [] fields: + - _key: active_at + api_fieldname: active_at + description: The time the campaign entered the active state. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: approval_required + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + example: 'false' + readOnly: false + required: false + type: boolean + - _key: archived_at + api_fieldname: archived_at + description: The time the campaign was archived. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: autostop + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped on reaching + a threshold. + example: 'false' + readOnly: false + required: false + type: boolean - _key: autostop_reason api_fieldname: autostop_reason description: Text description of why a campaign failed to start or why a campaign @@ -55137,9 +70402,30 @@ entities: readOnly: true required: false type: string + - _key: autostop_success_percent + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + example: '85.00' + format: double + readOnly: false + required: false + type: number + - _key: campaign_strategy + api_fieldname: campaign_strategy + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not add + new devices after it has started. A `continuous` campaign means that devices + may be added to the campaign after it has started. The default is `one-shot`. + enum: + - one-shot + - continuous + enum_reference: update_campaign_strategy_enum + readOnly: false + required: false + type: string - _key: created_at api_fieldname: created_at - description: The time the update campaign was created + description: The time the entity was created. example: '2017-05-22T12:37:55.576563Z' format: date-time readOnly: true @@ -55147,16 +70433,17 @@ entities: type: string - _key: description api_fieldname: description - description: An optional description of the campaign - example: '' + description: An optional description of the campaign. + example: This campaign updates Class XX devices to version 1.34 maxLength: 2000 readOnly: false required: false type: string - _key: device_filter api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at - example: id__eq=00000000000000000000000000000000 + description: The filter for the devices the campaign targets. Refer to this using + the filter ID. + example: state__eq=registered readOnly: false required: true type: string @@ -55175,7 +70462,7 @@ entities: type: filter - _key: finished api_fieldname: finished - description: The campaign finish timestamp + description: The time the campaign finished. example: '2017-05-22T12:37:55.576563Z' format: date-time readOnly: true @@ -55183,14 +70470,15 @@ entities: type: string - _key: id api_fieldname: id - description: The campaign ID - example: '00000000000000000000000000000000' + description: The campaign ID. + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' readOnly: false required: true type: string - _key: name api_fieldname: name - description: The campaign name + description: The campaign name. example: campaign maxLength: 128 readOnly: false @@ -55198,24 +70486,64 @@ entities: type: string - _key: phase api_fieldname: phase - description: The current phase of the campaign. + description: The phase of the campaign. + enum: + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived + enum_reference: update_campaign_phase_enum readOnly: true required: false type: string - _key: root_manifest_id api_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + description: The ID of the manifest that will be sent to the device as part of + the campaign. + example: 016e83dce36a00000000000100100102 readOnly: false required: false type: string - _key: root_manifest_url api_fieldname: root_manifest_url - example: http://example.com/00000000000000000000000000000000 + description: The URL for the manifest that will be sent to the device as part + of the campaign. + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 readOnly: true required: false type: string - _key: started_at api_fieldname: started_at + description: The time the campaign was started. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: starting_at + api_fieldname: starting_at + description: The time the campaign will be started. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: stopped_at + api_fieldname: stopped_at + description: The time the campaign was stopped. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + readOnly: true + required: false + type: string + - _key: stopping_at + api_fieldname: stopping_at + description: The time the campaign will be stopped. example: '2017-05-22T12:37:55.576563Z' format: date-time readOnly: true @@ -55223,7 +70551,7 @@ entities: type: string - _key: updated_at api_fieldname: updated_at - description: The time the object was updated + description: The time the entity was updated. example: '2017-05-22T12:37:55.576563Z' format: date-time readOnly: true @@ -55242,7 +70570,22 @@ entities: group_id: Device_Update methods: - _key: archive - description: This command will archive a campaign. + description: 'Archive a campaign. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc649000000000001001000b8/archive + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -55265,12 +70608,13 @@ entities: type: filter - _key: id api_fieldname: campaign_id - description: The campaign ID + description: The campaign ID. entity_fieldname: id external_param: false in: path name: campaign_id parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string group_id: Device_Update @@ -55288,12 +70632,196 @@ entities: description: The campaign has been archived. - _key: '400' description: Unable to change the phase of the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' description: Cannot find the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '409' description: Cannot archive the campaign while in the current phase. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -55303,28 +70831,83 @@ entities: x_deprecation: null x_filter: {} - _key: create - description: Create an update campaign. + description: "Create an update campaign.\n\nTo include a filter for targeted devices,\ + \ refer to the filter using `` in the message body.\n
\n**Usage\ + \ example:**\n```\ncurl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns\ + \ \\\n-H 'Authorization: Bearer ' \\\n-H 'content-type: application/json;charset=UTF-8'\ + \ \\\n-d '{\n \"campaign_strategy\": \"one-shot\",\n \"description\": \"Campaign\ + \ is for ...\",\n \"device_filter\": \"\",\n \"name\": \"campaign\"\ + ,\n \"root_manifest_id\": \"56780000000000a5b70000000000bd98\"\n}'\n```\n" drop_fields: - object - etag - type - filter - state - - autostop_reason - - phase - created_at + - updated_at + - active_at + - archived_at + - autostop_reason - finished - id - root_manifest_url + - starting_at - started_at - - updated_at + - stopping_at + - stopped_at + - phase field_renames: [] fields: + - _key: approval_required + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + entity_fieldname: approval_required + example: 'false' + in: body + parameter_fieldname: approval_required + required: false + type: boolean + - _key: autostop + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped on + reaching a threshold. + entity_fieldname: autostop + example: 'false' + in: body + parameter_fieldname: autostop + required: false + type: boolean + - _key: autostop_success_percent + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + entity_fieldname: autostop_success_percent + example: '85.00' + format: double + in: body + parameter_fieldname: autostop_success_percent + required: false + type: number + - _key: campaign_strategy + api_fieldname: campaign_strategy + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not add + new devices after it has started. A `continuous` campaign means that devices + may be added to the campaign after it has started. The default is `one-shot`. + entity_fieldname: campaign_strategy + enum: + - one-shot + - continuous + enum_reference: update_campaign_strategy_enum + in: body + parameter_fieldname: campaign_strategy + required: false + type: string - _key: description api_fieldname: description - description: An optional description of the campaign + description: An optional description of the campaign. entity_fieldname: description - example: '' + example: This campaign updates Class XX devices to version 1.34 in: body maxLength: 2000 parameter_fieldname: description @@ -55332,9 +70915,10 @@ entities: type: string - _key: device_filter api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. entity_fieldname: device_filter - example: id__eq=00000000000000000000000000000000 + example: state__eq=registered in: body parameter_fieldname: device_filter required: false @@ -55353,7 +70937,7 @@ entities: type: filter - _key: name api_fieldname: name - description: The campaign name + description: The campaign name. entity_fieldname: name example: campaign in: body @@ -55363,8 +70947,10 @@ entities: type: string - _key: root_manifest_id api_fieldname: root_manifest_id + description: The ID of the manifest that will be sent to the device as part + of the campaign. entity_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + example: 016e83dce36a00000000000100100102 in: body parameter_fieldname: root_manifest_id required: false @@ -55388,17 +70974,44 @@ entities: pagination: false parameter_map: campaign_id: id - path: /v3/update-campaigns/ + path: /v3/update-campaigns request_body: json request_content_type: application/json responses: - _key: '201' - description: Update campaign created + description: Update campaign created. schema: - _key: foreign_key entity: update_campaign group: Device_Update - _key: properties + active_at: + api_fieldname: active_at + description: The time the campaign entered the active state. + entity_fieldname: active_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + approval_required: + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + entity_fieldname: approval_required + example: 'false' + type: boolean + archived_at: + api_fieldname: archived_at + description: The time the campaign was archived. + entity_fieldname: archived_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + autostop: + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped + on reaching a threshold. + entity_fieldname: autostop + example: 'false' + type: boolean autostop_reason: api_fieldname: autostop_reason description: Text description of why a campaign failed to start or why a @@ -55406,83 +71019,125 @@ entities: entity_fieldname: autostop_reason example: Insufficient billing credit. type: string + autostop_success_percent: + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + entity_fieldname: autostop_success_percent + example: '85.00' + format: double + type: number + campaign_strategy: + api_fieldname: campaign_strategy + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not + add new devices after it has started. A `continuous` campaign means that + devices may be added to the campaign after it has started. The default + is `one-shot`. + entity_fieldname: campaign_strategy + enum: + - one-shot + - continuous + type: string created_at: api_fieldname: created_at - description: The time the update campaign was created + description: The time the entity was created. entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string description: api_fieldname: description - description: An optional description of the campaign + description: An optional description of the campaign. entity_fieldname: description - example: '' + example: This campaign updates Class XX devices to version 1.34 maxLength: 2000 type: string device_filter: api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. entity_fieldname: device_filter - example: id__eq=00000000000000000000000000000000 + example: state__eq=registered type: string etag: api_fieldname: etag - description: The entity instance signature + description: API resource entity version. entity_fieldname: etag example: '2017-05-22T12:37:58.753425Z' type: string finished: api_fieldname: finished - description: The campaign finish timestamp + description: The time the campaign finished. entity_fieldname: finished example: '2017-05-22T12:37:55.576563Z' format: date-time type: string id: api_fieldname: id - description: The campaign ID + description: The campaign ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' type: string name: api_fieldname: name - description: The campaign name + description: The campaign name. entity_fieldname: name example: campaign maxLength: 128 type: string object: api_fieldname: object - description: The API resource entity + description: 'Entity name: always ''update-campaign''.' entity_fieldname: object example: update-campaign type: string phase: api_fieldname: phase - description: The current phase of the campaign. + description: The phase of the campaign. entity_fieldname: phase - readOnly: true + enum: + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived type: string root_manifest_id: api_fieldname: root_manifest_id + description: The ID of the manifest that will be sent to the device as part + of the campaign. entity_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + example: 016e83dce36a00000000000100100102 type: string root_manifest_url: api_fieldname: root_manifest_url + description: The URL for the manifest that will be sent to the device as + part of the campaign. entity_fieldname: root_manifest_url - example: http://example.com/00000000000000000000000000000000 + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 type: string started_at: api_fieldname: started_at + description: The time the campaign was started. entity_fieldname: started_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + starting_at: + api_fieldname: starting_at + description: The time the campaign will be started. + entity_fieldname: starting_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string state: api_fieldname: state - description: 'DEPRECATED: The state of the campaign (use phase instead).' + description: The state of the campaign. entity_fieldname: state enum: - draft @@ -55510,9 +71165,23 @@ entities: end_of_life_at: '2020-03-18T14:55:20+00:00' issued_at: '2019-03-18T14:55:20+00:00' links: [] + stopped_at: + api_fieldname: stopped_at + description: The time the campaign was stopped. + entity_fieldname: stopped_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + stopping_at: + api_fieldname: stopping_at + description: The time the campaign will be stopped. + entity_fieldname: stopping_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string updated_at: api_fieldname: updated_at - description: The time the object was updated + description: The time the entity was updated. entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time @@ -55528,11 +71197,151 @@ entities: x-nullable: true - _key: '400' description: 'Validation error: The data used to create the campaign did not - validate + validate. ' + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' - description: Not authenticated + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '409' + description: Conflict, a campaign with the same name already exists + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -55542,7 +71351,22 @@ entities: x_deprecation: null x_filter: {} - _key: delete - description: Delete an update campaign. + description: 'Delete an update campaign. + +
+ + **Usage example:** + + ``` + + curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123457f9012ab567890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -55565,12 +71389,13 @@ entities: type: filter - _key: id api_fieldname: campaign_id - description: The ID of the update campaign + description: The campaign ID. entity_fieldname: id external_param: false in: path name: campaign_id parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string group_id: Device_Update @@ -55580,21 +71405,159 @@ entities: pagination: false parameter_map: campaign_id: id - path: /v3/update-campaigns/{campaign_id}/ + path: /v3/update-campaigns/{campaign_id} request_body: json request_content_type: application/json responses: - _key: '204' - description: Update campaign deleted + description: Update campaign deleted. - _key: '400' description: 'Validation error: The data used to update the campaign did not - validate + validate. ' + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' - description: Not authenticated + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: Update campaign can't be found + description: Update campaign can't be found. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '409' description: Conflict - Cannot delete the campaign while in the current phase. schema: @@ -55652,7 +71615,22 @@ entities: x_deprecation: null x_filter: {} - _key: device_metadata - description: Get campaign device metadata. + description: 'Get metadata for all devices in a campaign. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56790120000789012/campaign-device-metadata + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -55666,7 +71644,7 @@ entities: fields: - _key: after api_fieldname: after - description: The ID of the the item after which to retrieve the next page + description: The ID of the item after which to retrieve the next page. entity_fieldname: after example: 'null' external_param: true @@ -55689,18 +71667,19 @@ entities: type: filter - _key: id api_fieldname: campaign_id - description: The update campaign ID + description: The campaign ID. entity_fieldname: id external_param: false in: path name: campaign_id parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - _key: include api_fieldname: include description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' entity_fieldname: include external_param: true in: query @@ -55725,7 +71704,7 @@ entities: type: integer - _key: order api_fieldname: order - description: ASC or DESC + description: ASC or DESC. entity_fieldname: order enum: - ASC @@ -55748,12 +71727,12 @@ entities: pagination: true parameter_map: campaign_id: id - path: /v3/update-campaigns/{campaign_id}/campaign-device-metadata/ + path: /v3/update-campaigns/{campaign_id}/campaign-device-metadata request_body: json request_content_type: application/json responses: - _key: '200' - description: Request successful + description: Request successful. schema: foreign_key: entity: campaign_device_metadata @@ -55762,13 +71741,13 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one + description: The entity ID to fetch after the given one. entity_fieldname: after example: 'null' type: string - _key: data api_fieldname: data - description: A list of entities + description: A list of entities. entity_fieldname: data items: foreign_key: @@ -55777,7 +71756,7 @@ entities: properties: - _key: campaign api_fieldname: campaign - description: The device's campaign ID + description: The device's campaign ID. entity_fieldname: campaign_id example: 015bf72fccda00000000000100100280 in: path @@ -55786,14 +71765,14 @@ entities: type: string - _key: created_at api_fieldname: created_at - description: The time the campaign was created + description: The time the entity was created. entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - _key: deployment_state api_fieldname: deployment_state - description: The state of the update campaign on the device + description: The state of the update campaign on the device. entity_fieldname: deployment_state enum: - pending @@ -55805,69 +71784,69 @@ entities: type: string - _key: description api_fieldname: description - description: Description + description: Description. entity_fieldname: description - example: '' + example: a description maxLength: 2000 type: string - _key: device_id api_fieldname: device_id - description: The device ID + description: The device ID. entity_fieldname: device_id example: 015c2fec9bba0000000000010010036f type: string - _key: etag api_fieldname: etag - description: API resource entity version + description: API resource entity version. entity_fieldname: etag example: '2017-05-22T12:37:58.753425Z' type: string - _key: id api_fieldname: id - description: The metadata record ID + description: The metadata record ID. entity_fieldname: id example: 015c3029f6f7000000000001001000c3 in: path parameter_fieldname: campaign_device_metadata_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - _key: mechanism api_fieldname: mechanism - description: How the firmware is delivered (connector or direct) + description: How the firmware is delivered (connector or direct). entity_fieldname: mechanism example: connector type: string - _key: mechanism_url api_fieldname: mechanism_url - description: The Device Management Connect URL + description: The Device Management Connect URL. entity_fieldname: mechanism_url - example: '' type: string - _key: name api_fieldname: name - description: The record name + default: default_object_name + description: The record name. entity_fieldname: name - example: default_object_name maxLength: 128 type: string - _key: object api_fieldname: object - description: 'The entity name: always ''update-campaign-device-metadata''' + description: 'The entity name: always ''update-campaign-device-metadata''.' entity_fieldname: object example: update-campaign-device-metadata type: string - _key: updated_at api_fieldname: updated_at - description: 'The record was modified in the database format: date-time' + description: The time the entity was updated. entity_fieldname: updated_at - example: '2017-05-22T12:37:58.776736Z' + example: '2017-05-22T12:37:55.576563Z' format: date-time type: string type: object type: array - _key: has_more api_fieldname: has_more - description: A flag indicating whether there are more results + description: A flag indicating whether there are more results. entity_fieldname: has_more example: 'false' type: boolean @@ -55883,14 +71862,14 @@ entities: type: integer - _key: object api_fieldname: object - description: 'The entity name: always ''list''' + description: 'The entity name: always ''list''.' entity_fieldname: object example: list type: string - _key: order api_fieldname: order description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' + DESC. Default: ASC.' entity_fieldname: order enum: - ASC @@ -55916,7 +71895,21 @@ entities: x_deprecation: null x_filter: {} - _key: list - description: Get update campaigns for devices specified by a filter. + description: 'Get update campaigns for devices specified by a filter. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -55974,7 +71967,7 @@ entities: fields: - _key: after api_fieldname: after - description: The ID of the the item after which to retrieve the next page + description: The ID of the item after which to retrieve the next page. entity_fieldname: after example: null external_param: true @@ -55998,7 +71991,7 @@ entities: - _key: include api_fieldname: include description: 'A comma-separated list of data fields to return. Currently supported: - total_count' + total_count.' entity_fieldname: include external_param: true in: query @@ -56023,7 +72016,7 @@ entities: - _key: order api_fieldname: order description: 'The order of the records. Acceptable values: ASC, DESC. Default: - ASC' + ASC.' entity_fieldname: order enum: - ASC @@ -56047,12 +72040,12 @@ entities: pagination: true parameter_map: campaign_id: id - path: /v3/update-campaigns/ + path: /v3/update-campaigns request_body: json request_content_type: application/json responses: - _key: '200' - description: Request successful + description: Request successful. schema: foreign_key: entity: update_campaign @@ -56067,69 +72060,128 @@ entities: - _key: data api_fieldname: data entity_fieldname: data - example: '[]' items: - _key: foreign_key entity: update_campaign group: Device_Update - _key: properties + active_at: + description: The time the campaign entered the active state. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + approval_required: + description: Flag indicating whether approval is needed to start the + campaign. + example: 'false' + type: boolean + archived_at: + description: The time the campaign was archived. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + autostop: + description: Flag indicating whether the campaign should be auto-stopped + on reaching a threshold. + example: 'false' + type: boolean autostop_reason: description: Text description of why a campaign failed to start or why a campaign stopped. example: Insufficient billing credit. type: string + autostop_success_percent: + description: Percent of successful device updates to auto stop the campaign. + example: '85.00' + format: double + type: number + campaign_strategy: + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does + not add new devices after it has started. A `continuous` campaign + means that devices may be added to the campaign after it has started. + The default is `one-shot`. + enum: + - one-shot + - continuous + type: string created_at: - description: The time the update campaign was created + api_fieldname: created_at + description: The time the entity was created. + entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string description: - description: An optional description of the campaign - example: '' + description: An optional description of the campaign. + example: This campaign updates Class XX devices to version 1.34 maxLength: 2000 type: string device_filter: - description: The filter for the devices the campaign is targeting at - example: id__eq=00000000000000000000000000000000 + description: The filter for the devices the campaign targets. Refer + to this using the filter ID. + example: state__eq=registered type: string etag: - description: The entity instance signature + api_fieldname: etag + description: API resource entity version. + entity_fieldname: etag example: '2017-05-22T12:37:58.753425Z' type: string finished: - description: The campaign finish timestamp + description: The time the campaign finished. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string id: - description: The campaign ID - example: '00000000000000000000000000000000' + description: The campaign ID. + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' type: string name: - description: The campaign name + description: The campaign name. example: campaign maxLength: 128 type: string object: - description: The API resource entity + description: 'Entity name: always ''update-campaign''.' example: update-campaign type: string phase: - description: The current phase of the campaign. - readOnly: true + description: The phase of the campaign. + enum: + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived type: string root_manifest_id: - example: '00000000000000000000000000000000' + description: The ID of the manifest that will be sent to the device + as part of the campaign. + example: 016e83dce36a00000000000100100102 type: string root_manifest_url: - example: http://example.com/00000000000000000000000000000000 + description: The URL for the manifest that will be sent to the device + as part of the campaign. + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 type: string started_at: + description: The time the campaign was started. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + starting_at: + description: The time the campaign will be started. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string state: - description: 'DEPRECATED: The state of the campaign (use phase instead).' + description: The state of the campaign. enum: - draft - scheduled @@ -56156,55 +72208,206 @@ entities: end_of_life_at: '2020-03-18T14:55:20+00:00' issued_at: '2019-03-18T14:55:20+00:00' links: [] + stopped_at: + description: The time the campaign was stopped. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + stopping_at: + description: The time the campaign will be stopped. + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string updated_at: - description: The time the object was updated + api_fieldname: updated_at + description: The time the entity was updated. + entity_fieldname: updated_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + when: + description: The scheduled start time for the campaign. The campaign + will start within 1 minute when then start time has elapsed. example: '2017-05-22T12:37:55.576563Z' format: date-time type: string - when: - description: The scheduled start time for the campaign. The campaign - will start within 1 minute when then start time has elapsed. - example: '2017-05-22T12:37:55.576563Z' - format: date-time + x-nullable: true + type: array + - _key: has_more + api_fieldname: has_more + entity_fieldname: has_more + type: boolean + - _key: limit + api_fieldname: limit + entity_fieldname: limit + type: integer + - _key: object + api_fieldname: object + description: 'Entity name: always ''list''.' + entity_fieldname: object + example: list + type: string + - _key: order + api_fieldname: order + description: 'The order of the records to return. Acceptable values: ASC, + DESC. Default: ASC.' + entity_fieldname: order + enum: + - ASC + - DESC + example: ASC + type: string + - _key: total_count + api_fieldname: total_count + entity_fieldname: total_count + type: integer + - _key: '400' + description: 'Validation error: The data used to update the campaign did not + validate. + + ' + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object + - _key: '401' + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. type: string - x-nullable: true + required: + - name + - message + type: object type: array - - _key: has_more - api_fieldname: has_more - entity_fieldname: has_more - type: boolean - - _key: limit - api_fieldname: limit - entity_fieldname: limit - type: integer - - _key: object - api_fieldname: object - entity_fieldname: object - example: list + - _key: message + description: A human readable informative explanation + example: Validation error type: string - - _key: order - api_fieldname: order - description: 'The order of the records to return. Acceptable values: ASC, - DESC. Default: ASC' - entity_fieldname: order + - _key: object + description: Entity name, always `error`. enum: - - ASC - - DESC - example: ASC + - error type: string - - _key: total_count - api_fieldname: total_count - entity_fieldname: total_count - type: integer - - _key: '400' - description: 'Validation error: The data used to update the campaign did not - validate - - ' - - _key: '401' - description: Not authenticated + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: Unable to find content + description: Unable to find content. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -56269,25 +72472,49 @@ entities: - lte - gte - _key: read - description: Get an update campaign. + description: 'Get an update campaign. + +
+ + **Usage example:** + + ``` + + curl -X GET https://api.us-east-1.mbedcloud.com/v3/update-campaigns/11234567f9012ab56890120000789012 + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag - type - filter - state - - autostop_reason - - phase - created_at + - updated_at + - campaign_strategy + - active_at + - approval_required + - archived_at + - autostop + - autostop_success_percent + - autostop_reason - description - device_filter - finished - name - root_manifest_id - root_manifest_url + - starting_at - started_at + - stopping_at + - stopped_at + - phase - when - - updated_at field_renames: [] fields: - _key: device_filter_helper @@ -56304,11 +72531,12 @@ entities: type: filter - _key: id api_fieldname: id - description: The campaign ID + description: The campaign ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 016e83ddc648000000000001001000f5 in: path parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string group_id: Device_Update @@ -56318,17 +72546,44 @@ entities: pagination: false parameter_map: campaign_id: id - path: /v3/update-campaigns/{campaign_id}/ + path: /v3/update-campaigns/{campaign_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Retrieved result successfully + description: Retrieved result successfully. schema: - _key: foreign_key entity: update_campaign group: Device_Update - _key: properties + active_at: + api_fieldname: active_at + description: The time the campaign entered the active state. + entity_fieldname: active_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + approval_required: + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + entity_fieldname: approval_required + example: 'false' + type: boolean + archived_at: + api_fieldname: archived_at + description: The time the campaign was archived. + entity_fieldname: archived_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + autostop: + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped + on reaching a threshold. + entity_fieldname: autostop + example: 'false' + type: boolean autostop_reason: api_fieldname: autostop_reason description: Text description of why a campaign failed to start or why a @@ -56336,83 +72591,125 @@ entities: entity_fieldname: autostop_reason example: Insufficient billing credit. type: string + autostop_success_percent: + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + entity_fieldname: autostop_success_percent + example: '85.00' + format: double + type: number + campaign_strategy: + api_fieldname: campaign_strategy + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not + add new devices after it has started. A `continuous` campaign means that + devices may be added to the campaign after it has started. The default + is `one-shot`. + entity_fieldname: campaign_strategy + enum: + - one-shot + - continuous + type: string created_at: api_fieldname: created_at - description: The time the update campaign was created + description: The time the entity was created. entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string description: api_fieldname: description - description: An optional description of the campaign + description: An optional description of the campaign. entity_fieldname: description - example: '' + example: This campaign updates Class XX devices to version 1.34 maxLength: 2000 type: string device_filter: api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. entity_fieldname: device_filter - example: id__eq=00000000000000000000000000000000 + example: state__eq=registered type: string etag: api_fieldname: etag - description: The entity instance signature + description: API resource entity version. entity_fieldname: etag example: '2017-05-22T12:37:58.753425Z' type: string finished: api_fieldname: finished - description: The campaign finish timestamp + description: The time the campaign finished. entity_fieldname: finished example: '2017-05-22T12:37:55.576563Z' format: date-time type: string id: api_fieldname: id - description: The campaign ID + description: The campaign ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' type: string name: api_fieldname: name - description: The campaign name + description: The campaign name. entity_fieldname: name example: campaign maxLength: 128 type: string object: api_fieldname: object - description: The API resource entity + description: 'Entity name: always ''update-campaign''.' entity_fieldname: object example: update-campaign type: string phase: api_fieldname: phase - description: The current phase of the campaign. + description: The phase of the campaign. entity_fieldname: phase - readOnly: true + enum: + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived type: string root_manifest_id: api_fieldname: root_manifest_id + description: The ID of the manifest that will be sent to the device as part + of the campaign. entity_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + example: 016e83dce36a00000000000100100102 type: string root_manifest_url: api_fieldname: root_manifest_url + description: The URL for the manifest that will be sent to the device as + part of the campaign. entity_fieldname: root_manifest_url - example: http://example.com/00000000000000000000000000000000 + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 type: string started_at: api_fieldname: started_at + description: The time the campaign was started. entity_fieldname: started_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + starting_at: + api_fieldname: starting_at + description: The time the campaign will be started. + entity_fieldname: starting_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string state: api_fieldname: state - description: 'DEPRECATED: The state of the campaign (use phase instead).' + description: The state of the campaign. entity_fieldname: state enum: - draft @@ -56440,9 +72737,23 @@ entities: end_of_life_at: '2020-03-18T14:55:20+00:00' issued_at: '2019-03-18T14:55:20+00:00' links: [] + stopped_at: + api_fieldname: stopped_at + description: The time the campaign was stopped. + entity_fieldname: stopped_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + stopping_at: + api_fieldname: stopping_at + description: The time the campaign will be stopped. + entity_fieldname: stopping_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string updated_at: api_fieldname: updated_at - description: The time the object was updated + description: The time the entity was updated. entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time @@ -56458,13 +72769,151 @@ entities: x-nullable: true - _key: '400' description: 'Validation error: The data used to update the campaign did not - validate + validate. ' + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' - description: Not authenticated + description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' - description: Unable to find campaign + description: Unable to find campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -56474,7 +72923,22 @@ entities: x_deprecation: null x_filter: {} - _key: start - description: This command will begin the process of starting a campaign. + description: 'Start a campaign. + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/5d645eaec2315a8900002e655cd94fa8/start + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -56497,12 +72961,13 @@ entities: type: filter - _key: id api_fieldname: campaign_id - description: The campaign ID + description: The campaign ID. entity_fieldname: id external_param: false in: path name: campaign_id parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string group_id: Device_Update @@ -56520,12 +72985,196 @@ entities: description: The campaign is starting. - _key: '400' description: Unable to change the phase of the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' description: Cannot find the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '409' description: Cannot start the campaign while in the current phase. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -56535,7 +73184,23 @@ entities: x_deprecation: null x_filter: {} - _key: stop - description: This command will begin the process of stopping a campaign. + description: 'Stop a campaign. Stopping is a process that requires the campaign + go through several [phases](https://www.pelion.com/docs/device-management/current/updating-firmware/device-management-update-using-the-apis.html). + +
+ + **Usage example:** + + ``` + + curl -X POST https://api.us-east-1.mbedcloud.com/v3/update-campaigns/016e83ddc645000000000001001000b5/stop + \ + + -H ''Authorization: Bearer '' + + ``` + + ' drop_fields: - object - etag @@ -56558,12 +73223,13 @@ entities: type: filter - _key: id api_fieldname: campaign_id - description: The campaign ID + description: The campaign ID. entity_fieldname: id external_param: false in: path name: campaign_id parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string group_id: Device_Update @@ -56581,12 +73247,196 @@ entities: description: The campaign is stopping. - _key: '400' description: Unable to change the phase of the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '401' description: Not authenticated. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '404' description: Cannot find the campaign. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object - _key: '409' description: Cannot stop the campaign while in the current phase. + schema: + properties: + - _key: code + description: HTTP response code + example: 400 + format: int32 + type: integer + - _key: fields + description: Request fields which failed validation. + items: + properties: + - _key: message + description: Message describing the error condition. + type: string + - _key: name + description: Name of the field which caused the error. + type: string + required: + - name + - message + type: object + type: array + - _key: message + description: A human readable informative explanation + example: Validation error + type: string + - _key: object + description: Entity name, always `error`. + enum: + - error + type: string + - _key: request_id + description: ID of the request. + example: 0161991d63150242ac12000600000000 + type: string + - _key: type + description: Error type used to categorise the error. + example: validation_error + type: string + required: + - code + - message + - object + - request_id + - type + type: object return_info: custom: false self: true @@ -56596,27 +73446,67 @@ entities: x_deprecation: null x_filter: {} - _key: update - description: Modify an update campaign. + description: "Modify an update campaign.\n
\n**Usage example:**\n```\ncurl\ + \ -X PUT https://api.us-east-1.mbedcloud.com/v3/update-campaigns/1123007f9012ab567890120000789012\ + \ \\\n-H 'Authorization: Bearer ' \\\nd '{\n \"description\": \"Campaign\ + \ is for ...\",\n \"device_filter\": \"123400000000000000000000000ae45\",\n\ + \ \"name\": \"campaign\",\n \"root_manifest_id\": \"5678000000000000000000000000bd98\"\ + ,\n}'\n```\n" drop_fields: - object - etag - type - filter - state - - autostop_reason - - phase - created_at + - updated_at + - campaign_strategy + - active_at + - archived_at + - autostop_reason - finished - root_manifest_url + - starting_at - started_at - - updated_at + - stopping_at + - stopped_at + - phase field_renames: [] fields: + - _key: approval_required + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + entity_fieldname: approval_required + example: 'false' + in: body + parameter_fieldname: approval_required + required: false + type: boolean + - _key: autostop + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped on + reaching a threshold. + entity_fieldname: autostop + example: 'false' + in: body + parameter_fieldname: autostop + required: false + type: boolean + - _key: autostop_success_percent + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + entity_fieldname: autostop_success_percent + example: '85.00' + format: double + in: body + parameter_fieldname: autostop_success_percent + required: false + type: number - _key: description api_fieldname: description - description: An optional description of the campaign + description: An optional description of the campaign. entity_fieldname: description - example: '' + example: This campaign updates Class XX devices to version 1.34 in: body maxLength: 2000 parameter_fieldname: description @@ -56624,9 +73514,10 @@ entities: type: string - _key: device_filter api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. entity_fieldname: device_filter - example: id__eq=00000000000000000000000000000000 + example: state__eq=registered in: body parameter_fieldname: device_filter required: false @@ -56645,16 +73536,17 @@ entities: type: filter - _key: id api_fieldname: id - description: The campaign ID + description: The campaign ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 016e83ddc648000000000001001000f5 in: path parameter_fieldname: campaign_id + pattern: '[A-Fa-f0-9]{32}' required: true type: string - _key: name api_fieldname: name - description: The campaign name + description: The campaign name. entity_fieldname: name example: campaign in: body @@ -56664,8 +73556,10 @@ entities: type: string - _key: root_manifest_id api_fieldname: root_manifest_id + description: The ID of the manifest that will be sent to the device as part + of the campaign. entity_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + example: 016e83dce36a00000000000100100102 in: body parameter_fieldname: root_manifest_id required: false @@ -56689,17 +73583,44 @@ entities: pagination: false parameter_map: campaign_id: id - path: /v3/update-campaigns/{campaign_id}/ + path: /v3/update-campaigns/{campaign_id} request_body: json request_content_type: application/json responses: - _key: '200' - description: Update campaign updated + description: Update campaign updated. schema: - _key: foreign_key entity: update_campaign group: Device_Update - _key: properties + active_at: + api_fieldname: active_at + description: The time the campaign entered the active state. + entity_fieldname: active_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + approval_required: + api_fieldname: approval_required + description: Flag indicating whether approval is needed to start the campaign. + entity_fieldname: approval_required + example: 'false' + type: boolean + archived_at: + api_fieldname: archived_at + description: The time the campaign was archived. + entity_fieldname: archived_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + autostop: + api_fieldname: autostop + description: Flag indicating whether the campaign should be auto-stopped + on reaching a threshold. + entity_fieldname: autostop + example: 'false' + type: boolean autostop_reason: api_fieldname: autostop_reason description: Text description of why a campaign failed to start or why a @@ -56707,83 +73628,125 @@ entities: entity_fieldname: autostop_reason example: Insufficient billing credit. type: string + autostop_success_percent: + api_fieldname: autostop_success_percent + description: Percent of successful device updates to auto stop the campaign. + entity_fieldname: autostop_success_percent + example: '85.00' + format: double + type: number + campaign_strategy: + api_fieldname: campaign_strategy + default: one-shot + description: How the campaign adds devices. A `one-shot` campaign does not + add new devices after it has started. A `continuous` campaign means that + devices may be added to the campaign after it has started. The default + is `one-shot`. + entity_fieldname: campaign_strategy + enum: + - one-shot + - continuous + type: string created_at: api_fieldname: created_at - description: The time the update campaign was created + description: The time the entity was created. entity_fieldname: created_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string description: api_fieldname: description - description: An optional description of the campaign + description: An optional description of the campaign. entity_fieldname: description - example: '' + example: This campaign updates Class XX devices to version 1.34 maxLength: 2000 type: string device_filter: api_fieldname: device_filter - description: The filter for the devices the campaign is targeting at + description: The filter for the devices the campaign targets. Refer to this + using the filter ID. entity_fieldname: device_filter - example: id__eq=00000000000000000000000000000000 + example: state__eq=registered type: string etag: api_fieldname: etag - description: The entity instance signature + description: API resource entity version. entity_fieldname: etag example: '2017-05-22T12:37:58.753425Z' type: string finished: api_fieldname: finished - description: The campaign finish timestamp + description: The time the campaign finished. entity_fieldname: finished example: '2017-05-22T12:37:55.576563Z' format: date-time type: string id: api_fieldname: id - description: The campaign ID + description: The campaign ID. entity_fieldname: id - example: '00000000000000000000000000000000' + example: 016e83ddc648000000000001001000f5 + pattern: '[A-Fa-f0-9]{32}' type: string name: api_fieldname: name - description: The campaign name + description: The campaign name. entity_fieldname: name example: campaign maxLength: 128 type: string object: api_fieldname: object - description: The API resource entity + description: 'Entity name: always ''update-campaign''.' entity_fieldname: object example: update-campaign type: string phase: api_fieldname: phase - description: The current phase of the campaign. + description: The phase of the campaign. entity_fieldname: phase - readOnly: true + enum: + - draft + - awaiting_approval + - timed + - starting + - active + - stopping + - stopped + - deleted + - archived type: string root_manifest_id: api_fieldname: root_manifest_id + description: The ID of the manifest that will be sent to the device as part + of the campaign. entity_fieldname: root_manifest_id - example: '00000000000000000000000000000000' + example: 016e83dce36a00000000000100100102 type: string root_manifest_url: api_fieldname: root_manifest_url + description: The URL for the manifest that will be sent to the device as + part of the campaign. entity_fieldname: root_manifest_url - example: http://example.com/00000000000000000000000000000000 + example: https://api.us-east-1.mbedcloud.com/v3/firmware-manifests/016e83dce36a00000000000100100102 type: string started_at: api_fieldname: started_at + description: The time the campaign was started. entity_fieldname: started_at example: '2017-05-22T12:37:55.576563Z' format: date-time type: string + starting_at: + api_fieldname: starting_at + description: The time the campaign will be started. + entity_fieldname: starting_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string state: api_fieldname: state - description: 'DEPRECATED: The state of the campaign (use phase instead).' + description: The state of the campaign. entity_fieldname: state enum: - draft @@ -56811,9 +73774,23 @@ entities: end_of_life_at: '2020-03-18T14:55:20+00:00' issued_at: '2019-03-18T14:55:20+00:00' links: [] + stopped_at: + api_fieldname: stopped_at + description: The time the campaign was stopped. + entity_fieldname: stopped_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string + stopping_at: + api_fieldname: stopping_at + description: The time the campaign will be stopped. + entity_fieldname: stopping_at + example: '2017-05-22T12:37:55.576563Z' + format: date-time + type: string updated_at: api_fieldname: updated_at - description: The time the object was updated + description: The time the entity was updated. entity_fieldname: updated_at example: '2017-05-22T12:37:55.576563Z' format: date-time @@ -56829,16 +73806,16 @@ entities: x-nullable: true - _key: '400' description: 'Validation error: The data used to update the campaign did not - validate + validate. ' - _key: '401' - description: Not authenticated + description: Not authenticated. - _key: '403' description: Fields apart from 'name', 'description' and 'state' cannot be modified when the state is not 'draft'. - _key: '404' - description: Update campaign can't be found + description: Update campaign can't be found. return_info: custom: false self: true @@ -56854,7 +73831,8 @@ entities: - UpdateCampaignPage - UpdateCampaignPostRequest - UpdateCampaignPutRequest - tags: [] + tags: + - Device update - campaigns - _key: user field_renames: [] fields: @@ -56882,6 +73860,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -57087,11 +74072,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -57099,17 +74092,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -57192,8 +74187,10 @@ entities: group_id: Accounts methods: - _key: create - description: 'Create or invite a new user to the account. Only email address is - used; other attributes are set in the second step. + description: 'Create or invite a new user to the account. The invited user has + to accept the invitation by clicking the link in the invitation email. + + Note: This endpoint is restricted to administrators. **Example:** @@ -57202,7 +74199,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/users?action=invite \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -57314,11 +74311,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -57326,20 +74331,22 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type - enum: &id017 + entity_fieldname: login_profile_type + enum: &id024 - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string - required: &id018 + required: &id025 - id type: object parameter_fieldname: login_profiles @@ -57422,6 +74429,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -57620,11 +74634,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -57632,17 +74654,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -57931,6 +74955,8 @@ entities: - _key: delete description: 'Delete a user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -57938,7 +74964,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -58172,7 +75198,9 @@ entities: x_deprecation: null x_filter: {} - _key: list - description: 'Retrieve the details of all users. + description: 'Retrieve an array of users. + + Note: This endpoint is restricted to administrators. **Example:** @@ -58181,7 +75209,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -58201,7 +75229,7 @@ entities: fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -58238,7 +75266,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -58276,7 +75304,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -58311,6 +75339,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -58478,11 +75513,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -58490,17 +75533,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -58716,7 +75761,7 @@ entities: self: true type: user return_type: paginated_response(user) - summary: Get the details of all users. + summary: Get users. x_deprecation: null x_filter: email: @@ -58728,7 +75773,9 @@ entities: - in - nin - _key: policy_groups - description: 'Retrieve groups of the user. + description: 'Retrieve an array of policy groups associated with a user. + + Note: This endpoint is restricted to administrators. **Example:** @@ -58737,7 +75784,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id}/groups \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -58752,7 +75799,7 @@ entities: fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -58799,7 +75846,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -58835,7 +75882,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -58860,6 +75907,16 @@ entities: example: 0 format: int32 type: integer + x-deprecation: + comment: This property is deprecated. See 'application_count' property. + end_of_life_at: '2021-08-01T00:00:00+00:00' + issued_at: '2020-08-01T00:00:00+00:00' + links: [] + - _key: application_count + description: The number of applications in this group. + example: 0 + format: int32 + type: integer - _key: created_at description: Creation UTC time RFC3339. example: '2018-02-13T09:35:20Z' @@ -59096,12 +76153,14 @@ entities: self: false type: policy_group return_type: paginated_response(policy_group) - summary: Get groups of the user. + summary: Get policy groups for a user. x_deprecation: null x_filter: {} - _key: read description: 'Retrieve the details of a user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -59109,7 +76168,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -59195,6 +76254,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -59393,11 +76459,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -59405,17 +76479,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -59654,7 +76730,9 @@ entities: x_deprecation: null x_filter: {} - _key: update - description: 'Update user details + description: 'Update user details. + + Note: This endpoint is restricted to administrators. **Example:** @@ -59663,7 +76741,7 @@ entities: curl -X PUT https://api.us-east-1.mbedcloud.com/v3/users/{user_id} \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -59775,11 +76853,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -59787,16 +76873,18 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type - enum: *id017 + entity_fieldname: login_profile_type + enum: *id024 + example: NATIVE readOnly: true type: string - required: *id018 + required: *id025 type: object parameter_fieldname: login_profiles required: false @@ -59867,6 +76955,13 @@ entities: example: 01619571e2e90242ac12000600000000 pattern: '[a-f0-9]{32}' type: string + - _key: created_at + api_fieldname: created_at + description: Creation UTC time RFC3339. + entity_fieldname: created_at + example: '2018-02-13T09:35:20Z' + format: date-time + type: string - _key: ip_address api_fieldname: ip_address description: IP address of the client. @@ -60065,11 +77160,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -60077,17 +77180,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -60491,11 +77596,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -60503,17 +77616,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -60544,6 +77659,8 @@ entities: - _key: create description: 'Invite a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -60551,7 +77668,7 @@ entities: curl -X POST https://api.us-east-1.mbedcloud.com/v3/user-invitations \ - -H ''Authorization: Bearer '' \ + -H ''Authorization: Bearer '' \ -H ''content-type: application/json'' \ @@ -60603,11 +77720,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -60615,17 +77740,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -60728,11 +77855,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -60740,17 +77875,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -60942,6 +78079,8 @@ entities: - _key: delete description: 'Delete an active user invitation sent to a new or existing user. + Note: This endpoint is restricted to administrators. + **Example:** @@ -60950,7 +78089,7 @@ entities: curl -X DELETE https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -61136,7 +78275,9 @@ entities: x_deprecation: null x_filter: {} - _key: list - description: 'Retrieve details for all the active user invitations. + description: 'Retrieve an array of active user invitations sent by email. + + Note: This endpoint is restricted to administrators. **Example:** @@ -61145,7 +78286,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -61161,7 +78302,7 @@ entities: fields: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 external_param: true @@ -61187,7 +78328,7 @@ entities: - _key: order api_fieldname: order default: ASC - description: 'Record order based on creation time. Acceptable values: ASC, DESC. + description: 'Record order based on creation. Acceptable values: ASC, DESC. Default: ASC.' entity_fieldname: order enum: @@ -61225,7 +78366,7 @@ entities: properties: - _key: after api_fieldname: after - description: The entity ID to fetch after the given one. + description: The entity ID to retrieve after the given one. entity_fieldname: after example: 01619571f3c00242ac12000600000000 pattern: '[a-f0-9]{32}' @@ -61283,11 +78424,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -61295,17 +78444,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -61481,7 +78632,7 @@ entities: self: true type: user_invitation return_type: paginated_response(user_invitation) - summary: Get the details of all user invitations. + summary: Get user invitations. x_deprecation: null x_filter: login_profiles: @@ -61489,6 +78640,8 @@ entities: - _key: read description: 'Retrieve the details of an active user invitation. + Note: This endpoint is restricted to administrators. + **Example:** @@ -61497,7 +78650,7 @@ entities: curl -X GET https://api.us-east-1.mbedcloud.com/v3/user-invitations/{invitation_id} \ - -H ''Authorization: Bearer '' + -H ''Authorization: Bearer '' ```' drop_fields: @@ -61603,11 +78756,19 @@ entities: entity: login_profile group: Accounts properties: + - _key: foreign_id + api_fieldname: foreign_id + description: The ID of the user in the identity provider's service. + entity_fieldname: foreign_id + example: fed/user_007 + readOnly: true + type: string - _key: id _override: true api_fieldname: id description: ID of the identity provider. entity_fieldname: id + example: 01619571f3c00242ac12000600000000 readOnly: false type: string - _key: name @@ -61615,17 +78776,19 @@ entities: api_fieldname: name description: Name of the identity provider. entity_fieldname: name + example: Pelion readOnly: false type: string - _key: type api_fieldname: type description: Identity provider type. - entity_fieldname: type + entity_fieldname: login_profile_type enum: - NATIVE - MBED - SAML2 - OIDC + example: NATIVE readOnly: true type: string required: @@ -61826,18 +78989,14 @@ entities: fields: - _key: message api_fieldname: message - description: 'Provides details in case of failure. - - ' - example: message describing the verification failure + description: Provides details in case of failure. + example: Message describing the verification failure readOnly: true required: false type: string - _key: successful api_fieldname: successful - description: 'Indicates whether the certificate issuer was verified successfully. - - ' + description: Indicates whether the certificate issuer was verified successfully. example: false readOnly: true required: false @@ -61849,6 +79008,14 @@ entities: - CertificateIssuerVerifyResponse tags: [] enums: +- _key: account_business_model_enum + entity_name: account + enum_name: account_business_model_enum + field_name: business_model + group_id: Accounts + values: + - active_device_business_model + - api_calls_1_business_model - _key: account_mfa_status_enum entity_name: account enum_name: account_mfa_status_enum @@ -62053,14 +79220,6 @@ enums: - completed - new - processing -- _key: device_enrollment_denial_order_enum - entity_name: device_enrollment_denial - enum_name: device_enrollment_denial_order_enum - field_name: order - group_id: Devices - values: - - ASC - - DESC - _key: device_enrollment_order_enum entity_name: device_enrollment enum_name: device_enrollment_order_enum @@ -62104,6 +79263,14 @@ enums: values: - ASC - DESC +- _key: firmware_manifest_delivered_payload_type_enum + entity_name: firmware_manifest + enum_name: firmware_manifest_delivered_payload_type_enum + field_name: delivered_payload_type + group_id: Device_Update + values: + - delta + - full - _key: firmware_manifest_order_enum entity_name: firmware_manifest enum_name: firmware_manifest_order_enum @@ -62112,6 +79279,56 @@ enums: values: - ASC - DESC +- _key: firmware_manifest_schema_version_enum + entity_name: firmware_manifest + enum_name: firmware_manifest_schema_version_enum + field_name: manifest_schema_version + group_id: Device_Update + values: + - '1' + - '3' +- _key: identity_provider_algorithm_enum + entity_name: identity_provider + enum_name: identity_provider_algorithm_enum + field_name: algorithm + group_id: Accounts + values: + - EC224 + - EC256 + - EC384 + - EC521 + - ECDSA224 + - ECDSA256 + - ECDSA384 + - ECDSA521 + - RSA2048 + - RSA3072 +- _key: identity_provider_order_enum + entity_name: identity_provider + enum_name: identity_provider_order_enum + field_name: order + group_id: Accounts + values: + - ASC + - DESC +- _key: identity_provider_status_enum + entity_name: identity_provider + enum_name: identity_provider_status_enum + field_name: status + group_id: Accounts + values: + - ACTIVE + - SUSPENDED +- _key: identity_provider_type_enum + entity_name: identity_provider + enum_name: identity_provider_type_enum + field_name: identity_provider_type + group_id: Accounts + values: + - MBED + - NATIVE + - OIDC + - SAML2 - _key: light_theme_color_reference_enum entity_name: light_theme_color enum_name: light_theme_color_reference_enum @@ -62177,6 +79394,24 @@ enums: - desktop_background_landscape - desktop_background_portrait - desktop_background_square +- _key: login_profile_type_enum + entity_name: login_profile + enum_name: login_profile_type_enum + field_name: login_profile_type + group_id: Accounts + values: + - MBED + - NATIVE + - OIDC + - SAML2 +- _key: oidc_request_token_mode_enum + entity_name: oidc_request + enum_name: oidc_request_token_mode_enum + field_name: token_request_mode + group_id: Accounts + values: + - GET + - POST - _key: policy_group_order_enum entity_name: policy_group enum_name: policy_group_order_enum @@ -62275,6 +79510,38 @@ enums: - desktop_background_landscape - desktop_background_portrait - desktop_background_square +- _key: subtenant_identity_provider_algorithm_enum + entity_name: subtenant_identity_provider + enum_name: subtenant_identity_provider_algorithm_enum + field_name: algorithm + group_id: Accounts + values: + - EC224 + - EC256 + - EC384 + - EC521 + - ECDSA224 + - ECDSA256 + - ECDSA384 + - ECDSA521 + - RSA2048 + - RSA3072 +- _key: subtenant_identity_provider_order_enum + entity_name: subtenant_identity_provider + enum_name: subtenant_identity_provider_order_enum + field_name: order + group_id: Accounts + values: + - ASC + - DESC +- _key: subtenant_identity_provider_status_enum + entity_name: subtenant_identity_provider + enum_name: subtenant_identity_provider_status_enum + field_name: status + group_id: Accounts + values: + - ACTIVE + - SUSPENDED - _key: subtenant_light_theme_color_reference_enum entity_name: subtenant_light_theme_color enum_name: subtenant_light_theme_color_reference_enum @@ -62415,6 +79682,29 @@ enums: values: - ASC - DESC +- _key: update_campaign_phase_enum + entity_name: update_campaign + enum_name: update_campaign_phase_enum + field_name: phase + group_id: Device_Update + values: + - active + - archived + - awaiting_approval + - deleted + - draft + - starting + - stopped + - stopping + - timed +- _key: update_campaign_strategy_enum + entity_name: update_campaign + enum_name: update_campaign_strategy_enum + field_name: campaign_strategy + group_id: Device_Update + values: + - continuous + - one-shot - _key: user_invitation_order_enum entity_name: user_invitation enum_name: user_invitation_order_enum @@ -62460,8 +79750,15 @@ groups: - account - policy_group - subtenant_policy_group + - identity_provider + - subtenant_identity_provider + - saml2_request + - oidc_request + - oidc_request_claim_mapping + - identity_provider_public_key enums: - policy_inherited_type_enum + - login_profile_type_enum - user_status_enum - user_order_enum - subtenant_user_status_enum @@ -62473,9 +79770,18 @@ groups: - subtenant_api_key_order_enum - account_status_enum - account_mfa_status_enum + - account_business_model_enum - account_order_enum - policy_group_order_enum - subtenant_policy_group_order_enum + - identity_provider_status_enum + - identity_provider_type_enum + - identity_provider_order_enum + - identity_provider_algorithm_enum + - subtenant_identity_provider_status_enum + - subtenant_identity_provider_order_enum + - subtenant_identity_provider_algorithm_enum + - oidc_request_token_mode_enum - _key: Branding entities: - dark_theme_color @@ -62505,10 +79811,14 @@ groups: - firmware_manifest enums: - campaign_device_metadata_deployment_state_enum + - update_campaign_strategy_enum + - update_campaign_phase_enum - update_campaign_order_enum - campaign_statistics_summary_status_enum - campaign_statistics_id_enum - firmware_image_order_enum + - firmware_manifest_schema_version_enum + - firmware_manifest_delivered_payload_type_enum - firmware_manifest_order_enum - _key: Devices entities: @@ -62518,7 +79828,6 @@ groups: - device_enrollment_bulk_create - device_enrollment_bulk_delete - device_enrollment - - device_enrollment_denial enums: - device_lifecycle_status_enum - device_deployed_state_enum @@ -62527,7 +79836,6 @@ groups: - device_enrollment_bulk_create_status_enum - device_enrollment_bulk_delete_status_enum - device_enrollment_order_enum - - device_enrollment_denial_order_enum - _key: Security entities: - pre_shared_key