emnify · Arazzo Workflow

emnify Reset Endpoint Connectivity When Blocked

Version 1.0.0

Authenticate, read connectivity status, then reset connectivity only when the device is stuck.

1 workflow 1 source API 1 provider
View Spec View on GitHub IoTInternet of ThingsCellular ConnectivityIoT SIMeSIMConsumer eSIMSGP.32M2MNTN-IoTSatelliteSuperNetworkArazzoWorkflows

Provider

emnify

Workflows

reset-endpoint-connectivity-when-blocked
Reset an endpoint's connectivity when it is OFFLINE or BLOCKED.
Authenticates, reads connectivity status, and dispatches a connectivity reset only when the device is not online.
3 steps inputs: applicationToken, endpointId outputs: connectivityStatus, resetEndpointId
1
authenticate
authenticate
Exchange the application token for an auth_token used as a Bearer token.
2
getConnectivity
endpoint-connectivity-by-id-get
Read the endpoint's current connectivity status to decide whether to reset.
3
resetConnectivity
update-endpoint-connectivity-by-id
Dispatch a connectivity reset that cancels the location and deletes the PDP context to force a fresh network attach.

Source API Descriptions

Arazzo Workflow Specification

emnify-reset-endpoint-connectivity-when-blocked-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: emnify Reset Endpoint Connectivity When Blocked
  summary: Authenticate, read connectivity status, then reset connectivity only when the device is stuck.
  description: >-
    A remediation flow for a device that cannot get back online. The workflow
    authenticates, reads the endpoint's connectivity status, and branches: when
    the device is OFFLINE or BLOCKED it dispatches a connectivity reset (cancel
    location and delete PDP context) to force a fresh network attach; when the
    device is already ATTACHED or ONLINE it ends without acting. Every step
    spells out its request inline, including the Bearer Authorization header
    threaded from the authenticate step.
  version: 1.0.0
sourceDescriptions:
- name: emnifyApi
  url: ../openapi/emnify-api-openapi.yml
  type: openapi
workflows:
- workflowId: reset-endpoint-connectivity-when-blocked
  summary: Reset an endpoint's connectivity when it is OFFLINE or BLOCKED.
  description: >-
    Authenticates, reads connectivity status, and dispatches a connectivity
    reset only when the device is not online.
  inputs:
    type: object
    required:
    - applicationToken
    - endpointId
    properties:
      applicationToken:
        type: string
        description: emnify application token used to obtain an auth_token.
      endpointId:
        type: string
        description: The ID of the endpoint to evaluate and reset.
  steps:
  - stepId: authenticate
    description: Exchange the application token for an auth_token used as a Bearer token.
    operationId: authenticate
    requestBody:
      contentType: application/json
      payload:
        application_token: $inputs.applicationToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      authToken: $response.body#/auth_token
  - stepId: getConnectivity
    description: Read the endpoint's current connectivity status to decide whether to reset.
    operationId: endpoint-connectivity-by-id-get
    parameters:
    - name: endpoint_id
      in: path
      value: $inputs.endpointId
    - name: Authorization
      in: header
      value: Bearer $steps.authenticate.outputs.authToken
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      connectivityStatus: $response.body#/status
    onSuccess:
    - name: deviceStuck
      type: goto
      stepId: resetConnectivity
      criteria:
      - context: $response.body
        condition: $.status.description == "BLOCKED" || $.status.description == "OFFLINE"
        type: jsonpath
    - name: deviceOnline
      type: end
      criteria:
      - context: $response.body
        condition: $.status.description == "ONLINE" || $.status.description == "ATTACHED"
        type: jsonpath
  - stepId: resetConnectivity
    description: >-
      Dispatch a connectivity reset that cancels the location and deletes the
      PDP context to force a fresh network attach.
    operationId: update-endpoint-connectivity-by-id
    parameters:
    - name: endpoint_id
      in: path
      value: $inputs.endpointId
    - name: Authorization
      in: header
      value: Bearer $steps.authenticate.outputs.authToken
    requestBody:
      contentType: application/json
      payload:
        pdp_context: true
        location: true
    successCriteria:
    - condition: $statusCode == 204
    outputs:
      resetEndpointId: $inputs.endpointId
  outputs:
    connectivityStatus: $steps.getConnectivity.outputs.connectivityStatus
    resetEndpointId: $steps.resetConnectivity.outputs.resetEndpointId