WeFitter profile API

Profiles are containers for wearables data. The profiles can be seen as an extension of users in a different system. Profiles are anonymous objects which can participate in teams and challenges. Keep in mind, listing profiles and creating profiles need an administrative bearer token, all profile specific actions need a seperate bearer token that is returned after creating a profile. This bearer token is used in place of the administrative bearer token. (see profile create action for more information)

OpenAPI Specification

wefitter-profile-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: WeFitter app profile API
  description: This is the WeFitter API
  termsOfService: https://www.wefitter.com/privacy/
  contact:
    email: hello@wefitter.com
  license:
    name: BSD License
  version: v1.3
host: api.wefitter.com
basePath: /api/v1.3
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- BearerProfile: []
tags:
- name: profile
  description: '

    Profiles are containers for wearables data.

    The profiles can be seen as an extension of users in a different system.

    Profiles are anonymous objects which can participate in teams and challenges.


    Keep in mind, listing profiles and creating profiles need an administrative bearer token, all profile specific actions

    need a seperate bearer token that is returned after creating a profile. This bearer token is used in place of the

    administrative bearer token. (see profile create action for more information)

    '
paths:
  /profile/:
    parameters: []
    get:
      operationId: profile_list
      summary: List Profiles
      description: Lists all available profiles
      parameters:
      - name: search
        in: query
        description: A search term.
        required: false
        type: string
      - name: ordering
        in: query
        description: Which field to use when ordering the results.
        required: false
        type: string
      - name: limit
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: offset
        in: query
        description: The initial index from which to return the results.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ProfileList'
      tags:
      - profile
      security:
      - BearerAdmin: []
      - BearerProfile: []
      deprecated: false
    post:
      operationId: profile_create
      summary: Create Profile
      description: '

        Creates a new profile.

        The bearer field contains a profile bearer token. When this is used in the Authorization header actions are performed

        as that profile, which will also enable access to private data.

        Using a profile bearer token disables administrative features such as creating profiles, making this token safe

        for ''public'' use.

        A profile bearer token has no expiration, so it remains valid as long as the profile is active.

        '
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ProfileCreated'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ProfileCreated'
      tags:
      - profile
      security:
      - BearerAdmin: []
      deprecated: false
  /profile/{profile_public_id}/activity_file/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_activity_file_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - profile
  /profile/{profile_public_id}/activity_file/{activity_id}:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    - name: activity_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_activity_file_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - profile
  /profile/{profile_public_id}/activity_segment/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_activity_segment_list
      summary: Activity segment
      description: Lists segments of activities and small non-workout-like movements.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Activity'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/biometric/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_biometric_list
      summary: Bio Metric
      description: Lists changes in weight, height and bmi for the profile.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/BioMetric'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/biometric_measurement/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_biometric_measurement_list
      summary: Biometric Measurement
      description: List changes in biometric measurements for the profile.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: measurement_type
        in: query
        required: true
        type: string
        enum:
        - BLOOD_PRESSURE
        - BODY_FAT
        - BODY_FAT_MASS
        - GLUCOSE
        - SYSTOLIC_BP
        - DIASTOLIC_BP
        - PULSE_BP
        - TEMPERATURE
        - BLOOD_OXYGEN
        - HRV
        - VO2_MAX
        - METABOLIC_AGE
        - VASCULAR_AGE
        - VISCERAL_FAT
        - BODY_TEMPERATURE
        - SKIN_TEMPERATURE
        - BONE_MASS
        - MUSCLE_MASS
        - HYDRATION
        - BMR
        - FAT_RATIO
        - SPO2
        - OTHER
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/BiometricMeasurement'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/bmi/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_bmi_list
      summary: BMI
      description: Presents the Body-Mass-Index over time.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/BMI'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/daily_detail/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_daily_detail_list
      summary: Daily details
      description: Intraday data measured at a single point in time.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/DailyDetail'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/daily_summary/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_daily_summary_list
      summary: Daily Summary
      description: Provides summarized data per day.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: deduplicate
        in: query
        description: If set to true, duplicates will be aggregated.
        required: false
        type: boolean
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/DailySummary'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/detail_sample/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_detail_sample_list
      summary: Detail Sample
      description: Presents detail samples.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/DetailSample'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/ecg_recordings/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_ecg_recordings_list
      summary: Electrocardiograms
      description: '

        This endpoint returns a list of ECG recordings.

        '
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/ECGRecordings'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/ecg_recordings/data/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_ecg_recordings_data_list
      summary: Electrocardiogram data
      description: '

        This endpoint returns an ECG recording with data as an array of tuples `[(time, value)]`.

        Set the argument `date_end` to request a specific recording or leave it empty to receive the latest recording.

        '
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/ECGRecording'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/ecg_recordings/pdf/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_ecg_recordings_pdf_list
      summary: Electrocardiogram PDF
      description: Returns a PDF with generated ECG charts from a specific source and time. Contact api-support@wefitter.com to gain access.
      parameters:
      - name: datetime
        in: query
        description: The timestamp when the ECG has been recorded in the format `yyyymmddhhmmss`. e.g. `20210913132513`
        required: true
        type: string
        format: date-time
      - name: source
        in: query
        required: true
        type: string
        enum:
        - NONE
        - AGGREGATED
        - ANDROID
        - APPLE
        - FITBIT
        - GARMIN
        - GOOGLE_HEALTH
        - GOOGLEFIT
        - HEALTHCONNECT
        - HUAWEI
        - MYZONE
        - OMH
        - OMRON
        - OURA
        - POLAR
        - SAMSUNG
        - STRAVA
        - SUUNTO
        - WF
        - WHOOP
        - WITHINGS
      responses:
        '200':
          description: ''
      tags:
      - profile
      security:
      - BearerProfile: []
      deprecated: false
  /profile/{profile_public_id}/event/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_event_list
      summary: Event
      description: Lists events, generic actions for which points have been awarded.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Event'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
    post:
      operationId: profile_event_create
      summary: Create Event
      description: Create a new event for the profile.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Event'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Event'
      tags:
      - profile
      security:
      - BearerAdmin: []
      deprecated: false
  /profile/{profile_public_id}/heartrate_sample/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_heartrate_sample_list
      summary: Heart Rate Sample
      description: Heart Rate measured at a single point in time.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: heart_rate_detail
        in: query
        description: If set to true it will add heart_rate_samples field
        required: false
        type: boolean
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/HeartRateSample'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/heartrate_summary/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_heartrate_summary_list
      summary: Heart Rate Summary
      description: Presents heart rate information.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/HeartRateSummary'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/height/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_height_list
      summary: Height
      description: Lists changes in height for the profile.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Height'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/sleep_detail/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_sleep_detail_list
      summary: Sleep detail
      description: Provides sleep detail data.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/SleepDetail'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/sleep_sample/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_sleep_sample_list
      summary: Sleep Sample
      description: 'Presents sample data for sleep: hrv, movement, heart_rate and sleep_stages,'
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/SleepSample'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/sleep_summary/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_sleep_summary_list
      summary: Sleep Summary
      description: Provides summarized sleep data.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: detail
        in: query
        description: If set to true and only 1 result is returned, it will add a detail field
        required: false
        type: boolean
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/SleepSummary'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/stress_samples/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_stress_samples_list
      summary: Stress Sample
      description: Presents stress samples.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/StressSample'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/stress_summary/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_stress_summary_list
      summary: Stress Summary
      description: Presents stress summaries.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/StressSummary'
          headers:
            api-results-next:
              description: Next page.
              type: string
            api-results-previous:
              description: Previous page.
              type: string
      tags:
      - profile
      deprecated: false
  /profile/{profile_public_id}/track_sample/:
    parameters:
    - name: profile_public_id
      in: path
      required: true
      type: string
    get:
      operationId: profile_track_sample_list
      summary: Track Sample
      description: Presents GPX track samples.
      parameters:
      - name: cursor
        in: query
        description: The pagination cursor value.
        required: false
        type: string
      - name: page_size
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      - name: date_start
        in: query
        description: Lower bound of date or timestamp.
        required: false
        type: string
        format: date-time
      - name: date_end
        in: query
        description: Upper bound of date or timestamp.
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: ''
          schema:
            type: array
     

# --- truncated at 32 KB (82 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wefitter/refs/heads/main/openapi/wefitter-profile-api-openapi.yml