openapi: 3.1.0
info:
  title: CrankWheel RESTful API
  version: 1.0.0
  description: >-
    The CrankWheel RESTful API allows you to retrieve usage history in various
    forms, manage your users, update your account configuration, and generate or
    retrieve session and embedding links of several types.


    Start by logging into your CrankWheel account as an administrator, and
    retrieve either a read-only API key or a read/write API key using the API
    tab.


    With the read-only API key, you can perform actions on many of the
    Crankwheel API as per the examples here, although for several you need a
    read/write key.
servers:
  - url: '{{server-url}}'
paths:
  /ss/api/demo_usage:
    get:
      summary: Retrieve demo request history
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Retrieve demo request history
          headers:
            Connection:
              schema:
                type: string
              example: keep-alive
            Content-Encoding:
              schema:
                type: string
              example: gzip
            Date:
              schema:
                type: string
              example: Thu, 28 Sep 2017 12:21:19 GMT
            Server:
              schema:
                type: string
              example: nginx
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
            Transfer-Encoding:
              schema:
                type: string
              example: chunked
            Vary:
              schema:
                type: string
              example: Accept-Encoding
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: cldv9ea60fd36mc2t6no77sqbqig0pf9
          content:
            application/json:
              schema:
                type: object
                properties:
                  total_canceled_requests:
                    type: integer
                  sessions:
                    type: array
                    items:
                      type: object
                      properties:
                        start_ts:
                          type: string
                          format: style
                        seconds_to_respond:
                          type: integer
                        screenshared:
                          type: boolean
                        prospect_info:
                          type: object
                          properties:
                            prospect-request-origin:
                              type: string
                            prospect-phone:
                              type: string
                              format: phone
                            prospect-name:
                              type: string
                            prospect-location:
                              type: string
                            prospect-email:
                              type: string
                              format: email
                        last_event_ts:
                          type: string
                          format: style
                        id:
                          type: integer
                        handled_by:
                          type: string
                          format: email
                        call_confirmed:
                          type: boolean
                        availability_bucket:
                          type: string
                        accepted_from:
                          type: string
              example:
                total_canceled_requests: 2
                sessions:
                  - start_ts: '2017-09-27T22:49:21.507365'
                    seconds_to_respond: 53
                    screenshared: true
                    prospect_info:
                      prospect-request-origin: crankwheel.com/
                      prospect-phone: +354 54321
                      prospect-name: Jói
                      prospect-location: Kopavogur, Iceland
                      prospect-email: joi@crankwheel.com
                    last_event_ts: '2017-09-27T22:51:00.875003'
                    id: 22599
                    handled_by: somebody@example.com
                    call_confirmed: true
                    availability_bucket: half_capacity
                    accepted_from: extension
                  - start_ts: '2017-09-27T16:19:59.273625'
                    seconds_to_respond: never
                    screenshared: n/a
                    prospect_info:
                      prospect-website: ''
                      prospect-request-origin: crankwheel.com/
                      prospect-phone: +354 54321
                      prospect-name: ''
                      prospect-location: Iceland
                      prospect-job-title: ''
                      prospect-email: ''
                      prospect-company: ''
                    last_event_ts: '2017-09-27T16:20:11.594782'
                    id: 22487
                    handled_by: none
                    call_confirmed: n/a
                    availability_bucket: full_capacity
                    accepted_from: n/a
      tags:
        - Usage history
      description: >-
        This API endpoint allows you to retrieve a history of demo requests made
        to your account in a given time period.


        ## Request


        Note the to= and from= query parameters, which are timestamps. If they
        are not given, the last 28 days of history will be retrieved.


        For authentication, set your own API key in your environment or paste it
        instead of {{crankwheel-api-key}} in the value for the Authorization
        header under the Headers tab.


        ## Response


        The response is a JSON document.


        The top level shows the number of cancelled demo requests during the
        period as `total_canceled_requests`.


        It also has a list indexed as `sessions`.


        Each session in the list shows:


        - `start_ts`: The timestamp of the start of the session

        - `last_event_ts`: The timestamp of the last event received during the
        session, i.e. roughly when the session ended

        - `availability_bucket`: Which bucket of availability the CrankWheel
        system believed it was in. Values can be `full_capacity` if it believed
        that more than 50% of agents were available to do a demo,
        `half_capacity` if it believed that 50% or fewer were available, and
        `no_capacity` if it believed no agents were available. Availability is
        determined based on whether an agent has been active at their computer
        in the last 10 minutes, and also based on whether they are already
        screen sharing using CrankWheel.

        - `seconds_to_respond`How many seconds it took to respond to the
        request, i.e. until an agent said they would handle it. If no agent
        handled the request (yet), the value will be `never`.

        - `handled_by` will be present if an agent handled the request and will
        show the agent's email address.

        - `call_confirmed`: Whether a call was confirmed. Values can be `true`,
        `false` or if the request was never responded to, `n/a`.

        - `screenshared`: Whether a screenshare was initiated after the call
        commenced. Values can be `true`, `false` or if a call was never
        initiated, `n/a`. Note that these screen shares are also listed by the
        "Retrieve usage history" API (although it makes no mention that they
        were due to an Instant Demos request).

        - `accepted_from` shows a value of `extension`, `email` or `n/a`.


        Lastly, the session contains a `prospect_info` object.


        The fixed `prospect_info` keys are:


        - `prospect-phone`: The phone number entered by the prospect.

        - `prospect-request-origin`: The web page the request originated on. If
        originated from an email campaign, it will look like
        [<code>https://meeting.is/ss/showu/COMPANYSHORTNAME</code>](https://meeting.is/ss/showu/COMPANYSHORTNAME),
        possibly with parameters after the company's short name.

        - `prospect-utm-source`, `prospect-utm-medium`, `prospect-utm-campaign`,
        `prospect-utm-term` and `prospect-utm-content`: These reflect UTM
        parameters if they were present on the web page where the prospect
        requested a demo.

        - `prospect-location`: Geographic location of the prospect as determined
        by their IP address.


        In addition, each lead capture question gets a key. Here is the default
        set, but keys for custom questions will inherit the name assigned to the
        question when it is created, e.g. `prospect-shoesize` for a question
        where you set the ID as `shoesize`:


        - `prospect-name`: The prospect's name as entered by themselves.

        - `prospect-email`: The prospect's email address as entered by
        themselves.

        - `prospect-company`: The prospect's company name as entered by
        themselves.

        - `prospect-job-title`: The prospect's title as entered by themselves.

        - `prospect-website`: The prospect's company's web page as entered by
        themselves.
  /ss/api/usage:
    get:
      summary: Older API - retrieve usage history
      parameters:
        - name: from
          in: query
          schema:
            type: string
          example: '2020-09-01T00:00:00Z'
        - name: to
          in: query
          schema:
            type: string
          example: '2020-09-28T23:59:59Z'
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses: {}
      tags:
        - Usage history
      description: >-
        This retrieves screen sharing usage history from your CrankWheel account
        (screen shares only). It includes both stand-alone screen shares as well
        as screen shares that may have resulted from an Instant Demos request.


        Note the to= and from= query parameters which are timestamps. If they
        are not given, the last 28 days of history will be retrieved.


        For authentication, set your own API key in your environment or paste it
        instead of {{crankwheel-api-key}} in the value for the Authorization
        header under the Headers tab.
  /ss/api/usage_new:
    get:
      summary: New retrieve usage history
      parameters:
        - name: from
          in: query
          schema:
            type: string
          example: '2020-11-23T00:00:00Z'
        - name: to
          in: query
          schema:
            type: string
          example: '2024-11-23T23:59:59Z'
        - name: include_all_users
          in: query
          description: >-
            Optional, defaults to false. If true, show all users including those
            with 0 usage.
          schema:
            type: boolean
          example: true
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: New retrieve usage history
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.17.10
            Date:
              schema:
                type: string
              example: Fri, 09 Oct 2020 13:55:39 GMT
            Content-Length:
              schema:
                type: integer
              example: 25260
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: 7bu49vcf55lj7e78eb0ufgvhfjqmpbo1
          content:
            application/json:
              schema:
                type: object
                properties:
                  stats:
                    type: object
                    properties:
                      user_stats:
                        type: array
                        items:
                          type: object
                          properties:
                            joi+admin@crankwheel.com:
                              type: object
                              properties:
                                total_sec:
                                  type: integer
                                total_count:
                                  type: integer
                      total_sec:
                        type: integer
                      total_count:
                        type: integer
                  sessions:
                    type: array
                    items:
                      type: object
                      properties:
                        viewer_info:
                          type: object
                          properties:
                            max_viewer_count:
                              type: integer
                        start_date:
                          type: string
                          format: date-time
                        logs:
                          type: array
                        end_date:
                          type: string
                          format: date-time
                        email:
                          type: string
                          format: email
                        duration:
                          type: integer
              example:
                stats:
                  user_stats:
                    - joi+admin@crankwheel.com:
                        total_sec: 10333
                        total_count: 138
                  total_sec: 10333
                  total_count: 138
                sessions:
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:25:08.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:27:53.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 165
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:23:42.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:24:09.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 27
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:22:38.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:23:28.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 50
                  - viewer_info:
                      max_viewer_count: 10
                    start_date: '2020-09-25T15:19:31.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:19:53.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:13:37.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:13:42.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 5
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:06:52.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:07:43.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 51
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T15:06:00.000000Z'
                    logs: []
                    end_date: '2020-09-25T15:06:51.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 51
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:18:06.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:18:54.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 48
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:14:38.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:15:24.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 46
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:11:55.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:12:20.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 25
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:10:08.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:10:30.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:04:05.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:04:27.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:01:22.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:01:44.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T14:00:43.000000Z'
                    logs: []
                    end_date: '2020-09-25T14:00:59.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 16
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:58:21.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:59:30.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 69
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:54:24.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:55:09.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 45
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:50:06.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:50:28.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:49:42.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:49:49.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 7
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:40:30.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:45:39.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 309
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:26:41.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:28:37.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 116
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:20:45.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:24:54.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 249
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:14:18.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:14:43.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 25
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:13:21.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:13:30.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 9
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:07:14.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:07:29.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 15
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-25T13:06:15.000000Z'
                    logs: []
                    end_date: '2020-09-25T13:06:27.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 12
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T20:14:33.000000Z'
                    logs: []
                    end_date: '2020-09-23T20:14:40.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 7
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T14:33:36.000000Z'
                    logs: []
                    end_date: '2020-09-23T14:33:38.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 2
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:52:06.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:55:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 184
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:51:03.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:51:37.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 34
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:47:27.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:48:39.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 72
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:45:24.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:46:20.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 56
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:44:47.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:45:09.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:44:29.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:44:36.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 7
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:43:04.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:44:14.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 70
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:35:34.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:37:16.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 102
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:33:36.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:35:01.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 85
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:29:49.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:31:04.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 75
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:25:43.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:26:07.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 24
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T13:17:28.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:17:45.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 17
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T12:59:18.000000Z'
                    logs: []
                    end_date: '2020-09-23T13:00:21.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 63
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:27:55.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:29:01.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 66
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:25:48.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:26:32.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 44
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:16:33.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:23:42.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 429
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:12:17.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:14:00.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 103
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:11:35.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:11:48.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-23T11:08:35.000000Z'
                    logs: []
                    end_date: '2020-09-23T11:11:18.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 163
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T12:16:07.000000Z'
                    logs: []
                    end_date: '2020-09-22T12:16:22.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 15
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T12:13:44.000000Z'
                    logs: []
                    end_date: '2020-09-22T12:13:50.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 6
                  - viewer_info:
                      max_viewer_count: 2
                    start_date: '2020-09-22T11:58:21.000000Z'
                    logs: []
                    end_date: '2020-09-22T11:59:02.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 41
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T11:54:41.000000Z'
                    logs: []
                    end_date: '2020-09-22T11:55:11.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 30
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T11:53:47.000000Z'
                    logs: []
                    end_date: '2020-09-22T11:54:21.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 34
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T11:52:44.000000Z'
                    logs: []
                    end_date: '2020-09-22T11:53:46.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 62
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-22T11:49:00.000000Z'
                    logs: []
                    end_date: '2020-09-22T11:50:26.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 86
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-18T11:20:31.000000Z'
                    logs: []
                    end_date: '2020-09-18T11:20:39.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 8
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-18T11:20:01.000000Z'
                    logs: []
                    end_date: '2020-09-18T11:20:05.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 4
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-16T11:04:35.000000Z'
                    logs: []
                    end_date: '2020-09-16T11:05:28.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 53
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-15T10:27:49.000000Z'
                    logs: []
                    end_date: '2020-09-15T10:29:49.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 120
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-14T11:29:02.000000Z'
                    logs: []
                    end_date: '2020-09-14T11:29:19.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 17
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-11T14:24:55.000000Z'
                    logs: []
                    end_date: '2020-09-11T14:24:58.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 3
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-11T13:50:11.000000Z'
                    logs: []
                    end_date: '2020-09-11T13:50:18.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 7
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-10T17:41:49.000000Z'
                    logs: []
                    end_date: '2020-09-10T17:41:53.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 4
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-09T20:29:34.000000Z'
                    logs: []
                    end_date: '2020-09-09T20:29:37.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 3
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-09T20:28:07.000000Z'
                    logs: []
                    end_date: '2020-09-09T20:28:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 1
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-09T15:32:07.000000Z'
                    logs: []
                    end_date: '2020-09-09T15:32:18.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 11
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-09T13:20:46.000000Z'
                    logs: []
                    end_date: '2020-09-09T13:26:50.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 364
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-07T13:24:00.000000Z'
                    logs: []
                    end_date: '2020-09-07T13:26:51.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 171
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T14:33:28.000000Z'
                    logs: []
                    end_date: '2020-09-06T14:33:32.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 4
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T14:29:59.000000Z'
                    logs: []
                    end_date: '2020-09-06T14:30:03.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 4
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T13:51:52.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:51:53.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 1
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T13:51:34.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:51:36.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 2
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T13:27:09.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:27:24.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 15
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T13:10:42.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:12:03.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 81
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T13:01:58.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:06:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 250
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:57:06.000000Z'
                    logs: []
                    end_date: '2020-09-06T13:01:39.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 273
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:44:04.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:54:56.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 652
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:40:40.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:43:36.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 176
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:39:19.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:40:28.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 69
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:37:03.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:37:37.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 34
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:34:44.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:36:20.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 96
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:27:25.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:27:41.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 16
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:25:46.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:25:59.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-06T12:25:04.000000Z'
                    logs: []
                    end_date: '2020-09-06T12:25:16.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 12
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T17:20:41.000000Z'
                    logs: []
                    end_date: '2020-09-04T17:21:11.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 30
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T17:19:23.000000Z'
                    logs: []
                    end_date: '2020-09-04T17:20:26.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 63
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:59:43.000000Z'
                    logs: []
                    end_date: '2020-09-04T17:01:34.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 111
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:58:06.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:58:17.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 11
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:56:37.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:56:48.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 11
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:55:33.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:55:45.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 12
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:53:48.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:53:59.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 11
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:52:18.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:52:33.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 15
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:06:32.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:20:32.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 840
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:04:41.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:05:52.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 71
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:01:42.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:02:47.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 65
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T16:00:11.000000Z'
                    logs: []
                    end_date: '2020-09-04T16:01:32.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 81
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:59:47.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:59:59.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 12
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:59:04.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:59:28.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 24
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:52:49.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:53:42.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 53
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:52:13.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:52:26.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:47:49.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:48:02.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:45:52.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:46:07.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 15
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:45:31.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:45:38.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 7
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:45:00.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:45:05.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 5
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T15:36:43.000000Z'
                    logs: []
                    end_date: '2020-09-04T15:40:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 205
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T14:49:57.000000Z'
                    logs: []
                    end_date: '2020-09-04T14:50:43.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 46
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T14:49:04.000000Z'
                    logs: []
                    end_date: '2020-09-04T14:49:40.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 36
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T14:48:28.000000Z'
                    logs: []
                    end_date: '2020-09-04T14:48:41.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T14:47:31.000000Z'
                    logs: []
                    end_date: '2020-09-04T14:48:01.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 30
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T14:45:34.000000Z'
                    logs: []
                    end_date: '2020-09-04T14:46:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 36
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-04T11:19:00.000000Z'
                    logs: []
                    end_date: '2020-09-04T11:19:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 8
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T15:04:47.000000Z'
                    logs: []
                    end_date: '2020-09-03T15:07:54.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 187
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:53:07.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:53:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 1
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:44:30.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:44:33.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 3
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:42:56.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:43:00.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 4
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:29:02.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:29:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 8
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:21:25.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:28:34.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 429
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:17:48.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:19:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 82
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:14:05.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:15:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 65
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T14:07:23.000000Z'
                    logs: []
                    end_date: '2020-09-03T14:08:13.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 50
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:49:35.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:49:48.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 13
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:47:27.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:49:22.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 115
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:45:49.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:46:08.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 19
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:40:41.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:40:53.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 12
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:34:43.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:36:09.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 86
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:29:17.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:34:34.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 317
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:24:31.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:24:48.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 17
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:22:59.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:24:13.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 74
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:18:16.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:20:15.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 119
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:17:08.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:18:04.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 56
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T11:09:24.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:12:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 166
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T10:56:12.000000Z'
                    logs: []
                    end_date: '2020-09-03T11:03:25.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 433
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T10:52:46.000000Z'
                    logs: []
                    end_date: '2020-09-03T10:55:30.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 164
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T10:21:17.000000Z'
                    logs: []
                    end_date: '2020-09-03T10:22:46.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 89
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T10:20:32.000000Z'
                    logs: []
                    end_date: '2020-09-03T10:21:01.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 29
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-03T10:19:13.000000Z'
                    logs: []
                    end_date: '2020-09-03T10:20:15.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 62
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-01T17:01:04.000000Z'
                    logs: []
                    end_date: '2020-09-01T17:01:05.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 1
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-01T16:52:02.000000Z'
                    logs: []
                    end_date: '2020-09-01T16:52:27.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 25
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-01T10:10:48.000000Z'
                    logs: []
                    end_date: '2020-09-01T10:11:10.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
                  - viewer_info:
                      max_viewer_count: 1
                    start_date: '2020-09-01T10:10:43.000000Z'
                    logs: []
                    end_date: '2020-09-01T10:11:05.000000Z'
                    email: joi+admin@crankwheel.com
                    duration: 22
      tags:
        - Usage history
      description: >-
        This retrieves screen sharing usage history from your CrankWheel account
        (screen shares only). It includes both stand-alone screen shares as well
        as screen shares that may have resulted from an Instant Demos request.


        Note the to= and from= query parameters which are timestamps. If they
        are not given, the last 28 days of history will be retrieved.


        For authentication, set your own API key in your environment or paste it
        instead of {{crankwheel-api-key}} in the value for the Authorization
        header under the Headers tab.
  /ss/api/usage_shares:
    get:
      summary: Video usage history
      parameters:
        - name: from
          in: query
          schema:
            type: string
          example: '2020-11-23T00:00:00Z'
        - name: to
          in: query
          schema:
            type: string
          example: '2024-11-23T23:59:59Z'
        - name: include_all_users
          in: query
          description: >-
            Optional, defaults to false. If true, show all users including those
            with 0 usage.
          schema:
            type: boolean
          example: true
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Video usage history
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.25.1
            Date:
              schema:
                type: string
              example: Fri, 24 May 2024 14:07:32 GMT
            Content-Length:
              schema:
                type: integer
              example: 1175
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: F9I07I3--7GQ1WkAARwD
          content:
            application/json:
              schema:
                type: object
                properties:
                  from:
                    type: string
                    format: date-time
                  include_all_users:
                    type: boolean
                  stats:
                    type: object
                    properties:
                      by_user:
                        type: array
                        items:
                          type: object
                          properties:
                            email:
                              type: string
                              format: email
                            name:
                              type: string
                            plays_count:
                              type: integer
                            shares_count:
                              type: integer
                      total_plays:
                        type: integer
                      total_shares:
                        type: integer
                  to:
                    type: string
                    format: date-time
              example:
                from: '2020-11-23T00:00:00Z'
                include_all_users: false
                stats:
                  by_user:
                    - email: example1@crankwheel.com
                      name: Example Oneson
                      plays_count: 617
                      shares_count: 253
                    - email: example2@crankwheel.com
                      name: Example Twomund
                      plays_count: 609
                      shares_count: 59
                  total_plays: 1226
                  total_shares: 312
                to: '2024-11-23T23:59:59Z'
      tags:
        - Usage history
      description: >-
        This retrieves video sharing usage history from your CrankWheel account
        (video shares only). It shows the number of new shares created in the
        specified period, and the number of times any shares created by the user
        (created in or outside the specified period) were played back in the
        given period.


        Note the **to** and **from** query parameters which are timestamps.


        The **include_all_users** query parameter is optional, defaults to
        **false**. When set to **true**, all registered users will be included
        in the usage report, even those with zero usage.


        For authentication, set your own API key in your environment or paste it
        instead of {{crankwheel-api-key}} in the value for the Authorization
        header under the Headers tab.
  /ss/api/user_access:
    get:
      summary: List company users
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: List company users
          headers:
            Connection:
              description: Options that are desired for the connection
              schema:
                type: string
              example: keep-alive
            Content-Encoding:
              description: The type of encoding used on the data.
              schema:
                type: string
              example: gzip
            Date:
              description: The date and time that the message was sent
              schema:
                type: string
              example: Fri, 16 Mar 2018 13:25:28 GMT
            Server:
              description: A name for the server
              schema:
                type: string
              example: nginx
            Strict-Transport-Security:
              description: >-
                A HSTS Policy informing the HTTP client how long to cache the
                HTTPS only policy and whether this applies to subdomains.
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
            Transfer-Encoding:
              description: >-
                The form of encoding used to safely transfer the entity to the
                user. Currently defined methods are: chunked, compress, deflate,
                gzip, identity.
              schema:
                type: string
              example: chunked
            Vary:
              description: >-
                Tells downstream proxies how to match future request headers to
                decide whether the cached response can be used rather than
                requesting a fresh one from the origin server.
              schema:
                type: string
              example: Accept-Encoding
            cache-control:
              description: >-
                Tells all caching mechanisms from server to client whether they
                may cache this object. It is measured in seconds
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              description: Custom header
              schema:
                type: string
              example: 1kgr59gach0qcppt06bod32l3ugenp0n
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    privilege:
                      type: string
                    in_demo_pool:
                      type: 'null'
                    email:
                      type: string
                      format: email
              example:
                - privilege: owner
                  in_demo_pool: null
                  email: joi@crankwheel.com
                - privilege: admin
                  in_demo_pool: true
                  email: jane@crankwheel.com
                - privilege: user
                  in_demo_pool: false
                  email: john@crankwheel.com
      tags:
        - User management
      description: >-
        Retrieve a full list of all users in your company account. For each
        user, their email address, privilege level and whether they are in your
        pool of users handling demo requests is shown.


        Possible values for **privilege** are:

        * **user** (a normal user of the system)

        * **admin** (a user who can invite others, change configuration of the
        company account, and more)

        * **owner** (an admin who is also the billing contact for the company)

        * **reporting** (a non-admin who has access to reporting functionality
        only)


        Possible values for **in_demo_pool** are **true**, **false** and
        **null** which should be considered the same as **false**.


        The users' email address is shown in the **email** attribute.
    post:
      summary: Create company user
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '201':
          description: Create company user
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Wed, 27 Mar 2019 14:08:40 GMT
            Content-Length:
              schema:
                type: integer
              example: 75
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: fcgfqphsp32bn698477k57hr6hfrao00
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
          content:
            application/json:
              schema:
                type: object
                properties:
                  privilege:
                    type: string
                  in_demo_pool:
                    type: boolean
                  email:
                    type: string
                    format: email
              example:
                privilege: user
                in_demo_pool: true
                email: testaccount3@example.com
        '409':
          description: Create company user, email already taken (409 response)
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Fri, 14 Jun 2019 15:39:13 GMT
            content-length:
              schema:
                type: integer
              example: 47
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: so98nsd03k2gvv34gf82d66e6jr2k52k
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        items:
                          type: string
              example:
                errors:
                  email:
                    - has already been taken
      tags:
        - User management
      description: >-
        Create a single new user in your company account.


        POST with a form-data body with a single parameter **user_access**
        containing as a JSON object the user's **email**, **privilege** and
        **in_demo_pool** attributes as well as a **send_onboarding_email**
        attribute.


        Possible values for **privilege** are:

        * **user** (a normal user of the system)

        * **admin** (a user who can invite others, change configuration of the
        company account, and more)

        * **owner** (an admin who is also the billing contact for the company)

        * **reporting** (a non-admin who has access to reporting functionality
        only)


        Possible values for **in_demo_pool** are **true** and **false**.


        The users' email address is set as the **email** attribute.


        Note that you can also send an application/json body where the
        parameters above are wrapped in an object named **user_access**.


        On a successful create, this endpoint will respond with a 201 Created
        response code, and the body of the response will be JSON showing the
        **email**, **privilege** and **in_demo_pool** attributes of the created
        user.


        Note that "creating" a company user technically just lists their email
        as being allowed to access the company. The actual user account that
        stores their credentials and so on will only get created if they either
        click on the link in the email they receive if you set
        **send_onboarding_email** to **true** and choose a password, or if they
        initiate registration using the same email address and continue through
        to account creation. Feel free to email us at support@crankwheel.com if
        this is confusing.
  /ss/api/user_access/{email}:
    get:
      summary: Show company user
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Show company user
          headers:
            Connection:
              description: Options that are desired for the connection
              schema:
                type: string
              example: keep-alive
            Content-Length:
              description: The length of the response body in octets (8-bit bytes)
              schema:
                type: integer
              example: 77
            Date:
              description: The date and time that the message was sent
              schema:
                type: string
              example: Fri, 16 Mar 2018 13:28:41 GMT
            Server:
              description: A name for the server
              schema:
                type: string
              example: nginx
            Strict-Transport-Security:
              description: >-
                A HSTS Policy informing the HTTP client how long to cache the
                HTTPS only policy and whether this applies to subdomains.
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
            cache-control:
              description: >-
                Tells all caching mechanisms from server to client whether they
                may cache this object. It is measured in seconds
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              description: Custom header
              schema:
                type: string
              example: u1rtetmsbfd824fo615cua3jtgt28q2n
          content:
            application/json:
              schema:
                type: object
                properties:
                  privilege:
                    type: string
                  in_demo_pool:
                    type: boolean
                  email:
                    type: string
                    format: email
              example:
                privilege: admin
                in_demo_pool: true
                email: use@example.com
      tags:
        - User management
      description: >-
        Retrieve a single user in your company account. Their email address,
        privilege level and whether they are in your pool of users handling demo
        requests is shown.


        Possible values for **privilege** are:

        * **user** (a normal user of the system)

        * **admin** (a user who can invite others, change configuration of the
        company account, and more)

        * **owner** (an admin who is also the billing contact for the company)

        * **reporting** (a non-admin who has access to reporting functionality
        only)


        Possible values for **in_demo_pool** are **true**, **false** and
        **null** which should be considered the same as **false**.


        The users' email address is shown in the **email** attribute.
    parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
        example: testaccount3@example.com
    patch:
      summary: Update company user
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Update company user
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Wed, 27 Mar 2019 14:10:47 GMT
            Content-Length:
              schema:
                type: integer
              example: 76
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: uvn14c84u1m26u5feg7ulv1goak0nebr
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
          content:
            application/json:
              schema:
                type: object
                properties:
                  privilege:
                    type: string
                  in_demo_pool:
                    type: boolean
                  email:
                    type: string
                    format: email
              example:
                privilege: admin
                in_demo_pool: true
                email: testaccount3@example.com
      tags:
        - User management
      description: >-
        Update a single user in your company account.


        PATCH with the email encoded in the URL, and form data for the user's
        **privilege** and **in_demo_pool** attributes, as shown in the example.


        You can also set any part of the user's user profile (**display_name**,
        **headline** and **picture_url**). Any of these that you fail to set
        will be set to blank.


        Possible values for **privilege** are:

        * **user** (a normal user of the system)

        * **admin** (a user who can invite others, change configuration of the
        company account, and more)

        * **owner** (an admin who is also the billing contact for the company)

        * **reporting** (a non-admin who has access to reporting functionality
        only)


        Possible values for **in_demo_pool** are **true** and **false**.


        Note that you can also send an application/json body where the
        parameters above are wrapped in a **user_access** object.


        Responds with a 204 No Content response code on success, along with a
        JSON-encoded body showing the updated entry for the user.
    delete:
      summary: Delete company user
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Delete company user
          headers:
            cache-control:
              description: >-
                Tells all caching mechanisms from server to client whether they
                may cache this object. It is measured in seconds
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            content-length:
              description: The length of the response body in octets (8-bit bytes)
              schema:
                type: integer
              example: 35
            date:
              description: The date and time that the message was sent
              schema:
                type: string
              example: Fri, 16 Mar 2018 16:41:12 GMT
            server:
              description: A name for the server
              schema:
                type: string
              example: Cowboy
            x-request-id:
              description: Custom header
              schema:
                type: string
              example: 14kn36frjvtng9pcvvg36og771oppsr7
          content:
            application/json:
              schema:
                type: string
              example: User access deleted successfully.
      tags:
        - User management
      description: >-
        Removes a single email from the list of allowed emails on your company
        account. Note that this does not actually delete their user account, but
        they can no longer act as part of the company account.


        Responds with 204 No Content on success, and a body of "User access
        deleted successfully."
  /ss/api/company_content:
    get:
      summary: List company content
      parameters:
        - name: from
          in: query
          description: required
          schema:
            type: string
          example: '2023-11-23T00:00:00Z'
        - name: to
          in: query
          description: required
          schema:
            type: string
          example: '2023-11-23T23:59:00Z'
        - name: view
          in: query
          description: 'optional: Values can be either "active" or "soft_deleted"'
          schema:
            type: string
          example: active
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: List company content
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.21.4
            Date:
              schema:
                type: string
              example: Sat, 07 May 2022 14:00:08 GMT
            Content-Length:
              schema:
                type: integer
              example: 2596
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FuzXaNXoBkijYqwAADGB
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    created_by:
                      type: 'null'
                    events:
                      type: array
                    id:
                      type: integer
                    name:
                      type: string
                    recorded_at:
                      type: 'null'
                    runtime_ms:
                      type: integer
                    state:
                      type: 'null'
                    tag:
                      type: 'null'
                    type:
                      type: string
                    url:
                      type: string
                      format: uri
              example:
                - created_by: null
                  events: []
                  id: 8
                  name: Stuff
                  recorded_at: null
                  runtime_ms: 0
                  state: null
                  tag: null
                  type: video
                  url: http://media.w3.org/2010/05/sintel/trailer.mp4
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 28
                  name: joi+admin@crankwheel.com 2022-3-24 7-51
                  recorded_at: '2022-03-24T07:51:07Z'
                  runtime_ms: 0
                  state: created
                  tag: bfcfe45a-bf63-465e-b981-22e8a53afe82
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 29
                  name: joi+admin@crankwheel.com 2022-3-24 7-54
                  recorded_at: '2022-03-24T07:54:26Z'
                  runtime_ms: 0
                  state: ready
                  tag: 2a8aa1e9-37ce-4bb7-a7f3-942117afc5ff
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 30
                  name: joi+admin@crankwheel.com 2022-3-24 8-49
                  recorded_at: '2022-03-24T08:49:40Z'
                  runtime_ms: 0
                  state: ready
                  tag: 679ae6b6-1e29-445a-9a48-b64981dd2909
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 31
                  name: joi+admin@crankwheel.com 2022-3-25 7-35
                  recorded_at: '2022-03-25T07:35:00Z'
                  runtime_ms: 0
                  state: ready
                  tag: 27cd40c2-83cf-4af8-beae-8936495692ae
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 32
                  name: joi+admin@crankwheel.com 2022-3-25 10-25
                  recorded_at: '2022-03-25T10:25:24Z'
                  runtime_ms: 0
                  state: ready
                  tag: f5ac9640-f094-4388-8b2f-56088f2e1a40
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events:
                    - name: started
                      time: 0
                    - name: ended
                      time: 1183
                  id: 34
                  name: joi+admin@crankwheel.com 2022-5-7 13-14
                  recorded_at: '2022-05-07T13:14:19Z'
                  runtime_ms: 1183
                  state: ready
                  tag: f586d69f-0de2-413c-a9da-861776fb0850
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events:
                    - name: started
                      time: 0
                    - name: ended
                      time: 7046
                  id: 35
                  name: Older MP4 recording
                  recorded_at: '2022-05-07T13:18:19Z'
                  runtime_ms: 0
                  state: ready
                  tag: 8368059b-a79f-40f3-b9ec-b3bca220997e
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events: []
                  id: 33
                  name: joi+admin@crankwheel.com 2022-3-29 9-36
                  recorded_at: '2022-03-29T09:36:13Z'
                  runtime_ms: 0
                  state: ready
                  tag: 8368059b-a79f-40f3-b9ec-b3bca220
                  type: recording
                  url: null
                - created_by: joi+admin@crankwheel.com
                  events:
                    - name: started
                      time: 0
                    - name: ended
                      time: 4099
                  id: 36
                  name: HLS recording
                  recorded_at: '2022-05-07T13:20:40Z'
                  runtime_ms: 4099
                  state: ready
                  tag: 5bbcc79f-7c58-43d4-a274-e938741fa5b8
                  type: recording
                  url: null
      tags:
        - Company Content
      description: >-
        Retrieve all company content items available in your company account
        that were created within a specified date range and that belong to an
        optional view (either "active" (default) or "soft_deleted").


        For each item, details are shown as per the example given.


        The types of content include "upload" (an external video uploaded to
        CrankWheel for storage and sharing), "recording" (a video recorded using
        CrankWheel, i.e. a meeting recording or a screencast recording),
        "redirect" (a post-session redirect URL) and "cta" (a call-to-action
        URL).
    post:
      summary: Create company content (video upload)
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Show company content
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.21.4
            Date:
              schema:
                type: string
              example: Sat, 07 May 2022 14:01:23 GMT
            Content-Length:
              schema:
                type: integer
              example: 286
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FuzXejXaKGhg-ygAAEVC
          content:
            application/json:
              schema:
                type: object
                properties:
                  created_by:
                    type: string
                    format: email
                  events:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        time:
                          type: integer
                  id:
                    type: integer
                  name:
                    type: string
                  recorded_at:
                    type: string
                    format: date-time
                  runtime_ms:
                    type: integer
                  state:
                    type: string
                  tag:
                    type: string
                  type:
                    type: string
                  url:
                    type: 'null'
              example:
                created_by: joi+admin@crankwheel.com
                events:
                  - name: started
                    time: 0
                  - name: ended
                    time: 4099
                id: 36
                name: HLS recording
                recorded_at: '2022-05-07T13:20:40Z'
                runtime_ms: 4099
                state: ready
                tag: 5bbcc79f-7c58-43d4-a274-e938741fa5b8
                type: recording
                url: null
      tags:
        - Company Content
      description: >-
        Creates a company content video upload record.


        The **title** parameter will be used as the human-readable name for the
        content.


        The **type** parameter must be "upload".


        The **created_by** parameter should be an email address, and must match
        an account registered for CrankWheel use or the API call will fail.


        You will receive back a JSON object with details on the created record,
        including its **id** which you can then use with the _Upload company
        content data_ API.
  /ss/api/company_content/{id}:
    get:
      summary: Show company content
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Show company content
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.21.4
            Date:
              schema:
                type: string
              example: Sat, 07 May 2022 14:01:23 GMT
            Content-Length:
              schema:
                type: integer
              example: 286
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FuzXejXaKGhg-ygAAEVC
          content:
            application/json:
              schema:
                type: object
                properties:
                  created_by:
                    type: string
                    format: email
                  events:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        time:
                          type: integer
                  id:
                    type: integer
                  name:
                    type: string
                  recorded_at:
                    type: string
                    format: date-time
                  runtime_ms:
                    type: integer
                  state:
                    type: string
                  tag:
                    type: string
                  type:
                    type: string
                  url:
                    type: 'null'
              example:
                created_by: joi+admin@crankwheel.com
                events:
                  - name: started
                    time: 0
                  - name: ended
                    time: 4099
                id: 36
                name: HLS recording
                recorded_at: '2022-05-07T13:20:40Z'
                runtime_ms: 4099
                state: ready
                tag: 5bbcc79f-7c58-43d4-a274-e938741fa5b8
                type: recording
                url: null
      tags:
        - Company Content
      description: >-
        Show a single company content record.


        The **id** parameter is as per the "List company content" API, or from a
        HATEOAS link in the "New retrieve usage history" API.


        Most of the response fields are self-explanatory, see example response.


        Further explanation as follows:


        *   **url** will be set only if the company content is a link, in which
        case it will be the URL for the link

        *   **events** contains a list of started/paused/resumed/ended events
        with relative timestamps in milliseconds from the start of the
        recording. This information along with the **recorded_at** timestamp
        (which we attempt to set as accurately as possible) is intended to be
        sufficient to sync the CrankWheel recording to external reecordings

        *   **state** can be one of "created" (meaning it's created but has not
        started processing), "processing" (has been uploaded and is currently
        being transcoded) or "ready"
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 47755
    delete:
      summary: Delete company content
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Delete company content
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.21.4
            Date:
              schema:
                type: string
              example: Sat, 07 May 2022 14:02:53 GMT
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FuzXjylgNyAMxX8AADSH
      tags:
        - Company Content
      description: >-
        Removes a single email from the list of allowed emails on your company
        account. Note that this does not actually delete their user account, but
        they can no longer act as part of the company account.


        Responds with 204 No Content on success, and a body of "User access
        deleted successfully."
  /ss/api/company_content/{id}/data:
    get:
      summary: Download company content
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses: {}
      tags:
        - Company Content
      description: >-
        Download a recording or uploaded video file, as an .mp4


        The **id** parameter is as per the "List company content" API, or from a
        HATEOAS link in the "New retrieve usage history" API.


        A successful response will have a status code of 200 OK, and the
        Content-Type header set to "video/mp4; charset=utf-8".
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 975
  /ss/uploads/company_content/{id}/data:
    post:
      summary: Upload company content data
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses: {}
      tags:
        - Company Content
      description: >-
        Uploads the binary video file to be used for the company content upload
        file record with identifier **id**, previously created using the _Create
        company content_ API.
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 975
  /ss/uploads/company_content/external_audio:
    post:
      summary: Upload external audio recording
      parameters:
        - name: agent_email
          in: query
          description: >-
            Should match the log-in email that the agent uses to log in to
            CrankWheel
          schema:
            type: string
          example: user@example.com
        - name: started_iso_extended_z
          in: query
          description: UTC timestamp
          schema:
            type: string
          example: '2023-08-13T13:48:01Z'
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses: {}
      tags:
        - Company Content
      description: >-
        Uploads an external audio recording, for example from your VoIP system,
        for a given agent (**agent_email**), with a given timestamp in extended
        UTC format, which should be accurate at least down to the second
        (**started_iso_extended_z**).


        The uploaded recording should be uploaded as form-data under the key
        **data**, and the file should be in MP3 format.


        If CrankWheel finds a session for the CrankWheel user identified by
        agent_email, with a CrankWheel recording that overlaps with the uploaded
        audio file, it will create a combined recording of the external audio
        and the native CrankWheel audio, and link to that recording from the
        original CrankWheel recording for the session.


        If the original CrankWheel session includes an audio track (which it
        will if the agent allows access to their microphone), then the audio
        from the CrankWheel session will be used to correlate exactly with the
        audio from the external audio file, down to a few milliseconds accuracy,
        for perfect synchronization between the recordings.


        If no relevant CrankWheel recording is found, the recording will simply
        be stored by CrankWheel.
  /ss/api/public_link:
    get:
      summary: Get public link
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Get public link
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Wed, 27 Mar 2019 14:11:20 GMT
            Content-Length:
              schema:
                type: integer
              example: 43
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: ka3kh91o6cr8a4di82gq716j4nukerlq
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
          content:
            application/json:
              schema:
                type: object
                properties:
                  public_link_url:
                    type: string
                    format: uri
              example:
                public_link_url: https://meeting.is/cw
      tags:
        - Sessions
      description: >-
        Retrieves the public link for your account. This is the same for all
        presenters on the account, but may change from time to time (it is
        editable by administrators on your account).
  /ss/api/ongoing_sessions:
    get:
      summary: Get all ongoing sessions
      parameters:
        - name: hl
          in: query
          description: Defaults to "en" if not present
          schema:
            type: string
          example: fr
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Get public link
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Wed, 27 Mar 2019 14:11:20 GMT
            Content-Length:
              schema:
                type: integer
              example: 43
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: ka3kh91o6cr8a4di82gq716j4nukerlq
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
          content:
            application/json:
              schema:
                type: object
                properties:
                  public_link_url:
                    type: string
                    format: uri
              example:
                public_link_url: https://meeting.is/cw
      tags:
        - Sessions
      description: >-
        Retrieves a list of all currently-ongoing sessions for your company,
        regardless of whether the sessions have a viewer connected or not.


        Rather than the usual base DNS name for APIs, the DNS name of the
        request must be the same as the hostname that meeting links for the
        agent resolve to. To retrieve this DNS name, start a meeting as the
        agent, click 'Copy link' and paste it into a browser and hit Enter.
        Sometimes it will resolve to the usual DNS name, other times to
        something like 'us1.crankwheel.com'.


        A successful request will receive a 200 OK response, and a body of JSON
        which is a list of sessions. Each session is an object with the
        following keys:


        **agent_email**: The email address of the agent hosting the session.


        **session_id**: The identifier of the session.


        **viewer_link**: A link that could be used by a viewer to join the
        session without further authentication. The link's **hl** parameter will
        match whatever **hl** parameter you pass as a query parameter when
        calling this API, and will default to "en" if you pass no such
        parameter.
  /ss/api/schedule_meeting:
    post:
      summary: Create scheduled meeting link
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Create scheduled meeting link
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Wed, 27 Mar 2019 14:11:59 GMT
            Transfer-Encoding:
              schema:
                type: string
              example: chunked
            Connection:
              schema:
                type: string
              example: keep-alive
            Vary:
              schema:
                type: string
              example: Accept-Encoding
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: mcmsaq2qmge5smn5peah8r7mrcjvb4kg
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
            Content-Encoding:
              schema:
                type: string
              example: gzip
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
                  uid:
                    type: string
                  numbers:
                    type: string
                    format: style
              example:
                url: https://meeting.is/cw?hl=en&c=2TY9DUKyFes
                uid: 2TY9DUKyFes
                numbers: |
                  Australia: 02-89990964
                  Austria: 0820-400600
                  Canada: 1-647-503-4016
                  China: 010-53876269
                  France: 0825-000328
                  Germany: 01803-127127
                  Hong Kong: 3018-4589
                  Iceland: 539-0601
                  Indonesia: 0855-7467-0764
                  Ireland: 1520-932995
                  Netherlands: 0900-1998
                  New Zealand: 09-9518334
                  Russia: 499-7043569
                  Singapore: 3138-9320
                  South Africa: 087-2318992
                  Spain: 902-559217
                  Switzerland (german): 0840-444888
                  UK: 0843 373 0843
                  UK (mobile): 83000
                  USA: 1-213-603-9096
      tags:
        - Sessions
      description: >-
        This has the same effect as the "Schedule a Meeting" button in a
        presenter's user interface.


        It returns the URL for the meeting, as well as a list of dial-in phone
        numbers (if phone conferencing is set) and the raw ID of the meeting
        (useful only to build URLs).


        ### Audio parameter


        With the inclusion of web based audio you can specify the audio channel
        you wish to use for the meeting. **call** is the default value if none
        is specified, referring to a standard phone call. **conference** refers
        to the use of phone conferencing and **web** refers to the use of
        CrankWheel's web based audio feature, handling the audio in the browser.
  /ss/api/make_noauth_link:
    post:
      summary: Create noauth link
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Create noauth link
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Sun, 03 Mar 2019 14:45:03 GMT
            Content-Length:
              schema:
                type: integer
              example: 65
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: qfv6v1fjpiqso86tcjl4gu4ij2hnj615
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
              example:
                url: https://meeting.is/acme?hl=en&c=3-Aqer24hRs=
      tags:
        - Sessions
      description: >-
        A noauth link is valid, without further authentication, to join a
        session that is started in the timeframe between the moment the API
        request is processed, and the time **within_seconds** seconds after
        that.


        As of March 27th 2022, a noauth link is bound to the first session
        joined using the link, after which it cannot be used to join any other
        session without authentication even if the other session is also started
        within the number of seconds specified in the API request.


        For sessions started outside of the timeframe described in the first
        paragraph, as well as for any session other than the session that the
        link has been tightly bound to (if it has previously been used to join a
        session), a noauth link works just like any older link (scheduled or
        instant) in that it will require the viewer to tell the presenter a
        number, and for the presenter to accept the viewer by clicking a button
        next to that number in their list of waiting viewers (in the background,
        this is a security handshake based on a large,
        cryptographically-generated shared secret).


        The parameter **truncate_older_links** is optional and defaults to
        false, meaning that older noauth links will be left unchanged when
        generating a new noauth link. As of March 27th 2022, if this parameter
        is set to true, this will trigger the behavior that any older noauth
        link for the given email address will have its last moment of validity
        set to the moment this API call is processed, if and only if its
        previous stored validity would have extended until after that moment.
        Consistently using this parameter avoids the possibility of overlap in
        the validity intervals of noauth links.


        One other API (the "Delete meeting link" API) accepts a **uid**
        parameter. The **uid** of the noauth link is the value of the c=
        parameter returned in the noauth URL, when successful.


        You may delete previously-generated noauth links by using the "Delete
        meeting link" API. This goes further than making them revert to
        requiring authentication and instead makes them not work at all. Viewers
        will see a message similar to "The presenter has stopped sharing their
        screen" if they try to use a deleted link.


        The parameter **create_hook** is optional and defaults to the empty
        string (which means, do nothing). If specified, this string should be an
        https URL that CrankWheel will make a GET request to, when a session is
        created for this noauth link.


        The parameter **viewer_hook** is optional and defaults to the empty
        string (which means, do nothing). If specified, this string should be an
        https URL that CrankWheel will make a GET request to, when the first
        viewer joins the session created for this noauth link.
  /ss/api/post_session_redirect:
    post:
      summary: Set post-meeting URL
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Success
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Sun, 19 Nov 2023 08:34:49 GMT
            Content-Length:
              schema:
                type: integer
              example: 2
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: F5j5OpU2sBNhqoUAAAaB
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
        '404':
          description: Not found
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Sun, 19 Nov 2023 08:22:02 GMT
            Content-Length:
              schema:
                type: integer
              example: 64
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: F5j4h-1ZJrQeQs8ADSgB
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
      tags:
        - Sessions
      description: >-
        This API sets the post-session URL (the URL that viewers are redirected
        to at the end of a session) for the current ongoing session hosted by a
        given agent.


        Rather than the usual base DNS name for APIs, the DNS name of the
        request must be the same as the hostname that meeting links for the
        agent resolve to. To retrieve this DNS name, start a meeting as the
        agent, click 'Copy link' and paste it into a browser and hit Enter.
        Sometimes it will resolve to the usual DNS name, other times to
        something like 'us1.crankwheel.com'.


        Parameter **email** should be the email address that the agent in
        question uses as their log-in identifier to CrankWheel.


        Parameter **url**, should be a URL starting with http:// or https://.


        The API will look for that agent's current session, and set the
        post-session URL for the session to the specified URL (which **does not
        need** to be pre-configured as one of the available URLs for the agent
        to choose from the list in our control panel for the session).


        If parameters are valid and an ongoing session is found for the agent,
        you will get a 200 response code.


        If either parameter is invalid, you will get a 400 response code.


        If the provided agent email is not for an agent who is part of your
        company, you will get a 403 response code.


        If you provided a valid agent email but there is no ongoing session for
        the agent, you will get a 404 response code.


        For any other error you will get a 500 resposne code.
  /ss/api/schedule_meeting/{uid}:
    delete:
      summary: Delete meeting link
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Delete scheduled meeting link, link exists
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Thu, 28 Oct 2021 11:51:37 GMT
            Content-Length:
              schema:
                type: integer
              example: 40
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FrIvjSOjSFachr0AAALi
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
        '404':
          description: Delete scheduled meeting link, uid nonexistent
          headers:
            Server:
              schema:
                type: string
              example: nginx
            Date:
              schema:
                type: string
              example: Thu, 28 Oct 2021 11:52:27 GMT
            Content-Length:
              schema:
                type: integer
              example: 29
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: FrIvmLXIiEsJGboAAANC
            Strict-Transport-Security:
              schema:
                type: string
              example: max-age=15768000; includeSubDomains
      tags:
        - Sessions
      description: >-
        This deletes a previously created link based on its uid.


        Returns either 200 with a message, or 404 if the link does not exist;
        see examples.
    parameters:
      - name: uid
        in: path
        required: true
        schema:
          type: string
        example: nonexistent
  /ss/api/demo_info:
    get:
      summary: Get Instant Demo Details
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Get Instant Demo Details
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Sat, 09 Mar 2019 10:09:07 GMT
            content-length:
              schema:
                type: integer
              example: 768
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: ivtv9me007tic7dvaqhptu276altukuv
          content:
            application/json:
              schema:
                type: object
                properties:
                  website_url:
                    type: string
                    format: uri
                  js_snippet:
                    type: string
                    format: style
                  is_enabled:
                    type: boolean
                  email_campaign_url:
                    type: string
                    format: uri
                  demo_id:
                    type: string
              example:
                website_url: >-
                  https://meeting.is/ss/showu/cw#crankwheel-com-showu-launch-button
                js_snippet: >-
                  (function(i,c,a,n,s,h,o,w,u){if(typeof i.showu ===
                  'object'){i.showu.reInitialize()}else{i.showu = {'_q':[]};
                  i._ishowuSettings={id:'DT66biLU',d:a};
                  s=c.getElementsByTagName('head')[0];h=c.createElement('script');h.async=1;
                  h.type = 'text/javascript'; h.src=a+n; s.appendChild(h);o =
                  ['launch', 'onEvent', 'getCapacity', 'populateFields',
                  'reInitialize']; function p(f) {i.showu[f] =
                  function(){i.showu._q.push([f].concat(Array.prototype.slice.call(arguments,
                  0)));};} for (w = 0; w < o.length; w++)
                  {p(o[w]);}}})(window,document,'https://meeting.is','/ss/js/showu_app.js')
                is_enabled: true
                email_campaign_url: https://meeting.is/ss/showu/cw
                demo_id: DT66biLU
      tags:
        - Instant Demos
      description: >-
        Retrieves details on whether Instant Demos are enabled on the account,
        and if so, the JavaScript snippet to use, the URL for email campaigns,
        the URL for links on a website (where the JavaScript snippet is also
        present), and the demo ID for advanced applications.
  /ss/api/demo_enable:
    patch:
      summary: Enable Instant Demos
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Enable Instant Demos
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Sat, 09 Mar 2019 09:34:58 GMT
            content-length:
              schema:
                type: integer
              example: 50
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: gn7312au62emouh68d0qf8ddhk7e19bv
          content:
            application/json:
              schema:
                type: object
                properties:
                  was_previously_enabled:
                    type: boolean
                  status:
                    type: string
              example:
                was_previously_enabled: true
                status: enabled
      tags:
        - Instant Demos
      description: >-
        Calling this API enables Instant Demos on your account, and returns an
        object with **status** set to enabled (unless something went wrong) and
        **was_previously_enabled** set to true if the feature was already
        enabled, false if it was turned on just now.
  /ss/api/api_access:
    get:
      summary: List API keys
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: List API keys
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Tue, 09 Apr 2019 14:03:18 GMT
            content-length:
              schema:
                type: integer
              example: 323
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: 14q5ddaqigpseq1j0piigrm7jigoggg3
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    write:
                      type: boolean
                    key:
                      type: string
              example:
                - write: false
                  key: NLBMmGd8my-7njNjcrGBBmvSKstO402GgvcY8lbJ
                - write: true
                  key: 068Y_yRRM5Jl-bR9HaLGJiJkMITQVZsNeMc-DD_1
      tags:
        - Integrations
      description: Lists the API tokens on your company
    post:
      summary: Create new API key
      parameters:
        - name: write_access
          in: query
          schema:
            type: boolean
          example: true
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '200':
          description: Create new API key
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Tue, 09 Apr 2019 14:02:47 GMT
            content-length:
              schema:
                type: integer
              example: 63
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: 0kgl88tvh5jublla3r79tgg7scemq7ri
          content:
            application/json:
              schema:
                type: object
                properties:
                  write:
                    type: boolean
                  key:
                    type: string
              example:
                write: true
                key: 068Y_yRRM5Jl-bR9HaLGJiJkMITQVZsNeMc-DD_1
      tags:
        - Integrations
      description: >-
        The **write_access** parameter is mandatory and must be either true (for
        a read/write key) or false (for a read-only key).
  /ss/api/api_access/{key}:
    delete:
      summary: Delete API key
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Delete API key
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Tue, 09 Apr 2019 14:03:02 GMT
            content-length:
              schema:
                type: integer
              example: 9
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: 2ujm1pgjc4hoo9nvdj5or6gajluhk54o
          content:
            application/json:
              schema:
                type: string
              example: deleted
      tags:
        - Integrations
    parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
        example: 068Y_yRRM5Jl-bR9HaLGJiJkMITQVZsNeMc-DD_1
  /ss/api/webhooks:
    get:
      summary: List webhooks
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: List webhooks
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Wed, 10 Apr 2019 10:57:44 GMT
            content-length:
              schema:
                type: integer
              example: 89
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: vuko0uq6iai1ibffktmshbgv2aulhfsl
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    url:
                      type: string
                      format: uri
                    id:
                      type: integer
                    access_token:
                      type: string
              example:
                - url: http://requestbin.fullcontact.com/1chj0rs1
                  id: 10
                  access_token: woof woof
      tags:
        - Integrations
      description: Lists the web hooks configured for your company
    post:
      summary: Add webhook
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Add webhook
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Wed, 10 Apr 2019 11:10:48 GMT
            content-length:
              schema:
                type: integer
              example: 16
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: lvrgibgkhij4d03o85830gm61n5h56sk
          content:
            application/json:
              schema:
                type: string
              example: Added webhook.
      tags:
        - Integrations
      description: Lists the web hooks configured for your company
  /ss/api/webhooks/{id}:
    delete:
      summary: Delete webhook
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key-readwrite}}
      responses:
        '204':
          description: Delete webhook
          headers:
            server:
              schema:
                type: string
              example: Cowboy
            date:
              schema:
                type: string
              example: Wed, 10 Apr 2019 10:59:23 GMT
            content-length:
              schema:
                type: integer
              example: 31
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: crc3o1t6hcbku3nf9mc8vrbhpdf3hh4o
          content:
            application/json:
              schema:
                type: string
              example: Webhook deleted successfully.
      tags:
        - Integrations
      description: Delete a webhook by ID.
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 10
  /ss/api/company_content/shares:
    get:
      summary: List Shares (with Engagement)
      parameters:
        - name: from
          in: query
          description: Optional. Start of date range (ISO 8601). Defaults to 29 days ago.
          schema:
            type: string
          example: '2026-01-01T00:00:00Z'
        - name: to
          in: query
          description: Optional. End of date range (ISO 8601). Defaults to now.
          schema:
            type: string
          example: '2026-04-22T23:59:59Z'
        - name: page
          in: query
          description: 'Optional. Page number (default: 1)'
          schema:
            type: integer
          example: 1
        - name: page_size
          in: query
          description: 'Optional. Results per page (default: 25)'
          schema:
            type: integer
          example: 25
        - name: created_by
          in: query
          description: Optional. Filter by creator email
          schema:
            type: string
          example: ''
        - name: inactive
          in: query
          description: Optional. Set to 'true' to include inactive shares
          schema:
            type: boolean
          example: true
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: List Shares (with Engagement)
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.27.5
            Date:
              schema:
                type: string
              example: Wed, 22 Apr 2026 16:43:34 GMT
            Content-Length:
              schema:
                type: integer
              example: 489
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: GKi7gKUAJNKX6W4AAAsC
      tags:
        - Video Shares
      description: >-
        Returns a paginated list of shares with engagement data (visits, plays,
        CTA clicks, engagement score) for the authenticated company.


        Response:

        ```json

        {
          "data": [
            {
              "slug": "abc123",
              "visits": 10,
              "plays": 7,
              "avg_percent_watched": 0.85,
              "cta_clicks": 3,
              "has_cta": true,
              "engagement_score_v1": 72.5
            }
          ],
          "pagination": {
            "page": 1,
            "page_size": 25,
            "total": 42
          },
          "from": "2026-01-01T00:00:00Z",
          "to": "2026-04-22T23:59:59Z"
        }

        ```
  /ss/api/company_content/shares/{slug}:
    get:
      summary: Share Detail (with Engagement)
      parameters:
        - name: from
          in: query
          description: Optional. Start of date range (ISO 8601). Omit for all-time.
          schema:
            type: string
          example: '2026-01-01T00:00:00Z'
        - name: to
          in: query
          description: Optional. End of date range (ISO 8601). Omit for all-time.
          schema:
            type: string
          example: '2026-04-22T23:59:59Z'
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Share Detail (with Engagement)
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.27.5
            Date:
              schema:
                type: string
              example: Wed, 22 Apr 2026 16:44:26 GMT
            Content-Length:
              schema:
                type: integer
              example: 413
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: GKi7jNkBtxqD9pIAAApD
      tags:
        - Video Shares
      description: >-
        Returns detailed engagement data for a single share, including
        per-session breakdown and engagement score.


        Response:

        ```json

        {
          "slug": "abc123",
          "segment": "demo-video",
          "has_cta": true,
          "content_runtime_ms": 225000,
          "summary": {
            "total_visits": 10,
            "total_plays": 7,
            "avg_percent_watched": 0.85,
            "cta_clicks": 3,
            "engagement_score_v1": 72.5
          },
          "sessions": [
            { ... }
          ]
        }

        ```
    parameters:
      - name: slug
        in: path
        required: true
        description: The share slug identifier
        schema:
          type: string
        example: d6a55fc8-dac1-4b2c-8d6a-652d5804f88f
  /ss/api/share_details:
    get:
      summary: Share Details (with CRM Details)
      parameters:
        - name: from
          in: query
          description: Required. Start of date range (ISO 8601)
          schema:
            type: string
          example: '2026-01-01T00:00:00Z'
        - name: to
          in: query
          description: Required. End of date range (ISO 8601)
          schema:
            type: string
          example: '2026-04-22T23:59:59Z'
        - name: Authorization
          in: header
          schema:
            type: string
          example: Basic {{crankwheel-api-key}}
      responses:
        '200':
          description: Share Details (with CRM Details)
          headers:
            Server:
              schema:
                type: string
              example: nginx/1.27.5
            Date:
              schema:
                type: string
              example: Wed, 22 Apr 2026 16:48:36 GMT
            Content-Length:
              schema:
                type: integer
              example: 1792
            Connection:
              schema:
                type: string
              example: keep-alive
            cache-control:
              schema:
                type: string
              example: max-age=0, private, must-revalidate
            x-request-id:
              schema:
                type: string
              example: GKi7xvKuaDEaT4QAAGOC
      tags:
        - Video Shares
      description: >-
        Returns share details for the authenticated company within a date range.
        Both `from` and `to` are required.


        Response:

        ```json

        {
          "shares": [
            {
              "id": 123,
              "created_at": "2026-03-15T10:30:00Z",
              "customer_account_id": "ACCT-001",
              "content_created_by": "agent@example.com",
              "content_recorded_at": "2026-03-14T09:00:00Z",
              "content_runtime": "00:03:45",
              "video_url": "https://server/ss/share/abc123",
              "access_sharing_enabled": true
            }
          ]
        }

        ```
