# Session

Canonical page: https://docs.ovok.com/flutter-sdk/reference/ovok_sdk/session

{/* Generated by scripts/generate_reference.dart; do not edit. */}

## OvokReference [#ovokreference]

```dart
class OvokReference
```

A FHIR reference such as `Project/123`, with an optional display name.

### Constructors [#constructors]

#### OvokReference.new [#ovokreferencenew]

```dart
OvokReference(String reference, {String? display})
```

Creates a reference to [`reference`](#ovokreferencereference), labelled [`display`](#ovokreferencedisplay).

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `reference` | `String` | positional |  |
| `display` | `String?` | named |  |

#### OvokReference.fromJson [#ovokreferencefromjson]

```dart
OvokReference.fromJson(Map<String, dynamic> json)
```

Reads a FHIR `Reference` object; a non-string `display` becomes null.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `json` | `Map<String, dynamic>` | positional |  |

### Properties [#properties]

#### OvokReference.reference [#ovokreferencereference]

```dart
final String reference
```

The relative reference, such as `Patient/123`.

#### OvokReference.display [#ovokreferencedisplay]

```dart
final String? display
```

The human-readable label, when the server sent one.

### Methods [#methods]

#### OvokReference.toJson [#ovokreferencetojson]

```dart
Map<String, Object?> toJson()
```

The FHIR `Reference` JSON this was read from.

Returns `Map<String, Object?>`.


## Session [#session]

```dart
class Session
```

The signed-in user's tokens; stored with the same JSON keys as `@ovok/core/next`.

### Constructors [#constructors-1]

#### Session.new [#sessionnew]

```dart
Session({
  required String accessToken,
  required String? refreshToken,
  required DateTime expiresAt,
  required OvokReference project,
  required OvokReference profile,
})
```

Creates a session from its parts; sign-in builds one for you.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `accessToken` | `String` | required named |  |
| `refreshToken` | `String?` | required named |  |
| `expiresAt` | `DateTime` | required named |  |
| `project` | `OvokReference` | required named |  |
| `profile` | `OvokReference` | required named |  |

#### Session.fromLogin [#sessionfromlogin]

```dart
Session.fromLogin(Map<String, dynamic> tokens, DateTime now)
```

Reads a login, register or social sign-in response.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `tokens` | `Map<String, dynamic>` | positional |  |
| `now` | `DateTime` | positional |  |

### Properties [#properties-1]

#### Session.accessToken [#sessionaccesstoken]

```dart
final String accessToken
```

The bearer token sent with each request.

#### Session.refreshToken [#sessionrefreshtoken]

```dart
final String? refreshToken
```

Exchanged for a new [`accessToken`](#sessionaccesstoken); null when the sign-in issued none.

#### Session.expiresAt [#sessionexpiresat]

```dart
final DateTime expiresAt
```

When [`accessToken`](#sessionaccesstoken) expires.

#### Session.project [#sessionproject]

```dart
final OvokReference project
```

The project (tenant) the user signed in to.

#### Session.profile [#sessionprofile]

```dart
final OvokReference profile
```

The signed-in user's profile resource, such as `Patient/123`.

#### Session.canRefresh [#sessioncanrefresh]

```dart
bool get canRefresh
```

Whether the session holds a refresh token.

### Methods [#methods-1]

#### Session.fromJson [#sessionfromjson]

```dart
Session? fromJson(Object? json)
```

Null for anything but a complete stored session.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `json` | `Object?` | positional |  |

Returns `Session?`.

#### Session.isStaleAt [#sessionisstaleat]

```dart
bool isStaleAt(DateTime now)
```

Stale a minute early, so a token never expires between the check and the request.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `now` | `DateTime` | positional |  |

Returns `bool`.

#### Session.refreshedWith [#sessionrefreshedwith]

```dart
Session refreshedWith(Map<String, dynamic> token, DateTime now)
```

Reads an `/oauth2/token` response; a missing refresh token keeps the current one.

| Parameter | Type | Kind | Default |
| ------ | ------ | ------ | ------ |
| `token` | `Map<String, dynamic>` | positional |  |
| `now` | `DateTime` | positional |  |

Returns `Session`.

#### Session.toJson [#sessiontojson]

```dart
Map<String, Object?> toJson()
```

The stored form, which [`Session.fromJson`](#sessionfromjson) reads back.

Returns `Map<String, Object?>`.
