Amazon Location Service · Arazzo Workflow

Amazon Location Service Find or Create Tracker and Report Position

Version 1.0.0

Reuse a tracker if it exists, else create it, then push a position.

1 workflow 1 source API 1 provider
View Spec View on GitHub GeocodingGeofencingLocationMapsRoutingArazzoWorkflows

Provider

amazon-location-service

Workflows

find-or-create-tracker
Ensure a tracker exists and then report a device position to it.
Lists trackers and branches: when the named tracker is already present a device position is reported directly to it; when it is missing the tracker is created first and then seeded with the device position.
4 steps inputs: DeviceId, Latitude, Longitude, PositionFiltering, SampleTime, TrackerName outputs: existingReportErrors, newReportErrors, trackerName
1
listTrackers
List the trackers in the account to detect whether the requested tracker already exists.
2
reportToExisting
Upload the device position to the already-existing tracker.
3
createTracker
Create the tracker because no existing tracker matched the requested name.
4
reportToNew
Seed the newly created tracker with the supplied device position.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Amazon Location Service Find or Create Tracker and Report Position
  summary: Reuse a tracker if it exists, else create it, then push a position.
  description: >-
    An idempotent fleet-onboarding pattern. The workflow lists the trackers in
    the account, branches on whether the requested tracker already exists, and
    in either case ends up uploading a device position update to the tracker.
    When the tracker is missing it is created first. Every step spells out its
    request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: mapsApi
  url: ../openapi/amazon-location-service-maps-api-openapi.yml
  type: openapi
workflows:
- workflowId: find-or-create-tracker
  summary: Ensure a tracker exists and then report a device position to it.
  description: >-
    Lists trackers and branches: when the named tracker is already present a
    device position is reported directly to it; when it is missing the tracker
    is created first and then seeded with the device position.
  inputs:
    type: object
    required:
    - TrackerName
    - DeviceId
    - Longitude
    - Latitude
    - SampleTime
    properties:
      TrackerName:
        type: string
        description: The tracker resource name to find or create.
      PositionFiltering:
        type: string
        description: Position filtering method applied only when creating the tracker.
      DeviceId:
        type: string
        description: The identifier of the device whose position is being uploaded.
      Longitude:
        type: number
        description: The longitude coordinate of the device position.
      Latitude:
        type: number
        description: The latitude coordinate of the device position.
      SampleTime:
        type: string
        description: ISO-8601 timestamp for when the position was sampled.
  steps:
  - stepId: listTrackers
    description: >-
      List the trackers in the account to detect whether the requested tracker
      already exists.
    operationId: ListTrackers
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      entries: $response.body#/Entries
    onSuccess:
    - name: trackerExists
      type: goto
      stepId: reportToExisting
      criteria:
      - context: $response.body
        condition: $.Entries[?(@.TrackerName == '$inputs.TrackerName')]
        type: jsonpath
    - name: trackerMissing
      type: goto
      stepId: createTracker
      criteria:
      - context: $response.body
        condition: $.Entries[?(@.TrackerName == '$inputs.TrackerName')].length == 0
        type: jsonpath
  - stepId: reportToExisting
    description: >-
      Upload the device position to the already-existing tracker.
    operationId: BatchUpdateDevicePosition
    parameters:
    - name: TrackerName
      in: path
      value: $inputs.TrackerName
    requestBody:
      contentType: application/json
      payload:
        Updates:
        - DeviceId: $inputs.DeviceId
          Position:
          - $inputs.Longitude
          - $inputs.Latitude
          SampleTime: $inputs.SampleTime
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      errors: $response.body#/Errors
    onSuccess:
    - name: reported
      type: end
  - stepId: createTracker
    description: >-
      Create the tracker because no existing tracker matched the requested name.
    operationId: CreateTracker
    requestBody:
      contentType: application/json
      payload:
        TrackerName: $inputs.TrackerName
        PositionFiltering: $inputs.PositionFiltering
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      trackerName: $response.body#/TrackerName
      trackerArn: $response.body#/TrackerArn
  - stepId: reportToNew
    description: >-
      Seed the newly created tracker with the supplied device position.
    operationId: BatchUpdateDevicePosition
    parameters:
    - name: TrackerName
      in: path
      value: $steps.createTracker.outputs.trackerName
    requestBody:
      contentType: application/json
      payload:
        Updates:
        - DeviceId: $inputs.DeviceId
          Position:
          - $inputs.Longitude
          - $inputs.Latitude
          SampleTime: $inputs.SampleTime
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      errors: $response.body#/Errors
  outputs:
    trackerName: $steps.createTracker.outputs.trackerName
    existingReportErrors: $steps.reportToExisting.outputs.errors
    newReportErrors: $steps.reportToNew.outputs.errors

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/amazon-location-service-find-or-create-tracker-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.