openapi: 3.2.0 info: title: Live Objects REST API Guide Bootstrap Config API description: API description for Live Objects service contact: name: Live Objects Support url: https://liveobjects.orange-business.com/#/cms/support version: 2026.7.0 servers: - url: https://liveobjects.orange-business.com security: - X-API-KEY: [] OAuth2.0: [] tags: - name: Bootstrap Config description: Manage lwm2m bootstrap config paths: /api/v1/bootstrap/lwm2m/configs/{configId}: get: tags: - Bootstrap Config summary: Get a lwm2m bootstrap config from configId. description: 'Restricted to API keys with at least one of the following roles: BOOTSTRAP_R.' operationId: getLwm2mBootstrapConfig parameters: - name: configId in: path description: bootstrap config identifier required: true schema: type: string - name: showSensitiveInformation in: query description: whether or not to show sensitive information (headers in external config server) required: false schema: type: boolean default: false responses: '200': description: Bootstrap config content: application/json: schema: $ref: '#/components/schemas/BootstrapConfig' put: tags: - Bootstrap Config summary: Update a lwm2m bootstrap config. description: 'Usage of this API will be reported in your access log under ''bootstrap'' category.

Restricted to API keys with at least one of the following roles: BOOTSTRAP_W.' operationId: updateLwm2mBootstrapConfig parameters: - name: configId in: path description: bootstrap config identifier required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BootstrapConfigRequest' examples: Config Update Request: description: Config Update Request value: name: NewName description: This is a new description runServers: - id: myServer useLiveObjects: false lwm2mDefinition: security: shortServerId: 1 lwm2mServerUri: myURI securityMode: 0 server: shortServerId: 1 lifetime: 300 binding: U required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BootstrapConfig' delete: tags: - Bootstrap Config summary: Delete a lwm2m bootstrap config from configId. description: 'Usage of this API will be reported in your access log under ''bootstrap'' category.

Restricted to API keys with at least one of the following roles: BOOTSTRAP_W.' operationId: deleteLwm2mBootstrapConfig parameters: - name: configId in: path description: bootstrap config identifier required: true schema: type: string responses: '204': description: Bootstrap config deleted /api/v1/bootstrap/lwm2m/configs: get: tags: - Bootstrap Config summary: List lwm2m bootstrap configs. description: 'Restricted to API keys with at least one of the following roles: BOOTSTRAP_R.' operationId: listLwm2mBootstrapConfigs parameters: - name: limit in: query description: the maximum number of items per page (optional, highest value is 1000) required: false schema: type: string default: '20' - name: bookmarkId in: query description: 'id of the last document retrieved that can be used to paginate : first result will be the one following this document id' required: false schema: type: string responses: '200': description: List of bootstrap configs content: application/json: schema: type: array items: $ref: '#/components/schemas/BootstrapConfig' post: tags: - Bootstrap Config summary: Create a lwm2m bootstrap config. description: 'Usage of this API will be reported in your access log under ''bootstrap'' category.

Restricted to API keys with at least one of the following roles: BOOTSTRAP_W.' operationId: createLwm2mBootstrapConfig requestBody: content: application/json: schema: $ref: '#/components/schemas/BootstrapConfigRequest' examples: LO server: description: This example will produce a bootstrap config with specific security and server object for LO value: name: MyBootstrapConfig description: This is a LO bootstrap config runServers: - id: LOServer useLiveObjects: true renewSecurityOnBootstrap: true lwm2mDefinition: security: shortServerId: 1 server: shortServerId: 1 lifetime: 300 binding: U Other server: description: This example will produce a bootstrap config with custom security and server objects value: name: MyBootstrapConfig description: This is my bootstrap config runServers: - id: myServer useLiveObjects: false lwm2mDefinition: security: shortServerId: 1 lwm2mServerUri: myURI securityMode: 0 server: shortServerId: 1 lifetime: 300 binding: U required: true responses: '201': description: Bootstrap config created content: application/json: schema: $ref: '#/components/schemas/BootstrapConfig' components: schemas: ObjectSettings: type: object properties: objectInstanceId: type: integer format: int32 description: The instance ID that will be used for this Object. If not specified, the ID is automatically assigned incrementally from 0 for the first Run Server in the list. For the Security Object, the instance used for the Bootstrap Server is avoided (a Discover operation is performed to identify the ID used). maximum: 65534 minimum: 0 Lwm2mSecurity: type: object properties: settings: $ref: '#/components/schemas/ObjectSettings' description: Settings for this Security Object (for example, on which instance to write it) lwm2mServerUri: type: string description: Uniquely identifies the LwM2M Server or LwM2M Bootstrap-Server. Must be set if and only if useLiveObjects is false. example: coaps://myserver:5684 maxLength: 255 minLength: 5 securityMode: type: string description: 'Determines what credentials are being used by the LwM2M Client and the LwM2M Server. Must be set if and only if useLiveObjects is false. Allowed values are : 0 (PSK), 1 (RPK), 2 (CERTIFICATE), 3 (NO_SEC), 4 (CERTIFICATE_WITH_EST).' example: '0' serverPublicKey: type: string description: Stores the LwM2M Server's, respectively LwM2M Bootstrap-Server's, certificate, public key (RPK mode) or trust anchor.The Certificate Mode Resource determines the content of this resource. Must be encoded in hexadecimal. example: 0123456789ABCDEF smsSecurityMode: type: integer format: int32 description: "Determines which SMS security mode is used: \n0: Reserved for future use\n1: DTLS mode (Device terminated) PSK mode assumed\n2: Secure Packet Structure mode (Smartcard terminated)\n3: NoSec mode\n4: Reserved mode (DTLS mode with multiplexing Security Association support)\n5-203 : Reserved for future use\n204-255: Proprietary modes" example: 1 maximum: 255 minimum: 0 lwm2mServerSmsNumber: type: string description: MSISDN used by the LwM2M Client to send messages to the LwM2M Server via the SMS binding. example: '1234' shortServerId: type: integer format: int32 description: This identifier is used only as a link to associate the server/security object instance. Must be between 1 and 65534. maximum: 65534 minimum: 1 clientHoldOffTime: type: integer format: int32 description: The number of seconds to wait before initiating a Client Initiated Bootstrap once the LwM2M Client has determined it should initiate this bootstrap mode example: 30 minimum: 0 bootstrapServerAccountTimeout: type: integer format: int32 description: The LwM2M Client MUST purge the LwM2M Bootstrap-Server Account after the timeout value given by this resource example: 20 minimum: 0 matchingType: type: string description: 'The Matching Type Resource specifies how the certificate or raw public key in in the Server Public Key is presented. Four values are currently defined: 0: Exact match. This is the default value and also corresponds to the functionality of LwM2M v1.0. Hence, if this resource is not present then the content of the Server Public Key Resource corresponds to this value. 1: SHA-256 hash [RFC6234] 2: SHA-384 hash [RFC6234] 3: SHA-512 hash [RFC6234]' example: '0' sni: type: string description: This resource holds the value of the Server Name Indication (SNI) value to be used during the TLS handshake.When this resource is present then the LwM2M Server URI acts as the address of the service while the SNI value is used formatching a presented certificate, or PSK identity. example: myserver certificateUsage: type: string description: "The Certificate Usage Resource specifies the semantic of the certificate or \nraw public key stored in the Server Public Key Resource, which is used to match \nthe certificate presented in the TLS/DTLS handshake. The currently defined values are \n0 for \"CA constraint\", 1 for \"service certificate constraint\", 2 for \"trust anchor \nassertion\", and 3 for \"domain-issued certificate\". When this resource is absent, \nvalue (3) for domain issued certificate mode is assumed. More details about the \nsemantic of each value can be found in the security consideration section of the \nLwM2M specification." example: '0' dtlsTlsCiphersuite: type: array description: When this resource is present it instructs the TLS/DTLS client to propose the indicated ciphersuite(s) in the ClientHello of the handshake. A ciphersuite is indicated as a 32-bit integer value. The IANA TLS ciphersuite registry is maintained at https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml. As an example, the TLS_PSK_WITH_AES_128_CCM_8 ciphersuite is represented with the following string "0xC0,0xA8". To form an integer value the two values are concatenated. In this example, the value is 0xc0a8 or 49320. example: - 49320 items: type: integer format: int64 maximum: 65535 minimum: 0 maxItems: 100 minItems: 1 required: - shortServerId BootstrapWriteOperation: type: object properties: path: type: string description: Path of the write operation. Must target a resource or a resource instance. Can not target /0, /1, /2 and /21 objects. example: /3300/1/5750 value: type: string description: Value of the write operation example: VOC Index required: - path - value BootstrapConfigOperations: type: object properties: externalConfigServer: $ref: '#/components/schemas/ExternalConfigServer' description: Define an external server which will dynamically provide additional write operations on each bootstrap request. objectVersionUrns: type: array description: List of the targeted object version urns. example: - urn:oma:lwm2m:ext:3300:1.1 - urn:oma:lwm2m:ext:36050:1.0 items: type: string maxItems: 100 minItems: 0 writeOperations: type: array description: List of write operations to execute during bootstrap. Write operations will be performed at object level, which means it will replace all existing resources in the targeted object and only include the resources explicitly defined here. items: $ref: '#/components/schemas/BootstrapWriteOperation' maxItems: 100 minItems: 0 ExternalConfigServer: type: object properties: url: type: string description: The url of the target server webhook (only the ports 80, 443, 8080, 8443 and 9243 are allowed). example: https://myserver/lwm2m/bootstrap-request headers: type: object additionalProperties: type: array items: type: string description: Additional custom headers that will be used for the HTTP request example: apiKey: - fhpao4654feae46463Z required: - url BootstrapConfig: type: object properties: id: type: string description: Bootstrap configuration unique identifier example: 61b34a6da51c1b5f84e6a802 name: type: string description: Name of bootstrap configuration example: My bootstrap config description: type: string description: Description of bootstrap configuration example: My description of my bootstrap config runServers: type: array description: List of run servers items: $ref: '#/components/schemas/RunServer' additionalOperations: $ref: '#/components/schemas/BootstrapConfigOperations' description: Write operations on additional objects (other than /0, /1, /2 and /21), optionally defining an external server created: type: string format: date-time description: Date on which the bootstrap config was created example: '2022-10-21T10:30:58Z' updated: type: string format: date-time description: Date on which the bootstrap config was last updated example: '2022-10-25T17:45:02Z' required: - created - id - name - runServers - updated RunServer: type: object properties: id: type: string description: Run server unique identifier. Will be used also in BootstrapEntry. Must respect the following regular expression ^[a-zA-Z0-9]{1,128}$ (max 128 characters). example: server01 pattern: ^[a-zA-Z0-9]{1,128}$ useLiveObjects: type: boolean default: false description: If true, will define specific 'lwm2mDefinition' for LO. If false, need to customize 'lwm2mDefinition' renewSecurityOnBootstrap: type: boolean description: If true, credentials to connect the LiveObjects run server will be generated at each bootstrap. Can only be defined if useLiveObjects is true example: false autoProvisionDeviceOnBootstrap: $ref: '#/components/schemas/AutoProvisioning' description: Defines the 'auto-provisioning device on the runServer' behavior for a bootstrap when the runServer does not previously know the device lwm2mDefinition: $ref: '#/components/schemas/Lwm2mDefinition' description: Lwm2m definition for `LWM2M Security` and `LWM2M Server` objects required: - id - lwm2mDefinition - useLiveObjects Lwm2mServer: type: object properties: settings: $ref: '#/components/schemas/ObjectSettings' description: Settings for this Server Object (for example, on which instance to write it) shortServerId: type: integer format: int32 description: This identifier is used only as a link to associate the server/security object instance. Must be between 1 and 65534. example: 1 maximum: 65534 minimum: 1 lifetime: type: integer format: int32 description: Specify the lifetime of the registration in seconds example: 300 minimum: 0 defaultMinimumPeriod: type: integer format: int32 description: The default value the LwM2M Client should use for the Minimum Period of an Observation in the absence of this parameter being included in an Observation example: 200 minimum: 0 defaultMaximumPeriod: type: integer format: int32 description: The default value the LwM2M Client should use for the Maximum Period of an Observation in the absence of this parameter being included in an Observation example: 20 minimum: 0 disableTimeout: type: integer format: int32 description: A period to disable the Server. After this period, the LwM2M Client MUST perform registration process to the Server example: 0 minimum: 0 notificationStoringWhenDisabledOrOffline: type: boolean description: If true, the LwM2M Client stores 'Notify' operations to the LwM2M Server while the LwM2M Server account is disabled or the LwM2M Client is offline. After the LwM2M Server account is enabled or the LwM2M Client is online, the LwM2M Client reports the stored 'Notify' operations to the Server. If false, the LwM2M Client discards all the 'Notify' operations or temporarily disables the Observe function while the LwM2M Server is disabled or the LwM2M Client is offline example: false binding: type: string description: This Resource defines the transport binding configured for the LwM2M Client. If the LwM2M Client supports the binding specified in this Resource, the LwM2M Client MUST use that transport for the Current Binding Mode. Allowed BindingModes are U, T, S, N (and Q restricted to LwM2M 1.0) example: U maxLength: 10 minLength: 1 apnLink: type: integer format: int32 description: If this resource is defined, it provides a link to the APN connection profile Object Instance (OMNA registered Object ID:11) to be usedto communicate with this server. The instance id must be provided. example: 0 minimum: 0 registrationPriorityOrder: type: integer description: The LwM2M Client sequences the LwM2M Server registrations in increasing order of this value. If this value is not defined,registration attempts to this server are not impacted by other server registrations. Must be 64-bit unsigned integer. example: 0 initialRegistrationDelayTimer: type: integer description: The delay before registration is attempted for this LwM2M Server based upon the completion of registration of the previous LwM2M Server in the registration order. This is only applied until the first successful registration after a successful bootstrapping sequence. Must be 64-bit unsigned integer. example: 0 registrationFailureBlock: type: boolean description: When set to true and registration to this LwM2M server fails, the LwM2M Client blocks registration to other servers in the order.When set to false, the LwM2M Client proceeds with registration to the next server in the order. example: true bootstrapOnRegistrationFailure: type: boolean description: If set to true, this indicates that the LwM2M Client should re-bootstrap when either registration is explicitly rejected by the LwM2M Server or registration is considered as failing as dictated by the other resource settings. If set to false, the LwM2M Client will continue with the registration attempts as dictated by the other resource settings. example: true communicationRetryCount: type: integer description: The number of successive communication attempts before which a communication sequence is considered as failed. Must be 64-bit unsigned integer. example: 0 communicationRetryTimer: type: integer description: The delay between successive communication attempts in a communication sequence. This value is multiplied by two to the power of the communication retry attempt minus one (2**(retry attempt-1)) to create an exponential back-off. Must be 64-bit unsigned integer. example: 0 communicationSequenceDelayTimer: type: integer description: The delay between successive communication sequences. A communication sequence is defined as the exhaustion of the Communication Retry Count and Communication Retry Timer values. A communication sequence can be applied to server registrations or bootstrapping attempts. MAX_VALUE means do not perform another communication sequence. Must be 64-bit unsigned integer. example: 0 communicationSequenceRetryCount: type: integer description: The number of successive communication sequences before which a registration attempt is considered as failed. Must be 64-bit unsigned integer. example: 3 trigger: type: boolean description: Using the Trigger Resource a LwM2M Client can indicate whether it is reachable over SMS (value set to 'true') or not (value set to 'false') example: true preferredTransport: type: string description: Only a single transport binding SHALL be present. When the LwM2M client supports multiple transports, it MAY use this transport to initiate a connection. This resource can also be used to switch between multiple transports e.g. a non-IP device can switch to UDP transport to perform firmware updates. enum: - U - T - S - N - Q example: U muteSend: type: boolean description: "If true or the Resource is not present, the LwM2M Client Send command capability is de-activated. \nIf false, the LwM2M Client Send Command capability is activated." required: - binding - lifetime - shortServerId Lwm2mDefinition: type: object properties: security: $ref: '#/components/schemas/Lwm2mSecurity' description: Lwm2m definition for `LWM2M Security` object (ObjectID=0) server: $ref: '#/components/schemas/Lwm2mServer' description: Lwm2m definition for `LWM2M Server` object (ObjectID=1) required: - security - server AutoProvisioning: type: object properties: enabled: type: boolean description: If true, the LwM2M device will be automatically created or updated in the Device Inventory on bootstrap, based on its Entry definition, even if it has not been provisioned beforehand. Can only be defined if useLiveObjects is true. example: true BootstrapConfigRequest: type: object description: Bootstrap config to create properties: name: type: string description: Name of bootstrap configuration example: My bootstrap config maxLength: 255 minLength: 0 description: type: string description: Description of bootstrap configuration example: My description of my bootstrap config maxLength: 1024 minLength: 0 runServers: type: array description: List of run servers items: $ref: '#/components/schemas/RunServer' maxItems: 1 minItems: 1 additionalOperations: $ref: '#/components/schemas/BootstrapConfigOperations' description: Write operations on additional objects (other than /0, /1, /2 and /21), optionally defining an external server required: - name - runServers securitySchemes: X-API-KEY: type: apiKey name: X-API-KEY in: header OAuth2.0: type: oauth2 flows: authorizationCode: authorizationUrl: https://liveobjects.orange-business.com/api/v1/oauth2/authorize tokenUrl: https://liveobjects.orange-business.com/api/v1/oauth2/token refreshUrl: https://liveobjects.orange-business.com/api/v1/oauth2/token scopes: API_KEY_R: Read parameters and status of an API key. API_KEY_W: Create, modify, disable an API key. BOOTSTRAP_R: Read parameters and status of the LwM2M Bootstrap configurations and entries. BOOTSTRAP_W: Create ans modify LwM2M Bootstrap configurations and entries. BUS_CONFIG_R: Read config parameters of a FIFO queue. BUS_CONFIG_W: Create, modify a FIFO queue. BUS_R: Read data on the Live Objects bus. Minimum permission for the API key of an application collecting data on Live Objects in MQTT(s). BUS_W: Publish data on the Live Objects bus. CAMPAIGN_R: Read parameters and status of a massive deployment campaign on your Device Fleet. CAMPAIGN_W: Create, modify a campaign on your Device Fleet. CONNECTOR_ACCESS: Role to set on a external connector API key to allow only MQTT external connector mode DATA_PROCESSING_R: Read parameters and status of an event processing rule or a Data decoder. DATA_PROCESSING_W: Create, modify, disable an event processing rule or a Data decoder. DATA_R: Read the data collected by the Store Service or search into this data using the Search Service. DATA_W: Insert a data record to the Store Service. Minimum permission required for the API key of a device pushing data to Live Objects in HTTPS. DEVICE_ACCESS: Role to set on a Device API key to allow only MQTT Device mode DEVICE_R: Read parameters and status of a Device management. DEVICE_W: Create, modify, disable a Device management, send command, modify config, update resource of a Device. LOGS_R: Read the logs collected by the Audit Log service. This right allows users to use the Audit Log service as debugging tool. SETTINGS_R: Read the tenant account custom settings. SETTINGS_W: Create, modify tenant account custom settings. USER_R: Read parameters and status of a user. USER_W: Create, modify, disable a user. externalDocs: description: Live Objects Developer Guide url: https://liveobjects.orange-business.com/doc/html/lo_manual_v2.html x-examples: ''