openapi: 3.1.0 info: title: Oura Daily Activity Routes Session Routes API version: '2.0' tags: - name: Session Routes paths: /v2/usercollection/session: get: tags: - Session Routes summary: Multiple Session Documents operationId: Multiple_session_Documents_v2_usercollection_session_get parameters: - name: start_date in: query required: false schema: anyOf: - type: string format: date-time - type: string format: date - type: 'null' title: Start Date - name: end_date in: query required: false schema: anyOf: - type: string format: date-time - type: string format: date - type: 'null' title: End Date - name: next_token in: query required: false schema: anyOf: - type: string - type: 'null' title: Next Token - name: fields in: query required: false schema: anyOf: - type: string - type: 'null' description: Comma-separated list of fields to include in the response, in addition to the always returned fields. Defaults to all fields if not provided. title: Fields description: Comma-separated list of fields to include in the response, in addition to the always returned fields. Defaults to all fields if not provided. responses: '200': description: Successful Response content: application/json: schema: anyOf: - $ref: '#/components/schemas/MultiDocumentResponse_PublicSession_' - $ref: '#/components/schemas/MultiDocumentResponseDict' title: Response Multiple Session Documents V2 Usercollection Session Get '400': description: Client Exception '401': description: Unauthorized access exception. Usually means the access token is expired, malformed or revoked. '403': description: Access forbidden. Usually means the user's subscription to Oura has expired and their data is not available via the API. '429': description: Request Rate Limit Exceeded. '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - BearerAuth: [] - OAuth2: [] x-codeSamples: - lang: cURL label: cURL source: 'curl --location --request GET ''https://api.ouraring.com/v2/usercollection/session?start_date=2021-11-01&end_date=2021-12-01&fields=day,score'' \ --header ''Authorization: Bearer ''' - lang: Python source: "import requests \nurl = 'https://api.ouraring.com/v2/usercollection/session' \nparams={ \n 'start_date': '2021-11-01', \n 'end_date': '2021-12-01',\n 'fields': 'day,score' \n}\nheaders = { \n 'Authorization': 'Bearer ' \n}\nresponse = requests.request('GET', url, headers=headers, params=params) \nprint(response.text)" label: Python - lang: JavaScript source: "var myHeaders = new Headers(); \nmyHeaders.append('Authorization', 'Bearer '); \nvar requestOptions = { \n method: 'GET', \n headers: myHeaders, \nfetch('https://api.ouraring.com/v2/usercollection/session?start_date=2021-11-01&end_date=2021-12-01&fields=day,score', requestOptions) \n .then(response => response.text()) \n .then(result => console.log(result)) \n .catch(error => console.log('error', error));" label: JavaScript - lang: Java source: "OkHttpClient client = new OkHttpClient().newBuilder() \n .build(); \nRequest request = new Request.Builder() \n .url(\"https://api.ouraring.com/v2/usercollection/session?start_date=2021-11-01&end_date=2021-12-01&fields=day,score\") \n .method(\"GET\", null) \n .addHeader(\"Authorization\", \"Bearer \") \n .build(); \nResponse response = client.newCall(request).execute();" label: Java /v2/usercollection/session/{document_id}: get: tags: - Session Routes summary: Single Session Document operationId: Single_session_Document_v2_usercollection_session__document_id__get parameters: - name: document_id in: path required: true schema: type: string title: Document Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PublicSession' '404': description: Not Found '400': description: Client Exception '401': description: Unauthorized access exception. Usually means the access token is expired, malformed or revoked. '403': description: Access forbidden. Usually means the user's subscription to Oura has expired and their data is not available via the API. '429': description: Request Rate Limit Exceeded. '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - BearerAuth: [] - OAuth2: [] x-codeSamples: - lang: cURL label: cURL source: 'curl --location --request GET ''https://api.ouraring.com/v2/usercollection/session/2-5daccc095220cc5493a4e9c2b681ca941e'' \ --header ''Authorization: Bearer ''' - lang: Python source: "import requests \nurl = 'https://api.ouraring.com/v2/usercollection/session/2-5daccc095220cc5493a4e9c2b681ca941e\nheaders = { \n 'Authorization': 'Bearer ' \n}\nresponse = requests.request('GET', url, headers=headers, params=params) \nprint(response.text)" label: Python - lang: JavaScript source: "var myHeaders = new Headers(); \nmyHeaders.append('Authorization', 'Bearer '); \nvar requestOptions = { \n method: 'GET', \n headers: myHeaders, \nfetch('https://api.ouraring.com/v2/usercollection/session/2-5daccc095220cc5493a4e9c2b681ca941e', requestOptions) \n .then(response => response.text()) \n .then(result => console.log(result)) \n .catch(error => console.log('error', error));" label: JavaScript - lang: Java source: "OkHttpClient client = new OkHttpClient().newBuilder() \n .build(); \nRequest request = new Request.Builder() \n .url(\"https://api.ouraring.com/v2/usercollection/session/2-5daccc095220cc5493a4e9c2b681ca941e\") \n .method(\"GET\", null) \n .addHeader(\"Authorization\", \"Bearer \") \n .build(); \nResponse response = client.newCall(request).execute();" label: Java components: schemas: ISODate: type: string PublicMomentMood: type: string enum: - bad - worse - same - good - great title: PublicMomentMood description: Possible Moment moods. UtcDateTime: type: string LocalizedDateTime: type: string ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError Array_Union_float__NoneType__Bits64_: items: anyOf: - type: number - type: 'null' type: array title: ArrayNullableFloatBits64 PublicSample: properties: interval: type: number title: '' description: Interval in seconds between the sampled items. items: $ref: '#/components/schemas/Array_Union_float__NoneType__Bits64_' title: '' description: Recorded sample items. timestamp: $ref: '#/components/schemas/LocalizedDateTime' title: '' description: Timestamp when the sample recording started. type: object required: - interval - items - timestamp title: PublicSample description: Object defining a recorded sample. MultiDocumentResponse_PublicSession_: properties: data: items: $ref: '#/components/schemas/PublicSession' type: array title: Data next_token: anyOf: - type: string - type: 'null' title: Next Token type: object required: - data - next_token title: MultiDocumentResponse[PublicSession] Metadata: properties: updated_at: $ref: '#/components/schemas/UtcDateTime' title: '' description: Timestamp indicating when the object was last updated. version: type: integer title: '' description: Version number of the object. type: object required: - updated_at - version title: Metadata description: Object defining the metadata of a collection model instance. MultiDocumentResponseDict: properties: data: items: additionalProperties: true type: object type: array title: Data next_token: anyOf: - type: string - type: 'null' title: Next Token type: object required: - data - next_token title: MultiDocumentResponseDict PublicMomentType: type: string enum: - breathing - meditation - nap - relaxation - rest - body_status title: PublicMomentType description: Possible Moment types. PublicSession: properties: id: type: string minLength: 1 title: '' description: Unique identifier of the object. meta: $ref: '#/components/schemas/Metadata' title: '' description: Meta data of the object. day: $ref: '#/components/schemas/ISODate' title: '' description: The date when the session occurred. end_datetime: $ref: '#/components/schemas/LocalizedDateTime' title: '' description: Timestamp indicating when the Moment ended. heart_rate: anyOf: - $ref: '#/components/schemas/PublicSample' - type: 'null' title: '' description: Recorded heart rate samples during the Moment. heart_rate_variability: anyOf: - $ref: '#/components/schemas/PublicSample' - type: 'null' title: '' description: Recorded heart rate variability samples during the Moment. mood: anyOf: - $ref: '#/components/schemas/PublicMomentMood' - type: 'null' title: '' description: User-selected mood for the Moment. motion_count: anyOf: - $ref: '#/components/schemas/PublicSample' - type: 'null' title: '' description: Recorded motion count samples during the Moment. start_datetime: $ref: '#/components/schemas/LocalizedDateTime' title: '' description: Timestamp indicating when the Moment ended. type: $ref: '#/components/schemas/PublicMomentType' title: '' description: Type of the Moment. type: object required: - id - meta - day - end_datetime - start_datetime - type title: PublicSession description: Public model defining a recorded Session. x-cloud-only: true x-collection: publicsession x-owner: health-squad