# Member Profile

**Summary:** Endpoints for Member Profile

- Role: [Developers](https://www.subrite.no/developers)
- Source: https://www.subrite.no/developers/member-profile
- Updated: 2026-10-13
- Markdown index: https://www.subrite.no/developers/llms.txt

<a id="get-api-v1-members-profile-mypage-cards-settings"></a>
## Get mypage cards settings of a tenant

`GET /api/v1/members/profile/mypage-cards-settings`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `showOnMyPage` | query | `boolean` |   |

### Responses

#### 200

Content type: `application/json` · `array of MypageCardsSettingsResponseDto`

| Name | Type | Description |
| --- | --- | --- |
| `[].title` (Required when parent is present) | `Translation` | Can be null |
| `[].title.en` (Required when parent is present) | `string` |   |
| `[].title.no` (Required when parent is present) | `string` |   |
| `[].title.sv` | `string` |   |
| `[].title.da` | `string` |   |
| `[].title.key` | `string` |   |
| `[].description` (Required when parent is present) | `Translation` | Can be null |
| `[].description.en` (Required when parent is present) | `string` |   |
| `[].description.no` (Required when parent is present) | `string` |   |
| `[].description.sv` | `string` |   |
| `[].description.da` | `string` |   |
| `[].description.key` | `string` |   |
| `[].id` (Required when parent is present) | `number` |   |
| `[].link` (Required when parent is present) | `string` |   |
| `[].cardType` (Required when parent is present) | `string` | Allowed values: `"subrite_standard"`, `"custom"` |
| `[].showOnMyPage` (Required when parent is present) | `boolean` |   |
| `[].display_order` (Required when parent is present) | `number` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` |   |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/mypage-cards-settings \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "title": {},
    "description": {},
    "id": 0,
    "link": "string",
    "cardType": "subrite_standard",
    "showOnMyPage": true,
    "display_order": 0
  }
]
```

<a id="get-api-v1-members-profile-available-subscriptions-to-join"></a>
## Get subscriptions available to join based on email domain

`GET /api/v1/members/profile/available-subscriptions-to-join`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of MemberPackageProduct`

| Name | Type | Description |
| --- | --- | --- |
| `[].memberPackageId` (Required when parent is present) | `number` |   |
| `[].productId` (Required when parent is present) | `number` |   |
| `[].price` (Required when parent is present) | `number` |   |
| `[].recurringPrice` (Required when parent is present) | `number` |   |
| `[].quantity` (Required when parent is present) | `number` |   |
| `[].hasAccess` (Required when parent is present) | `boolean` |   |
| `[].shippingCountry` (Required when parent is present) | `string` |   |
| `[].shippingProvider` (Required when parent is present) | `string` | Allowed values: `"Helthjem"`, `"Bring - Posten"`, `"Distribution Innovation"` |
| `[].allowDistributorToUpdateDeliveryAddress` (Required when parent is present) | `boolean` |   |
| `[].memberPackageProductEmailDomains` (Required when parent is present) | `array of MemberPackageProductEmailDomain` |   |
| `[].memberPackageProductEmailDomains[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberPackageProductEmailDomains[].emailDomain` (Required when parent is present) | `string` |   |
| `[].memberPackageProductEmailDomains[].updatedBy` (Required when parent is present) | `number` |   |
| `[].memberPackageProductEmailDomains[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].memberPackageProductEmailDomains[].id` (Required when parent is present) | `number` |   |
| `[].memberPackageProductEmailDomains[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductEmailDomains[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductEmailDomains[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductEmailDomains[].metaData` (Required when parent is present) | `object` |   |
| `[].memberPackageProductIps` (Required when parent is present) | `array of MemberPackageProductIp` |   |
| `[].memberPackageProductIps[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberPackageProductIps[].ipRange` (Required when parent is present) | `string` |   |
| `[].memberPackageProductIps[].label` (Required when parent is present) | `string` |   |
| `[].memberPackageProductIps[].updatedBy` (Required when parent is present) | `number` |   |
| `[].memberPackageProductIps[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].memberPackageProductIps[].id` (Required when parent is present) | `number` |   |
| `[].memberPackageProductIps[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductIps[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductIps[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProductIps[].metaData` (Required when parent is present) | `object` |   |
| `[].memberPackage` (Required when parent is present) | `MemberPackage` |   |
| `[].memberPackage.memberId` (Required when parent is present) | `string` |   |
| `[].memberPackage.packageId` (Required when parent is present) | `number` |   |
| `[].memberPackage.subscriptionPlanId` (Required when parent is present) | `number` |   |
| `[].memberPackage.recurringPrice` (Required when parent is present) | `number` |   |
| `[].memberPackage.hasCustomPrice` (Required when parent is present) | `boolean` |   |
| `[].memberPackage.currentPrice` (Required when parent is present) | `number` |   |
| `[].memberPackage.status` (Required when parent is present) | `string` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `[].memberPackage.autoRenew` (Required when parent is present) | `boolean` |   |
| `[].memberPackage.nextRenewal` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.renewalAnchorDate` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.currentPeriodStart` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.forcedStopDate` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.cancelledAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.isCustomized` (Required when parent is present) | `boolean` |   |
| `[].memberPackage.paymentProvider` (Required when parent is present) | `string` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `[].memberPackage.reference` (Required when parent is present) | `string` |   |
| `[].memberPackage.lastActiveAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.isOnIntroPeriod` (Required when parent is present) | `boolean` |   |
| `[].memberPackage.nextOrderDate` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.scheduledActivationDate` (Required when parent is present) | `string (date-time)` | Can be null |
| `[].memberPackage.package` (Required when parent is present) | `Package` | Nested fields omitted: field limit. |
| `[].memberPackage.subscriptionPlan` (Required when parent is present) | `SubscriptionPlan` | Nested fields omitted: field limit. |
| `[].memberPackage.member` (Required when parent is present) | `Member` | Nested fields omitted: field limit. |
| `[].memberPackage.memberPackageProducts` (Required when parent is present) | `array of MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].memberPackage.orders` (Required when parent is present) | `array of Order` | Nested fields omitted: field limit. |
| `[].memberPackage.memberPackageProviderPayment` (Required when parent is present) | `MemberPackageProviderPayment` | Nested fields omitted: field limit. |
| `[].memberPackage.changes` (Required when parent is present) | `array of MemberPackageChange` | Nested fields omitted: field limit. |
| `[].memberPackage.histories` (Required when parent is present) | `array of MemberPackageHistory` | Nested fields omitted: field limit. |
| `[].memberPackage.tenantId` (Required when parent is present) | `number` |   |
| `[].memberPackage.tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `[].memberPackage.id` (Required when parent is present) | `number` |   |
| `[].memberPackage.createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackage.metaData` (Required when parent is present) | `object` |   |
| `[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `[].seats` (Required when parent is present) | `array of MemberPackageProductSeat` | Nested fields omitted: field limit. |
| `[].recipients` (Required when parent is present) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `[].id` (Required when parent is present) | `number` |   |
| `[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].metaData` (Required when parent is present) | `object` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

memberEmailMissing, invalidEmailDomain

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"memberEmailMissing"`, `"invalidEmailDomain"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "memberEmailMissing",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/available-subscriptions-to-join \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "memberPackageId": 0,
    "productId": 0,
    "price": 0,
    "recurringPrice": 0,
    "quantity": 0,
    "hasAccess": true,
    "shippingCountry": "string",
    "shippingProvider": "Helthjem",
    "allowDistributorToUpdateDeliveryAddress": true,
    "memberPackageProductEmailDomains": [],
    "memberPackageProductIps": [],
    "memberPackage": {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    },
    "product": {
      "properties": {},
      "shippingCharges": [],
      "entityTags": [],
      "subscriptionPlanProducts": [],
      "packageProducts": [],
      "memberPackageProducts": [],
      "orderItem": [],
      "productContents": [],
      "metaData": {}
    },
    "seats": [],
    "recipients": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
]
```

<a id="post-api-v1-members-profile-join-subscriptions"></a>
## Join selected available subscriptions (create product seats)

`POST /api/v1/members/profile/join-subscriptions`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `JoinSubscriptionsRequestDto`

| Name | Type | Description |
| --- | --- | --- |
| `memberPackageProductIds` (Required) | `array of number` | Array of MemberPackageProduct IDs to join · `minItems`: `1` |

**Example request body**

`application/json`

```json
{
  "memberPackageProductIds": [
    12,
    45
  ]
}
```

### Responses

#### 201

Content type: `application/json` · `array of MemberPackageProductSeat`

| Name | Type | Description |
| --- | --- | --- |
| `[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberId` (Required when parent is present) | `string` |   |
| `[].email` (Required when parent is present) | `string` | Can be null |
| `[].accepted` (Required when parent is present) | `boolean` |   |
| `[].acceptedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].expiresAt` (Required when parent is present) | `string (date-time)` |   |
| `[].uuid` (Required when parent is present) | `string` |   |
| `[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` |   |
| `[].memberPackageProduct.memberPackageId` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.productId` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.price` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.recurringPrice` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.quantity` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.hasAccess` (Required when parent is present) | `boolean` |   |
| `[].memberPackageProduct.shippingCountry` (Required when parent is present) | `string` |   |
| `[].memberPackageProduct.shippingProvider` (Required when parent is present) | `string` | Allowed values: `"Helthjem"`, `"Bring - Posten"`, `"Distribution Innovation"` |
| `[].memberPackageProduct.allowDistributorToUpdateDeliveryAddress` (Required when parent is present) | `boolean` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains` (Required when parent is present) | `array of MemberPackageProductEmailDomain` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].emailDomain` (Required when parent is present) | `string` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].updatedBy` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].id` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductEmailDomains[].metaData` (Required when parent is present) | `object` |   |
| `[].memberPackageProduct.memberPackageProductIps` (Required when parent is present) | `array of MemberPackageProductIp` |   |
| `[].memberPackageProduct.memberPackageProductIps[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductIps[].ipRange` (Required when parent is present) | `string` |   |
| `[].memberPackageProduct.memberPackageProductIps[].label` (Required when parent is present) | `string` |   |
| `[].memberPackageProduct.memberPackageProductIps[].updatedBy` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductIps[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].memberPackageProduct.memberPackageProductIps[].id` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.memberPackageProductIps[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductIps[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductIps[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.memberPackageProductIps[].metaData` (Required when parent is present) | `object` |   |
| `[].memberPackageProduct.memberPackage` (Required when parent is present) | `MemberPackage` | Nested fields omitted: field limit. |
| `[].memberPackageProduct.product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `[].memberPackageProduct.seats` (Required when parent is present) | `array of MemberPackageProductSeat` | Recursive schema; nested fields are not repeated. |
| `[].memberPackageProduct.recipients` (Required when parent is present) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `[].memberPackageProduct.id` (Required when parent is present) | `number` |   |
| `[].memberPackageProduct.createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].memberPackageProduct.metaData` (Required when parent is present) | `object` |   |
| `[].member` (Required when parent is present) | `Member` |   |
| `[].member.userId` (Required when parent is present) | `number` | Can be null |
| `[].member.memberNumber` (Required when parent is present) | `number` | Can be null |
| `[].member.tenantId` (Required when parent is present) | `number` |   |
| `[].member.externalId` (Required when parent is present) | `string` | Can be null |
| `[].member.fullName` (Required when parent is present) | `string` |   |
| `[].member.nickName` (Required when parent is present) | `string` |   |
| `[].member.avatar` (Required when parent is present) | `string` |   |
| `[].member.email` (Required when parent is present) | `string` |   |
| `[].member.birthDate` (Required when parent is present) | `string (date-time)` | Can be null |
| `[].member.phone` (Required when parent is present) | `string` |   |
| `[].member.isCompany` (Required when parent is present) | `boolean` |   |
| `[].member.companyName` (Required when parent is present) | `string` | Can be null |
| `[].member.organizationNo` (Required when parent is present) | `string` | Can be null |
| `[].member.deleteAfterExpiration` (Required when parent is present) | `boolean` |   |
| `[].member.customPropertyValues` (Required when parent is present) | `object` |   |
| `[].member.productRecipients` (Required when parent is present) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `[].member.id` (Required when parent is present) | `string` |   |
| `[].member.createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].member.updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].member.deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].member.metaData` (Required when parent is present) | `object` |   |
| `[].id` (Required when parent is present) | `number` |   |
| `[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].metaData` (Required when parent is present) | `object` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, seatLimitReached

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"seatLimitReached"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"unauthorized"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "unauthorized",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, productNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notFound"`, `"productNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/join-subscriptions \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "memberPackageProductIds": [
    12,
    45
  ]
}'
```

### Example response

201 · `application/json`

```json
[
  {
    "memberPackageProductId": 0,
    "memberId": "string",
    "email": "string",
    "accepted": true,
    "acceptedAt": "2019-08-24T14:15:22Z",
    "expiresAt": "2019-08-24T14:15:22Z",
    "uuid": "string",
    "memberPackageProduct": {
      "memberPackageProductEmailDomains": [],
      "memberPackageProductIps": [],
      "seats": [],
      "recipients": [],
      "metaData": {}
    },
    "member": {
      "customPropertyValues": {},
      "productRecipients": [],
      "metaData": {}
    },
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
]
```

<a id="get-api-v1-members-profile"></a>
## Get logged in member personal info

`GET /api/v1/members/profile`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `MemberPersonalInfo`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `string` |   |
| `fullName` (Required) | `string` |   |
| `nickName` (Required) | `string` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `avatar` (Required) | `string` |   |
| `countryCode` | `string` |   |
| `birthDate` (Required) | `string (date-time)` |   |
| `deleteAfterExpiration` (Required) | `boolean` |   |
| `isCompany` (Required) | `boolean` |   |
| `companyName` (Required) | `string` |   |
| `organizationNo` (Required) | `string` |   |
| `customPropertyValues` (Required) | `object` |   |
| `emailVerified` | `string` |   |
| `phoneVerified` (Required) | `boolean` |   |
| `memberNumber` (Required) | `number` |   |
| `userId` (Required) | `number` |   |
| `emailStatus` | `SENDGRID_MAIL_EVENTS` | Allowed values: `"scheduled"`, `"processed"`, `"dropped"`, `"deferred"`, `"bounce"`, `"hard_bounce"`, `"soft_bounce"`, `"spamreport"`, `"delivered"`, `"unsubscribe"`, `"group_unsubscribe"`, `"group_resubscribe"`, `"open"`, `"failed"`, `"click"`, `"skipped_bounced"` |
| `email` (Required) | `string (email)` |   |
| `phone` (Required) | `string` |   |
| `address` (Required) | `ProfileAddress` |   |
| `address.line1` (Required) | `string` |   |
| `address.line2` (Required) | `string` |   |
| `address.city` (Required) | `string` |   |
| `address.postCode` (Required) | `string` |   |
| `address.country` (Required) | `string` |   |
| `address.name` (Required) | `string` |   |
| `address.email` (Required) | `string` |   |
| `address.companyName` (Required) | `string` |   |
| `address.organizationNo` (Required) | `string` |   |
| `address.invoiceReference` | `string` |   |
| `address.isSynced` | `boolean` |   |
| `address.lastSyncedAt` | `string (date-time)` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notFound"`, `"memberNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="patch-api-v1-members-profile"></a>
## Update logged in member profile

`PATCH /api/v1/members/profile`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `UpdateMemberPersonalInfo`

| Name | Type | Description |
| --- | --- | --- |
| `fullName` | `string` |   |
| `email` | `string (email)` | `maxLength`: `255` |
| `birthDate` | `string (date-time)` |   |
| `nickName` | `string` | `maxLength`: `255` |
| `phone` | `string` | `maxLength`: `32` |
| `countryCode` | `string` | `maxLength`: `8` |
| `isCompany` | `boolean` |   |
| `companyName` | `string` | `maxLength`: `255` |
| `address` | `MemberAddressDto` |   |
| `address.line1` | `string` | `maxLength`: `255` |
| `address.line2` | `string` | `maxLength`: `255` |
| `address.city` | `string` | `maxLength`: `255` |
| `address.state` | `string` | `maxLength`: `255` |
| `address.postCode` | `string` | `maxLength`: `32` |
| `address.country` | `string` | `maxLength`: `64` |
| `address.name` | `string` | `maxLength`: `255` |
| `address.email` | `string (email)` | `maxLength`: `255` |
| `address.organizationNo` | `string` | `maxLength`: `64` |
| `address.companyName` | `string` | `maxLength`: `255` |
| `address.invoiceReference` | `string` | `maxLength`: `255` |
| `customPropertyValues` | `object` |   |
| `deleteAfterExpiration` | `boolean` |   |

**Example request body**

`application/json`

```json
{
  "fullName": "<fullName>",
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "customPropertyValues": {},
  "deleteAfterExpiration": true
}
```

### Responses

#### 200

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, alreadyExists, emailChangeRequiresVerification, phoneChangeRequiresVerification

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"alreadyExists"`, `"emailChangeRequiresVerification"`, `"phoneChangeRequiresVerification"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "fullName": "<fullName>",
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "customPropertyValues": {},
  "deleteAfterExpiration": true
}'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="get-api-v1-members-profile-subscriptions"></a>
## Get logged in member subscriptions

`GET /api/v1/members/profile/subscriptions`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `status` | query | `member_package_status_enum` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `statusGroup` | query | `subscription_access_group` | Coarse Active/Inactive filter used by the member subscription list. Takes precedence over `status`. · Allowed values: `"active"`, `"inactive"` |

### Responses

#### 200

Content type: `application/json` · `array of SubscriptionListItem`

| Name | Type | Description |
| --- | --- | --- |
| `[].id` (Required when parent is present) | `number` |   |
| `[].packageId` (Required when parent is present) | `number` |   |
| `[].name` (Required when parent is present) | `string` |   |
| `[].slug` (Required when parent is present) | `string` |   |
| `[].status` (Required when parent is present) | `string` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `[].nextRenewal` (Required when parent is present) | `string (date-time)` |   |
| `[].hasChange` (Required when parent is present) | `boolean` |   |
| `[].changePlanName` | `string` | Can be null |
| `[].scheduledActivationDate` | `string (date-time)` | Can be null |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/subscriptions \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "id": 0,
    "packageId": 0,
    "name": "string",
    "slug": "string",
    "status": "active",
    "nextRenewal": "2019-08-24T14:15:22Z",
    "hasChange": true,
    "changePlanName": "string",
    "scheduledActivationDate": "2019-08-24T14:15:22Z"
  }
]
```

<a id="get-api-v1-members-profile-invoices"></a>
## Get logged in member invoices

`GET /api/v1/members/profile/invoices`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of InvoiceResponse`

| Name | Type | Description |
| --- | --- | --- |
| `[].id` (Required when parent is present) | `number` |   |
| `[].type` (Required when parent is present) | `TransactionResponseType` | Allowed values: `"payment"`, `"refund"`, `"invoice"`, `"credit_note"`, `"rounding_adjustment"` |
| `[].invoiceNo` (Required when parent is present) | `number` |   |
| `[].invoiceDate` (Required when parent is present) | `string (date-time)` |   |
| `[].packName` (Required when parent is present) | `string` |   |
| `[].memberPackageId` (Required when parent is present) | `number` |   |
| `[].memberId` (Required when parent is present) | `string` |   |
| `[].memberEmail` (Required when parent is present) | `string` |   |
| `[].memberName` | `string` |   |
| `[].totalAmount` (Required when parent is present) | `number` |   |
| `[].status` (Required when parent is present) | `INVOICE_STATUS` | Allowed values: `"paid"`, `"unpaid"`, `"over-due"`, `"over-paid"`, `"partially-paid"`, `"refunded"`, `"credited"`, `"partially-credited"` |
| `[].memberPackageStatus` | `MEMBER_PACKAGE_STATUS` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `[].deliveryStatus` | `INVOICE_DELIVERY_STATUS` | Allowed values: `"sent_via_einvoice"`, `"sent_via_email"`, `"sent_via_sms"`, `"sent_via_payment_gateway"`, `"sent_manually"`, `"in_progress"`, `"not_sent"` |
| `[].isCreditNote` (Required when parent is present) | `boolean` |   |
| `[].referencedInvoiceNumber` | `number` |   |
| `[].kid` (Required when parent is present) | `string` |   |
| `[].note` (Required when parent is present) | `string` |   |
| `[].paymentProvider` (Required when parent is present) | `PAYMENT_PROVIDER` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `[].memberNumber` (Required when parent is present) | `number` |   |
| `[].invoiceDueDate` | `string (date-time)` |   |
| `[].orderId` (Required when parent is present) | `number` |   |
| `[].autoGenerated` (Required when parent is present) | `boolean` |   |
| `[].creditNoteNumbers` | `array of number` | Numbers of the credit notes referencing this invoice. Only populated by endpoints that load credit notes (currently the member invoice list); undefined elsewhere does not mean nothing was credited. |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/invoices \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "id": 0,
    "type": "payment",
    "invoiceNo": 0,
    "invoiceDate": "2019-08-24T14:15:22Z",
    "packName": "string",
    "memberPackageId": 0,
    "memberId": "string",
    "memberEmail": "string",
    "memberName": "<memberName>",
    "totalAmount": 0,
    "status": "paid",
    "memberPackageStatus": "active",
    "deliveryStatus": "sent_via_einvoice",
    "isCreditNote": true,
    "referencedInvoiceNumber": 0,
    "kid": "string",
    "note": "string",
    "paymentProvider": "stripe",
    "memberNumber": 0,
    "invoiceDueDate": "2019-08-24T14:15:22Z",
    "orderId": 0,
    "autoGenerated": true,
    "creditNoteNumbers": []
  }
]
```

<a id="get-api-v1-members-profile-orders"></a>
## Get logged in member orders

`GET /api/v1/members/profile/orders`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `page` | query | `number` | Default: `1` · `minimum`: `1` |
| `take` | query | `number` | Default: `10` · `minimum`: `1`, `maximum`: `50` |
| `orderBy` | query | `string` | Allowed values: `"createdAt"`, `"id"`, `"updatedAt"` · Default: `"createdAt"` |
| `orderDirection` | query | `string` | Allowed values: `"asc"`, `"desc"` · Default: `"desc"` |

### Responses

#### 200

Content type: `application/json` · `OrderResponsePaginated`

| Name | Type | Description |
| --- | --- | --- |
| `items` (Required) | `array of OrderResponse` |   |
| `items[].id` (Required when parent is present) | `number` |   |
| `items[].orderDate` (Required when parent is present) | `string (date-time)` |   |
| `items[].orderNumber` (Required when parent is present) | `number` |   |
| `items[].paymentStatus` (Required when parent is present) | `PAYMENT_STATUS` | Allowed values: `"pending"`, `"succeeded"`, `"failed"` |
| `items[].amount` (Required when parent is present) | `number` |   |
| `items[].credit` (Required when parent is present) | `number` |   |
| `items[].debit` (Required when parent is present) | `number` |   |
| `items[].packageName` (Required when parent is present) | `string` |   |
| `items[].planName` (Required when parent is present) | `string` |   |
| `items[].paymentProvider` (Required when parent is present) | `PAYMENT_PROVIDER` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `items[].currency` (Required when parent is present) | `string` |   |
| `items[].billingPeriodInfo` (Required when parent is present) | `BillingPeriodInfo` |   |
| `items[].billingPeriodInfo.billingPeriod` (Required when parent is present) | `string` |   |
| `items[].billingPeriodInfo.customBillingPeriod` (Required when parent is present) | `BillingPeriodDetails` | Nested fields omitted: depth limit. |
| `items[].allowedPaymentProviders` (Required when parent is present) | `array of PAYMENT_PROVIDER` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `items[].tenantId` (Required when parent is present) | `number` |   |
| `items[].upgradeData` | `MemberPackageChangeData` |   |
| `items[].upgradeData.planChange` (Required when parent is present) | `PlanChange` | Nested fields omitted: depth limit. |
| `items[].upgradeData.productChange` (Required when parent is present) | `array of ProductChange` | Nested fields omitted: depth limit. |
| `items[].upgradeData.optionalProducts` (Required when parent is present) | `array of OptionalProductWithQuantity` | Nested fields omitted: depth limit. |
| `items[].upgradeData.planProductPrices` | `array of PlanProductPriceSnapshot` | Nested fields omitted: depth limit. |
| `items[].upgradeData.seatTransferMap` | `array of SeatTransferMappingDto` | Nested fields omitted: depth limit. |
| `items[].memberPackageId` (Required when parent is present) | `number` |   |
| `items[].recurringPriceAtOrder` (Required when parent is present) | `number` |   |
| `items[].paymentId` (Required when parent is present) | `number` |   |
| `items[].paymentToken` (Required when parent is present) | `string` |   |
| `items[].type` (Required when parent is present) | `string` | Allowed values: `"initial"`, `"recurrent"`, `"upgrade"`, `"credit-note"`, `"standalone"` |
| `items[].orderItems` (Required when parent is present) | `array of OrderItem` |   |
| `items[].orderItems[].orderId` (Required when parent is present) | `number` |   |
| `items[].orderItems[].productId` (Required when parent is present) | `number` |   |
| `items[].orderItems[].name` (Required when parent is present) | `string` |   |
| `items[].orderItems[].price` (Required when parent is present) | `number` |   |
| `items[].orderItems[].tax` (Required when parent is present) | `number` |   |
| `items[].orderItems[].quantity` (Required when parent is present) | `number` |   |
| `items[].orderItems[].note` (Required when parent is present) | `string` |   |
| `items[].orderItems[].order` (Required when parent is present) | `Order` | Nested fields omitted: depth limit. |
| `items[].orderItems[].product` (Required when parent is present) | `Product` | Nested fields omitted: depth limit. |
| `items[].orderItems[].id` (Required when parent is present) | `number` |   |
| `items[].orderItems[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].orderItems[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].orderItems[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].orderItems[].metaData` (Required when parent is present) | `object` |   |
| `items[].payment` (Required when parent is present) | `Payment` | Nested fields omitted: field limit. |
| `items[].memberPackage` (Required when parent is present) | `MemberPackage` | Nested fields omitted: field limit. |
| `items[].invoice` (Required when parent is present) | `Invoice` | Nested fields omitted: field limit. |
| `items[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `items[].memberPackageChange` (Required when parent is present) | `MemberPackageChange` |   |
| `items[].memberPackageChange.isImmediate` (Required when parent is present) | `boolean` |   |
| `items[].memberPackageChange.changeInPrice` (Required when parent is present) | `number` |   |
| `items[].memberPackageChange.status` (Required when parent is present) | `string` | Allowed values: `"CREATED"`, `"PAYMENT_PENDING"`, `"CONFIRMATION_PENDING_FOR_NEXT_RENEWAL"`, `"PENDING_FOR_NEXT_RENEWAL"`, `"COMPLETED"`, `"CANCELLED"` |
| `items[].memberPackageChange.data` (Required when parent is present) | `MemberPackageChangeData` | Nested fields omitted: depth limit. |
| `items[].memberPackageChange.updatedBy` (Required when parent is present) | `number` |   |
| `items[].memberPackageChange.memberPackage` (Required when parent is present) | `MemberPackage` | Nested fields omitted: depth limit. |
| `items[].memberPackageChange.order` (Required when parent is present) | `Order` | Nested fields omitted: depth limit. |
| `items[].memberPackageChange.id` (Required when parent is present) | `number` |   |
| `items[].memberPackageChange.createdAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].memberPackageChange.updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].memberPackageChange.deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].memberPackageChange.metaData` (Required when parent is present) | `object` |   |
| `items[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].metaData` (Required when parent is present) | `object` |   |
| `meta` (Required) | `PageMeta` |   |
| `meta.page` (Required) | `number` |   |
| `meta.take` (Required) | `number` |   |
| `meta.count` (Required) | `number` |   |
| `meta.pageCount` (Required) | `number` |   |
| `meta.hasPreviousPage` (Required) | `boolean` |   |
| `meta.hasNextPage` (Required) | `boolean` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/orders \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "items": [
    {
      "allowedPaymentProviders": [],
      "orderItems": [],
      "metaData": {}
    }
  ],
  "meta": {
    "page": 0,
    "take": 0,
    "count": 0,
    "pageCount": 0,
    "hasPreviousPage": true,
    "hasNextPage": true
  }
}
```

<a id="get-api-v1-members-profile-info-with-content-access"></a>
## Get logged in member info with content access

`GET /api/v1/members/profile/info-with-content-access`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `MemberWithSubscriptions`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `string` |   |
| `fullName` (Required) | `string` |   |
| `memberNumber` (Required) | `number` |   |
| `userType` (Required) | `UserType` | Allowed values: `"system_admin"`, `"tenant_admin"`, `"member"`, `"not_set"` |
| `userId` (Required) | `number` |   |
| `nickName` (Required) | `string` |   |
| `avatar` (Required) | `string` |   |
| `subscriptions` (Required) | `array of ActiveSubscriptionInfo` |   |
| `subscriptions[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptions[].activatedAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptions[].expiresAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptions[].autoRenew` (Required when parent is present) | `boolean` |   |
| `subscriptions[].subscriptionId` (Required when parent is present) | `number` |   |
| `subscriptions[].packageId` (Required when parent is present) | `number` |   |
| `subscriptions[].packageName` (Required when parent is present) | `string` |   |
| `subscriptions[].status` (Required when parent is present) | `MEMBER_PACKAGE_STATUS` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `subscriptions[].subscriptionProducts` (Required when parent is present) | `array of SubscriptionPlanProducts` |   |
| `subscriptions[].subscriptionProducts[].id` (Required when parent is present) | `number` |   |
| `subscriptions[].subscriptionProducts[].name` (Required when parent is present) | `string` |   |
| `subscriptions[].subscriptionProducts[].hasAccess` (Required when parent is present) | `boolean` |   |
| `customPropertyValues` (Required) | `object` |   |
| `contentChannels` | `array of ContentChannel` |   |
| `contentChannels[].id` (Required when parent is present) | `number` |   |
| `contentChannels[].name` (Required when parent is present) | `string` |   |
| `contentChannels[].description` (Required when parent is present) | `string` |   |
| `contentChannels[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `contentChannels[].tenantId` (Required when parent is present) | `number` |   |
| `contentChannels[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `contentChannels[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `podcasts` | `array of PodcastDto` |   |
| `podcasts[].id` (Required when parent is present) | `number` |   |
| `podcasts[].podcastUrlSignature` (Required when parent is present) | `string` |   |
| `podcasts[].imageUrl` (Required when parent is present) | `string` |   |
| `podcasts[].name` (Required when parent is present) | `string` |   |
| `podcasts[].description` (Required when parent is present) | `string` |   |
| `podcasts[].sortOrder` (Required when parent is present) | `number` |   |
| `podcasts[].showUrl` (Required when parent is present) | `string` |   |
| `consents` | `array of MemberConsentDto` |   |
| `consents[].id` (Required when parent is present) | `number` |   |
| `consents[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `consents[].title` (Required when parent is present) | `string` |   |
| `consents[].description` (Required when parent is present) | `string` |   |
| `consents[].image` (Required when parent is present) | `string` |   |
| `consents[].showOnCheckoutPage` (Required when parent is present) | `boolean` |   |
| `consents[].showOnMyPage` (Required when parent is present) | `boolean` |   |
| `consents[].status` (Required when parent is present) | `object` |   |
| `consents[].sortOrder` (Required when parent is present) | `number` |   |
| `consents[].frequency` (Required when parent is present) | `string` |   |
| `consents[].newsletterProviderConfigId` (Required when parent is present) | `number` | Can be null |
| `consents[].consentStatus` (Required when parent is present) | `string` |   |
| `consents[].purpose` (Required when parent is present) | `string` | Allowed values: `"marketing_and_newsletter"`, `"consent"` |
| `consents[].visibility` (Required when parent is present) | `string` | Allowed values: `"subscriber"`, `"nonSubscriber"`, `"all"` |
| `phone` (Required) | `string` |   |
| `email` (Required) | `string (email)` |   |
| `address` (Required) | `ProfileAddress` |   |
| `address.line1` (Required) | `string` |   |
| `address.line2` (Required) | `string` |   |
| `address.city` (Required) | `string` |   |
| `address.postCode` (Required) | `string` |   |
| `address.country` (Required) | `string` |   |
| `address.name` (Required) | `string` |   |
| `address.email` (Required) | `string` |   |
| `address.companyName` (Required) | `string` |   |
| `address.organizationNo` (Required) | `string` |   |
| `address.invoiceReference` | `string` |   |
| `address.isSynced` | `boolean` |   |
| `address.lastSyncedAt` | `string (date-time)` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

memberNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"memberNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "memberNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/info-with-content-access \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "memberNumber": 0,
  "userType": "system_admin",
  "userId": 0,
  "nickName": "string",
  "avatar": "string",
  "subscriptions": [
    {
      "subscriptionProducts": []
    }
  ],
  "customPropertyValues": {},
  "contentChannels": [
    {}
  ],
  "podcasts": [
    {}
  ],
  "consents": [
    {
      "status": {}
    }
  ],
  "phone": "<phone>",
  "email": "user@example.com",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="get-api-v1-members-profile-info-with-active-subscriptions"></a>
## Get logged in members basic info and active packages

`GET /api/v1/members/profile/info-with-active-subscriptions`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `MemberWithSubscriptions`

Same fields as [Get logged in member info with content access (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-info-with-content-access).

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

memberNotFound

Same fields as [Get logged in member info with content access (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-info-with-content-access).

**Example response**

`application/json`

```json
{
  "messageCode": "memberNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/info-with-active-subscriptions \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "memberNumber": 0,
  "userType": "system_admin",
  "userId": 0,
  "nickName": "string",
  "avatar": "string",
  "subscriptions": [
    {
      "subscriptionProducts": []
    }
  ],
  "customPropertyValues": {},
  "contentChannels": [
    {}
  ],
  "podcasts": [
    {}
  ],
  "consents": [
    {
      "status": {}
    }
  ],
  "phone": "<phone>",
  "email": "user@example.com",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="post-api-v1-members-profile-avatar"></a>
## Set logged in member avatar or profile picture

`POST /api/v1/members/profile/avatar`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `multipart/form-data` · Required · `UpdateAvatarDto`

| Name | Type | Description |
| --- | --- | --- |
| `image` | `file` |   |
| `imagePreview` | `string` |   |
| `previousImageUrl` | `string` |   |

### Responses

#### 201

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invalidFileType

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"invalidFileType"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

memberNotFound

Same fields as [Get logged in member info with content access (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-info-with-content-access).

**Example response**

`application/json`

```json
{
  "messageCode": "memberNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 413

fileSizeExceeded

#### 415

invalidFileType

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/avatar \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --form 'image=@<file>'
```

### Example response

201 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="post-api-v1-members-profile-email-pre-verify"></a>
## Request email pre-verification

`POST /api/v1/members/profile/email/pre-verify`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `UpdateMemberEmailBodyDto`

| Name | Type | Description |
| --- | --- | --- |
| `email` (Required) | `string (email)` |   |

**Example request body**

`application/json`

```json
{
  "email": "user@example.com"
}
```

### Responses

#### 201

Content type: `application/json` · `OTPSendResponseDto`

| Name | Type | Description |
| --- | --- | --- |
| `hash` (Required) | `string` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

alreadyExists, retryAfter5Mins, emailAlreadyVerified

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"alreadyExists"`, `"retryAfter5Mins"`, `"emailAlreadyVerified"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "alreadyExists",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/email/pre-verify \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "email": "user@example.com"
}'
```

### Example response

201 · `application/json`

```json
{
  "hash": "string"
}
```

<a id="patch-api-v1-members-profile-email"></a>
## Update email

`PATCH /api/v1/members/profile/email`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `UpdateMemberEmailDto`

| Name | Type | Description |
| --- | --- | --- |
| `email` (Required) | `string (email)` |   |
| `otp` (Required) | `string` |   |
| `hash` (Required) | `string` |   |

**Example request body**

`application/json`

```json
{
  "email": "user@example.com",
  "otp": "<otp>",
  "hash": "string"
}
```

### Responses

#### 200

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

alreadyExists, invalidOtp, otpExpired

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"alreadyExists"`, `"invalidOtp"`, `"otpExpired"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "alreadyExists",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

updateFailed

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"updateFailed"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "updateFailed",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/email \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "email": "user@example.com",
  "otp": "<otp>",
  "hash": "string"
}'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="post-api-v1-members-profile-phone-pre-verify"></a>
## Request phone pre-verification

`POST /api/v1/members/profile/phone/pre-verify`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `UpdateMemberPhoneBodyDto`

| Name | Type | Description |
| --- | --- | --- |
| `phone` (Required) | `string` |   |
| `language` (Required) | `string` | Allowed values: `"en"`, `"no"`, `"sv"`, `"da"` |

**Example request body**

`application/json`

```json
{
  "phone": "<phone>",
  "language": "en"
}
```

### Responses

#### 201

Content type: `application/json` · `OTPSendResponseDto`

Same fields as [Request email pre-verification (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-email-pre-verify).

#### 400

Content type: `application/json` · `ErrorResponse`

phoneNumberIsInvalid, retryAfter5Mins, phoneAlreadyVerified, dailyLimitReached, hourlyLimitReached

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"phoneNumberIsInvalid"`, `"retryAfter5Mins"`, `"phoneAlreadyVerified"`, `"dailyLimitReached"`, `"hourlyLimitReached"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "phoneNumberIsInvalid",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/phone/pre-verify \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "phone": "<phone>",
  "language": "en"
}'
```

### Example response

201 · `application/json`

```json
{
  "hash": "string"
}
```

<a id="patch-api-v1-members-profile-phone"></a>
## Update phone

`PATCH /api/v1/members/profile/phone`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `UpdateMemberPhoneDto`

| Name | Type | Description |
| --- | --- | --- |
| `phone` (Required) | `string` |   |
| `otp` (Required) | `string` |   |
| `hash` (Required) | `string` |   |

**Example request body**

`application/json`

```json
{
  "phone": "<phone>",
  "otp": "<otp>",
  "hash": "string"
}
```

### Responses

#### 200

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

alreadyExists, invalidOtp, otpExpired

Same fields as [Update email (400)](https://www.subrite.no/developers/member-profile?md=true#patch-api-v1-members-profile-email).

**Example response**

`application/json`

```json
{
  "messageCode": "alreadyExists",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

updateFailed

Same fields as [Update email (500)](https://www.subrite.no/developers/member-profile?md=true#patch-api-v1-members-profile-email).

**Example response**

`application/json`

```json
{
  "messageCode": "updateFailed",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/phone \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "phone": "<phone>",
  "otp": "<otp>",
  "hash": "string"
}'
```

### Example response

200 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="post-api-v1-members-profile-request-account-deletion"></a>
## Request deletion of a member by its own

`POST /api/v1/members/profile/request-account-deletion`

**Authentication:** Bearer token (JWT)

### Responses

#### 201

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/request-account-deletion \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

### Example response

201 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="get-api-v1-members-profile-subscriptions-id"></a>
## Get member subscription details

`GET /api/v1/members/profile/subscriptions/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `SubscriptionDetails`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `packageId` (Required) | `number` |   |
| `name` (Required) | `string` |   |
| `slug` (Required) | `string` |   |
| `subscriptionPlanId` (Required) | `number` |   |
| `subscriptionPlanName` (Required) | `string` |   |
| `recurringPrice` (Required) | `number` |   |
| `autoRenew` (Required) | `boolean` |   |
| `paymentInfo` (Required) | `PaymentInfo` |   |
| `paymentInfo.stripeCardInfo` (Required) | `StripeCardInfo` |   |
| `paymentInfo.stripeCardInfo.brand` (Required) | `string` |   |
| `paymentInfo.stripeCardInfo.expMonth` (Required) | `number` |   |
| `paymentInfo.stripeCardInfo.expYear` (Required) | `number` |   |
| `paymentInfo.stripeCardInfo.last4` (Required) | `string` |   |
| `paymentInfo.stripeCardInfo.country` (Required) | `string` |   |
| `paymentInfo.isLink` (Required) | `boolean` |   |
| `paymentInfo.netsCardInfo` (Required) | `NetsCardInfo` |   |
| `paymentInfo.swedbankpayCardInfo` (Required) | `SwedbankpayCardInfo` | Nested fields omitted: field limit. |
| `paymentInfo.vippsPaymentInfoWithDueCharge` (Required) | `VippsPaymentInfoWithDueCharge` | Nested fields omitted: field limit. |
| `paymentInfo.eInvoicePaymentInfo` (Required) | `EInvoicePaymentInfo` | Nested fields omitted: field limit. |
| `paymentInfo.externalPaymentInfo` (Required) | `ExternalPaymentInfo` |   |
| `paymentInfo.externalPaymentInfo.isPaid` (Required) | `boolean` |   |
| `paymentInfo.externalPaymentInfo.paidTill` (Required) | `string (date-time)` |   |
| `paymentProvider` | `string` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `isOwner` (Required) | `boolean` |   |
| `canRemovePaymentMethod` (Required) | `boolean` | Whether the paying owner may remove the stored payment method. False while the subscription can still be charged, for seat holders, and when nothing is stored. Which provider holds the credential does not gate it: a subscription that has moved to invoice billing can still be holding a card, and that orphan is removable. True for Vipps too, where the stored credential is an agreement rather than a card — name it accordingly in the UI. |
| `hasStoredPaymentMethod` (Required) | `boolean` | Whether a chargeable credential is actually stored. Read from paymentInfo, never from the card details: a Stripe Link method is live while storing no brand or last4, so absent card details do not mean absent credential. The UI needs this to tell "no payment method" from "stored, but nothing to display". |
| `isGroupSubscription` (Required) | `boolean` |   |
| `status` (Required) | `MEMBER_PACKAGE_STATUS` | Allowed values: `"active"`, `"inactive"`, `"pending"`, `"paused"`, `"stopped"`, `"expired"`, `"waiting_for_activation"` |
| `groupOwnerName` (Required) | `string` |   |
| `products` (Required) | `array of ProductPackage` |   |
| `products[].circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `products[].id` (Required when parent is present) | `number` |   |
| `products[].name` (Required when parent is present) | `string` |   |
| `products[].productId` (Required when parent is present) | `number` |   |
| `products[].productCategory` (Required when parent is present) | `string` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `products[].price` (Required when parent is present) | `number` |   |
| `products[].recurringPrice` (Required when parent is present) | `number` |   |
| `products[].quantity` (Required when parent is present) | `number` |   |
| `products[].hasAccess` (Required when parent is present) | `boolean` |   |
| `products[].isOptional` (Required when parent is present) | `boolean` |   |
| `products[].shippingCountry` (Required when parent is present) | `string` |   |
| `products[].shippingCharges` (Required when parent is present) | `array of ShippingCharge` | Nested fields omitted: field limit. |
| `products[].shippingCountries` (Required when parent is present) | `array of string` |   |
| `products[].shippingPrice` (Required when parent is present) | `number` |   |
| `products[].groupInfo` (Required when parent is present) | `GroupSubscriptionResponse` | Nested fields omitted: field limit. |
| `currentPeriodBillingInfo` (Required) | `BillingPeriodInfo` |   |
| `currentPeriodBillingInfo.billingPeriod` (Required) | `string` |   |
| `currentPeriodBillingInfo.customBillingPeriod` (Required) | `BillingPeriodDetails` | Nested fields omitted: field limit. |
| `nextPeriodBillingInfo` (Required) | `BillingPeriodInfo` |   |
| `nextPeriodBillingInfo.billingPeriod` (Required) | `string` |   |
| `nextPeriodBillingInfo.customBillingPeriod` (Required) | `BillingPeriodDetails` | Nested fields omitted: field limit. |
| `currentPeriodPrice` (Required) | `number` |   |
| `nextPeriodPrice` (Required) | `number` |   |
| `nextRenewal` (Required) | `string (date-time)` |   |
| `expiresAt` (Required) | `string (date-time)` |   |
| `changeBlockReason` | `SUBSCRIPTION_CHANGE_BLOCK_REASON` | Allowed values: `"ON_INTRO_PERIOD"`, `"NOT_ACTIVE"`, `"PAST_DUE"`, `"ON_RENEWAL_DAY"`, `"VIPPS_RECURRING_CHARGE_CREATED"`, `"VIPPS_CHARGE_CREATION_WINDOW"`, `"INVOICE_ALREADY_PAID_FOR_NEXT_PERIOD"`, `"INVOICE_NOT_PAID_FOR_CURRENT_PERIOD"` · Can be null |
| `allowSameSubscriptionChange` (Required) | `boolean` |   |
| `allowDifferentSubscriptionSwitch` (Required) | `boolean` |   |
| `allowAdminSameSubscriptionChange` (Required) | `boolean` |   |
| `allowAdminDifferentSubscriptionSwitch` (Required) | `boolean` |   |
| `enableGiftSubscription` (Required) | `boolean` |   |
| `allowFutureStartDate` (Required) | `boolean` |   |
| `allowAutoRenewChange` (Required) | `boolean` |   |
| `changeData` | `ChangeSubscriptionDetails` | Can be null · Nested fields omitted: field limit. |
| `primaryAddress` (Required) | `ProfileAddress` | Nested fields omitted: field limit. |
| `invoiceAddress` (Required) | `ProfileAddress` | Can be null · Nested fields omitted: field limit. |
| `groupOwnerMemberName` (Required) | `string` |   |
| `groupOwnerMemberId` (Required) | `string` |   |
| `groupOwnerMemberNumber` (Required) | `number` |   |
| `groupOwnerPhoneNumber` (Required) | `string` |   |
| `activeSince` (Required) | `string (date-time)` |   |
| `currentPeriodStart` (Required) | `string (date-time)` |   |
| `currentPeriodEnd` (Required) | `string (date-time)` |   |
| `scheduledActivationDate` (Required) | `string (date-time)` |   |
| `lastActiveAt` | `string (date-time)` | Can be null |
| `hasOptionalProductsInPlan` (Required) | `boolean` |   |
| `inviteAcceptedProducts` (Required) | `array of MemberPackageProductSeat` | Nested fields omitted: field limit. |
| `recipientAttachedProducts` (Required) | `array of MemberPackageProduct` | Nested fields omitted: field limit. |
| `isLink` | `boolean` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "packageId": 0,
  "name": "string",
  "slug": "string",
  "subscriptionPlanId": 0,
  "subscriptionPlanName": "string",
  "recurringPrice": 0,
  "autoRenew": true,
  "paymentInfo": {
    "stripeCardInfo": {},
    "isLink": true,
    "netsCardInfo": {},
    "swedbankpayCardInfo": {},
    "vippsPaymentInfoWithDueCharge": {},
    "eInvoicePaymentInfo": {},
    "externalPaymentInfo": {}
  },
  "paymentProvider": "stripe",
  "isOwner": true,
  "canRemovePaymentMethod": true,
  "hasStoredPaymentMethod": true,
  "isGroupSubscription": true,
  "status": "active",
  "groupOwnerName": "<groupOwnerName>",
  "products": [
    {
      "shippingCharges": [],
      "shippingCountries": []
    }
  ],
  "currentPeriodBillingInfo": {
    "billingPeriod": "string",
    "customBillingPeriod": {}
  },
  "nextPeriodBillingInfo": {
    "billingPeriod": "string",
    "customBillingPeriod": {}
  },
  "currentPeriodPrice": 0,
  "nextPeriodPrice": 0,
  "nextRenewal": "2019-08-24T14:15:22Z",
  "expiresAt": "2019-08-24T14:15:22Z",
  "changeBlockReason": "ON_INTRO_PERIOD",
  "allowSameSubscriptionChange": true,
  "allowDifferentSubscriptionSwitch": true,
  "allowAdminSameSubscriptionChange": true,
  "allowAdminDifferentSubscriptionSwitch": true,
  "enableGiftSubscription": true,
  "allowFutureStartDate": true,
  "allowAutoRenewChange": true,
  "changeData": {
    "id": 0,
    "currentPlanName": "string",
    "newPlanName": "string",
    "currentProducts": [],
    "newProducts": [],
    "currentPaymentProviderInfo": {},
    "currentBillingPeriod": {},
    "newBillingPeriod": {},
    "currentPeriodStart": "2019-08-24T14:15:22Z",
    "nextRenewal": "2019-08-24T14:15:22Z",
    "newPeriodStart": "2019-08-24T14:15:22Z",
    "changeInPrice": 0,
    "currentRecurringPrice": 0,
    "nextRenewalPrice": 0,
    "autoRenew": true,
    "newPackageAutoRenew": true,
    "orderId": 0
  },
  "primaryAddress": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  },
  "invoiceAddress": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  },
  "groupOwnerMemberName": "<groupOwnerMemberName>",
  "groupOwnerMemberId": "string",
  "groupOwnerMemberNumber": 0,
  "groupOwnerPhoneNumber": "<groupOwnerPhoneNumber>",
  "activeSince": "2019-08-24T14:15:22Z",
  "currentPeriodStart": "2019-08-24T14:15:22Z",
  "currentPeriodEnd": "2019-08-24T14:15:22Z",
  "scheduledActivationDate": "2019-08-24T14:15:22Z",
  "lastActiveAt": "2019-08-24T14:15:22Z",
  "hasOptionalProductsInPlan": true,
  "inviteAcceptedProducts": [
    {
      "metaData": {}
    }
  ],
  "recipientAttachedProducts": [
    {
      "memberPackageProductEmailDomains": [],
      "memberPackageProductIps": [],
      "seats": [],
      "recipients": [],
      "metaData": {}
    }
  ],
  "isLink": true
}
```

<a id="get-api-v1-members-profile-subscription-plans-all"></a>
## Get subscription plans by filters

`GET /api/v1/members/profile/subscription-plans/all`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `status` | query | `string` | Allowed values: `"draft"`, `"published"`, `"archived"` |
| `allowSameSubscriptionChange` | query | `boolean` |   |
| `allowDifferentSubscriptionSwitch` | query | `boolean` |   |
| `showAsOptionOnSubscriptionSwitch` | query | `boolean` |   |
| `showAsOptionOnAdminSubscriptionSwitch` | query | `boolean` |   |
| `name` | query | `string` |   |

### Responses

#### 200

Content type: `application/json` · `array of SubscriptionPlanResponse`

| Name | Type | Description |
| --- | --- | --- |
| `[].paymentProviders` (Required when parent is present) | `array of PAYMENT_PROVIDER` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `[].name` (Required when parent is present) | `string` |   |
| `[].uuid` (Required when parent is present) | `string` |   |
| `[].billingPeriod` (Required when parent is present) | `string` | Allowed values: `"monthly"`, `"thirty_days"`, `"quarterly"`, `"half_yearly"`, `"yearly"`, `"custom"` |
| `[].billingPeriodUnit` (Required when parent is present) | `string` | Allowed values: `"day"`, `"week"`, `"month"`, `"year"` |
| `[].billingPeriodFrequency` (Required when parent is present) | `number` |   |
| `[].autoRenew` (Required when parent is present) | `boolean` |   |
| `[].status` (Required when parent is present) | `string` | Allowed values: `"draft"`, `"published"`, `"archived"` |
| `[].tenantId` (Required when parent is present) | `number` |   |
| `[].allowSameSubscriptionChange` (Required when parent is present) | `boolean` |   |
| `[].allowDifferentSubscriptionSwitch` (Required when parent is present) | `boolean` |   |
| `[].allowAdminSameSubscriptionChange` (Required when parent is present) | `boolean` |   |
| `[].allowAdminDifferentSubscriptionSwitch` (Required when parent is present) | `boolean` |   |
| `[].enableGiftSubscription` (Required when parent is present) | `boolean` |   |
| `[].allowFutureStartDate` (Required when parent is present) | `boolean` |   |
| `[].showAsOptionOnSubscriptionSwitch` (Required when parent is present) | `boolean` |   |
| `[].showAsOptionOnAdminSubscriptionSwitch` (Required when parent is present) | `boolean` |   |
| `[].offerSwitchOnCheckout` (Required when parent is present) | `boolean` |   |
| `[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `[].entityTags` (Required when parent is present) | `array of EntityTag` |   |
| `[].entityTags[].productId` (Required when parent is present) | `number` |   |
| `[].entityTags[].tagId` (Required when parent is present) | `number` |   |
| `[].entityTags[].subscriptionPlanId` (Required when parent is present) | `number` |   |
| `[].entityTags[].tag` (Required when parent is present) | `Tag` | Nested fields omitted: field limit. |
| `[].entityTags[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `[].entityTags[].subscriptionPlan` (Required when parent is present) | `SubscriptionPlan` | Nested fields omitted: field limit. |
| `[].entityTags[].visualWorkflowId` (Required when parent is present) | `number` |   |
| `[].entityTags[].visualWorkflow` (Required when parent is present) | `VisualWorkflow` | Nested fields omitted: field limit. |
| `[].entityTags[].id` (Required when parent is present) | `number` |   |
| `[].entityTags[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].entityTags[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].entityTags[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].entityTags[].metaData` (Required when parent is present) | `object` |   |
| `[].subscriptionPlanProducts` (Required when parent is present) | `array of SubscriptionPlanProduct` |   |
| `[].subscriptionPlanProducts[].subscriptionPlanId` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].productId` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].price` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].properties` (Required when parent is present) | `OptionalProductProperties` |   |
| `[].subscriptionPlanProducts[].properties.isRequired` (Required when parent is present) | `boolean` |   |
| `[].subscriptionPlanProducts[].properties.quantityRange` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].subscriptionPlan` (Required when parent is present) | `SubscriptionPlan` | Nested fields omitted: field limit. |
| `[].subscriptionPlanProducts[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `[].subscriptionPlanProducts[].tenantId` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `[].subscriptionPlanProducts[].id` (Required when parent is present) | `number` |   |
| `[].subscriptionPlanProducts[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].subscriptionPlanProducts[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].subscriptionPlanProducts[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].subscriptionPlanProducts[].metaData` (Required when parent is present) | `object` |   |
| `[].packages` (Required when parent is present) | `array of Package` | Nested fields omitted: field limit. |
| `[].memberPackages` (Required when parent is present) | `array of MemberPackage` | Nested fields omitted: field limit. |
| `[].id` (Required when parent is present) | `number` |   |
| `[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].metaData` (Required when parent is present) | `object` |   |
| `[].subscriptionCount` (Required when parent is present) | `number` |   |
| `[].products` (Required when parent is present) | `array of SubscriptionProduct` |   |
| `[].products[].circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `[].products[].productId` (Required when parent is present) | `number` |   |
| `[].products[].name` (Required when parent is present) | `string` |   |
| `[].products[].price` (Required when parent is present) | `number` |   |
| `[].products[].currency` (Required when parent is present) | `string` |   |
| `[].products[].isOptional` (Required when parent is present) | `boolean` |   |
| `[].products[].basePrice` (Required when parent is present) | `number` |   |
| `[].products[].properties` (Required when parent is present) | `OptionalProductProperties` |   |
| `[].products[].properties.isRequired` (Required when parent is present) | `boolean` |   |
| `[].products[].properties.quantityRange` (Required when parent is present) | `number` |   |
| `[].products[].shippingCharges` (Required when parent is present) | `array of ShippingCharge` |   |
| `[].products[].shippingCharges[].country` (Required when parent is present) | `string` |   |
| `[].products[].shippingCharges[].charge` (Required when parent is present) | `number` |   |
| `[].products[].productCategory` (Required when parent is present) | `string` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `[].products[].tax` (Required when parent is present) | `number` |   |
| `[].products[].description` (Required when parent is present) | `string` |   |
| `[].products[].maxQuantityPerOrder` (Required when parent is present) | `number` |   |
| `[].tags` | `array of string` |   |
| `[].price` (Required when parent is present) | `number` |   |
| `[].hasOptionalProducts` (Required when parent is present) | `boolean` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/subscription-plans/all \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "paymentProviders": [],
    "name": "string",
    "uuid": "string",
    "billingPeriod": "monthly",
    "billingPeriodUnit": "day",
    "billingPeriodFrequency": 0,
    "autoRenew": true,
    "status": "draft",
    "tenantId": 0,
    "allowSameSubscriptionChange": true,
    "allowDifferentSubscriptionSwitch": true,
    "allowAdminSameSubscriptionChange": true,
    "allowAdminDifferentSubscriptionSwitch": true,
    "enableGiftSubscription": true,
    "allowFutureStartDate": true,
    "showAsOptionOnSubscriptionSwitch": true,
    "showAsOptionOnAdminSubscriptionSwitch": true,
    "offerSwitchOnCheckout": true,
    "tenant": {
      "additionalFeatures": [],
      "disabledFeatures": [],
      "taxRates": [],
      "products": [],
      "users": [],
      "members": [],
      "roles": [],
      "subscriptionPlans": [],
      "packages": [],
      "invoices": [],
      "orders": [],
      "paymentProviders": [],
      "newslettersProviderConfig": [],
      "paymentProviderConfigs": [],
      "oidcClients": [],
      "oauthProviders": [],
      "activityLogs": [],
      "m2m_api_clients": [],
      "customProperties": [],
      "consents": [],
      "communicationTemplates": [],
      "additionalHostnames": [],
      "exportHistory": [],
      "arReportHistory": [],
      "mypageCardsSettings": [],
      "webhooks": [],
      "customOrders": [],
      "customOrderSources": [],
      "brandKits": [],
      "communicationReceivers": [],
      "metaData": {}
    },
    "entityTags": [],
    "subscriptionPlanProducts": [],
    "packages": [],
    "memberPackages": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {},
    "subscriptionCount": 0,
    "products": [],
    "tags": [],
    "price": 0,
    "hasOptionalProducts": true
  }
]
```

<a id="get-api-v1-members-profile-subscription-plans-id"></a>
## Get subscription plan settings details

`GET /api/v1/members/profile/subscription-plans/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `SubscriptionPlanResponse`

| Name | Type | Description |
| --- | --- | --- |
| `paymentProviders` (Required) | `array of PAYMENT_PROVIDER` | Allowed values: `"stripe"`, `"vipps"`, `"external"`, `"nets"`, `"efaktura-avtalegiro-ehf"`, `"swedbankpay"` |
| `name` (Required) | `string` |   |
| `uuid` (Required) | `string` |   |
| `billingPeriod` (Required) | `string` | Allowed values: `"monthly"`, `"thirty_days"`, `"quarterly"`, `"half_yearly"`, `"yearly"`, `"custom"` |
| `billingPeriodUnit` (Required) | `string` | Allowed values: `"day"`, `"week"`, `"month"`, `"year"` |
| `billingPeriodFrequency` (Required) | `number` |   |
| `autoRenew` (Required) | `boolean` |   |
| `status` (Required) | `string` | Allowed values: `"draft"`, `"published"`, `"archived"` |
| `tenantId` (Required) | `number` |   |
| `allowSameSubscriptionChange` (Required) | `boolean` |   |
| `allowDifferentSubscriptionSwitch` (Required) | `boolean` |   |
| `allowAdminSameSubscriptionChange` (Required) | `boolean` |   |
| `allowAdminDifferentSubscriptionSwitch` (Required) | `boolean` |   |
| `enableGiftSubscription` (Required) | `boolean` |   |
| `allowFutureStartDate` (Required) | `boolean` |   |
| `showAsOptionOnSubscriptionSwitch` (Required) | `boolean` |   |
| `showAsOptionOnAdminSubscriptionSwitch` (Required) | `boolean` |   |
| `offerSwitchOnCheckout` (Required) | `boolean` |   |
| `tenant` (Required) | `Tenant` | Nested fields omitted: field limit. |
| `entityTags` (Required) | `array of EntityTag` |   |
| `entityTags[].productId` (Required when parent is present) | `number` |   |
| `entityTags[].tagId` (Required when parent is present) | `number` |   |
| `entityTags[].subscriptionPlanId` (Required when parent is present) | `number` |   |
| `entityTags[].tag` (Required when parent is present) | `Tag` | Nested fields omitted: field limit. |
| `entityTags[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `entityTags[].subscriptionPlan` (Required when parent is present) | `SubscriptionPlan` | Nested fields omitted: field limit. |
| `entityTags[].visualWorkflowId` (Required when parent is present) | `number` |   |
| `entityTags[].visualWorkflow` (Required when parent is present) | `VisualWorkflow` | Nested fields omitted: field limit. |
| `entityTags[].id` (Required when parent is present) | `number` |   |
| `entityTags[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `entityTags[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `entityTags[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `entityTags[].metaData` (Required when parent is present) | `object` |   |
| `subscriptionPlanProducts` (Required) | `array of SubscriptionPlanProduct` |   |
| `subscriptionPlanProducts[].subscriptionPlanId` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].productId` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].price` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].properties` (Required when parent is present) | `OptionalProductProperties` |   |
| `subscriptionPlanProducts[].properties.isRequired` (Required when parent is present) | `boolean` |   |
| `subscriptionPlanProducts[].properties.quantityRange` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].subscriptionPlan` (Required when parent is present) | `SubscriptionPlan` | Nested fields omitted: field limit. |
| `subscriptionPlanProducts[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `subscriptionPlanProducts[].tenantId` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `subscriptionPlanProducts[].id` (Required when parent is present) | `number` |   |
| `subscriptionPlanProducts[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptionPlanProducts[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptionPlanProducts[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `subscriptionPlanProducts[].metaData` (Required when parent is present) | `object` |   |
| `packages` (Required) | `array of Package` | Nested fields omitted: field limit. |
| `memberPackages` (Required) | `array of MemberPackage` | Nested fields omitted: field limit. |
| `id` (Required) | `number` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `deletedAt` (Required) | `string (date-time)` |   |
| `metaData` (Required) | `object` |   |
| `subscriptionCount` (Required) | `number` |   |
| `products` (Required) | `array of SubscriptionProduct` |   |
| `products[].circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `products[].productId` (Required when parent is present) | `number` |   |
| `products[].name` (Required when parent is present) | `string` |   |
| `products[].price` (Required when parent is present) | `number` |   |
| `products[].currency` (Required when parent is present) | `string` |   |
| `products[].isOptional` (Required when parent is present) | `boolean` |   |
| `products[].basePrice` (Required when parent is present) | `number` |   |
| `products[].properties` (Required when parent is present) | `OptionalProductProperties` |   |
| `products[].properties.isRequired` (Required when parent is present) | `boolean` |   |
| `products[].properties.quantityRange` (Required when parent is present) | `number` |   |
| `products[].shippingCharges` (Required when parent is present) | `array of ShippingCharge` |   |
| `products[].shippingCharges[].country` (Required when parent is present) | `string` |   |
| `products[].shippingCharges[].charge` (Required when parent is present) | `number` |   |
| `products[].productCategory` (Required when parent is present) | `string` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `products[].tax` (Required when parent is present) | `number` |   |
| `products[].description` (Required when parent is present) | `string` |   |
| `products[].maxQuantityPerOrder` (Required when parent is present) | `number` |   |
| `tags` | `array of string` |   |
| `price` (Required) | `number` |   |
| `hasOptionalProducts` (Required) | `boolean` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscription-plans/{id}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "paymentProviders": [
    "stripe"
  ],
  "name": "string",
  "uuid": "string",
  "billingPeriod": "monthly",
  "billingPeriodUnit": "day",
  "billingPeriodFrequency": 0,
  "autoRenew": true,
  "status": "draft",
  "tenantId": 0,
  "allowSameSubscriptionChange": true,
  "allowDifferentSubscriptionSwitch": true,
  "allowAdminSameSubscriptionChange": true,
  "allowAdminDifferentSubscriptionSwitch": true,
  "enableGiftSubscription": true,
  "allowFutureStartDate": true,
  "showAsOptionOnSubscriptionSwitch": true,
  "showAsOptionOnAdminSubscriptionSwitch": true,
  "offerSwitchOnCheckout": true,
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "entityTags": [
    {
      "metaData": {}
    }
  ],
  "subscriptionPlanProducts": [
    {
      "metaData": {}
    }
  ],
  "packages": [
    {
      "paymentProviders": [],
      "description": {},
      "packageProducts": [],
      "payments": [],
      "memberPackages": [],
      "metaData": {}
    }
  ],
  "memberPackages": [
    {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    }
  ],
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {},
  "subscriptionCount": 0,
  "products": [
    {
      "shippingCharges": []
    }
  ],
  "tags": [
    "string"
  ],
  "price": 0,
  "hasOptionalProducts": true
}
```

<a id="get-api-v1-members-profile-subscriptions-product-id"></a>
## Get subscribed product details

`GET /api/v1/members/profile/subscriptions/product/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `MemberSubscribedProduct`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `productId` (Required) | `number` |   |
| `name` (Required) | `string` |   |
| `productCategory` | `ProductCategory` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `quantity` (Required) | `number` |   |
| `price` (Required) | `number` |   |
| `recurringPrice` (Required) | `number` |   |
| `isOptional` (Required) | `boolean` |   |
| `shippingCountry` (Required) | `string` |   |
| `shippingProvider` (Required) | `SHIPPING_PROVIDER` | Allowed values: `"Helthjem"`, `"Bring - Posten"`, `"Distribution Innovation"` |
| `allowDistributorToUpdateDeliveryAddress` (Required) | `boolean` |   |
| `deliveryAddresses` | `array of DeliveryAddress` |   |
| `deliveryAddresses[].id` (Required when parent is present) | `number` |   |
| `deliveryAddresses[].route` | `string` | The DI carrier route for this address. · Can be null |
| `deliveryAddresses[].line1` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].line2` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].city` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].postCode` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].country` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].name` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].email` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].companyName` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].organizationNo` (Required when parent is present) | `string` |   |
| `deliveryAddresses[].invoiceReference` | `string` |   |
| `deliveryAddresses[].isSynced` | `boolean` |   |
| `deliveryAddresses[].lastSyncedAt` | `string (date-time)` |   |
| `groupInfo` | `GroupSubscriptionResponse` |   |
| `groupInfo.ownerHasAccess` (Required when parent is present) | `boolean` | Default: `false` |
| `groupInfo.seatsAllowed` (Required when parent is present) | `number` | Default: `0` |
| `groupInfo.seatsActive` (Required when parent is present) | `number` | Default: `0` |
| `groupInfo.seatsRemaining` (Required when parent is present) | `number` | Default: `0` |
| `groupInfo.groupMemberCount` (Required when parent is present) | `number` | Group members holding a live seat (accepted or open invitation). Excludes the owner's own access and expired invitations. · Default: `0` |
| `groupInfo.maxQuantityPerOrder` (Required when parent is present) | `number` |   |
| `groupInfo.assignSeatToOwner` (Required when parent is present) | `boolean` |   |
| `groupInfo.groupOwnerMemberName` (Required when parent is present) | `string` |   |
| `groupInfo.groupOwnerMemberId` (Required when parent is present) | `string` |   |
| `groupInfo.groupOwnerMemberNumber` (Required when parent is present) | `number` |   |
| `groupInfo.seats` (Required when parent is present) | `array of SeatData` | Default: `[]` · Deprecated |
| `groupInfo.seats[].id` (Required when parent is present) | `number` |   |
| `groupInfo.seats[].name` (Required when parent is present) | `string` |   |
| `groupInfo.seats[].email` (Required when parent is present) | `string` | Can be null |
| `groupInfo.seats[].status` (Required when parent is present) | `string` | Allowed values: `"pending"`, `"accepted"`, `"expired"`, `"awaiting_activation"` |
| `groupInfo.seats[].memberId` (Required when parent is present) | `string` |   |
| `groupInfo.seats[].memberData` (Required when parent is present) | `MemberPersonalInfo` | Nested fields omitted: depth limit. |
| `groupInfo.seats[].expiresAt` (Required when parent is present) | `string` |   |
| `giftReceiverInfo` | `GiftReceiverResponse` |   |
| `giftReceiverInfo.seatsAllowed` (Required when parent is present) | `number` | Default: `0` |
| `giftReceiverInfo.seatsActive` (Required when parent is present) | `number` | Default: `0` |
| `giftReceiverInfo.seatsRemaining` (Required when parent is present) | `number` | Default: `0` |
| `giftReceiverInfo.maxQuantityPerOrder` (Required when parent is present) | `number` |   |
| `giftReceiverInfo.groupOwnerMemberName` (Required when parent is present) | `string` |   |
| `giftReceiverInfo.groupOwnerMemberId` (Required when parent is present) | `string` |   |
| `giftReceiverInfo.groupOwnerMemberNumber` (Required when parent is present) | `number` |   |
| `giftReceiverInfo.seats` (Required when parent is present) | `array of SeatData` | Default: `[]` · Nested fields omitted: field limit. |
| `primaryAddress` | `ProfileAddress` |   |
| `primaryAddress.line1` (Required when parent is present) | `string` |   |
| `primaryAddress.line2` (Required when parent is present) | `string` |   |
| `primaryAddress.city` (Required when parent is present) | `string` |   |
| `primaryAddress.postCode` (Required when parent is present) | `string` |   |
| `primaryAddress.country` (Required when parent is present) | `string` |   |
| `primaryAddress.name` (Required when parent is present) | `string` |   |
| `primaryAddress.email` (Required when parent is present) | `string` |   |
| `primaryAddress.companyName` (Required when parent is present) | `string` |   |
| `primaryAddress.organizationNo` (Required when parent is present) | `string` |   |
| `primaryAddress.invoiceReference` | `string` |   |
| `primaryAddress.isSynced` | `boolean` |   |
| `primaryAddress.lastSyncedAt` | `string (date-time)` |   |
| `emailDomains` | `array of string` |   |
| `supportsIpAccess` (Required) | `boolean` | Whether this product allows configuring IP-based access ranges. |
| `supportsIpRangeConfiguration` (Required) | `boolean` | True when the IP-range editor should be shown: subscription is ACTIVE, product category is DIGITAL\_SUBSCRIPTION, and the product has IP access enabled. |
| `ipRanges` (Required) | `array of IpRangeDto` |   |
| `ipRanges[].ipRange` (Required when parent is present) | `string` |   |
| `ipRanges[].label` | `string` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "productId": 0,
  "name": "string",
  "productCategory": "digital_subscription",
  "circulationType": "subscription",
  "quantity": 0,
  "price": 0,
  "recurringPrice": 0,
  "isOptional": true,
  "shippingCountry": "string",
  "shippingProvider": "Helthjem",
  "allowDistributorToUpdateDeliveryAddress": true,
  "deliveryAddresses": [
    {}
  ],
  "groupInfo": {
    "ownerHasAccess": false,
    "seatsAllowed": 0,
    "seatsActive": 0,
    "seatsRemaining": 0,
    "groupMemberCount": 0,
    "maxQuantityPerOrder": 0,
    "assignSeatToOwner": true,
    "groupOwnerMemberName": "<groupOwnerMemberName>",
    "groupOwnerMemberId": "string",
    "groupOwnerMemberNumber": 0,
    "seats": []
  },
  "giftReceiverInfo": {
    "seatsAllowed": 0,
    "seatsActive": 0,
    "seatsRemaining": 0,
    "maxQuantityPerOrder": 0,
    "groupOwnerMemberName": "<groupOwnerMemberName>",
    "groupOwnerMemberId": "string",
    "groupOwnerMemberNumber": 0,
    "seats": []
  },
  "primaryAddress": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  },
  "emailDomains": [
    "string"
  ],
  "supportsIpAccess": true,
  "supportsIpRangeConfiguration": true,
  "ipRanges": [
    {}
  ]
}
```

<a id="get-api-v1-members-profile-subscriptions-product-id-seats"></a>
## Get paginated seats for a subscribed product

`GET /api/v1/members/profile/subscriptions/product/{id}/seats`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `page` | query | `number` | Default: `1` · `minimum`: `1` |
| `take` | query | `number` | Default: `10` · `minimum`: `1`, `maximum`: `50` |
| `orderBy` | query | `string` | Allowed values: `"createdAt"`, `"id"`, `"updatedAt"` · Default: `"createdAt"` |
| `orderDirection` | query | `string` | Allowed values: `"asc"`, `"desc"` · Default: `"desc"` |
| `search` | query | `string` | Search by seat member name or email |
| `status` | query | `string` | Allowed values: `"active"`, `"invite_sent"`, `"expired"` |

### Responses

#### 200

Content type: `application/json` · `SeatDataPaginated`

| Name | Type | Description |
| --- | --- | --- |
| `items` (Required) | `array of SeatData` |   |
| `items[].id` (Required when parent is present) | `number` |   |
| `items[].name` (Required when parent is present) | `string` |   |
| `items[].email` (Required when parent is present) | `string` | Can be null |
| `items[].status` (Required when parent is present) | `string` | Allowed values: `"pending"`, `"accepted"`, `"expired"`, `"awaiting_activation"` |
| `items[].memberId` (Required when parent is present) | `string` |   |
| `items[].memberData` (Required when parent is present) | `MemberPersonalInfo` |   |
| `items[].memberData.id` (Required when parent is present) | `string` |   |
| `items[].memberData.fullName` (Required when parent is present) | `string` |   |
| `items[].memberData.nickName` (Required when parent is present) | `string` |   |
| `items[].memberData.createdAt` (Required when parent is present) | `string (date-time)` |   |
| `items[].memberData.avatar` (Required when parent is present) | `string` |   |
| `items[].memberData.countryCode` | `string` |   |
| `items[].memberData.birthDate` (Required when parent is present) | `string (date-time)` |   |
| `items[].memberData.deleteAfterExpiration` (Required when parent is present) | `boolean` |   |
| `items[].memberData.isCompany` (Required when parent is present) | `boolean` |   |
| `items[].memberData.companyName` (Required when parent is present) | `string` |   |
| `items[].memberData.organizationNo` (Required when parent is present) | `string` |   |
| `items[].memberData.customPropertyValues` (Required when parent is present) | `object` |   |
| `items[].memberData.emailVerified` | `string` |   |
| `items[].memberData.phoneVerified` (Required when parent is present) | `boolean` |   |
| `items[].memberData.memberNumber` (Required when parent is present) | `number` |   |
| `items[].memberData.userId` (Required when parent is present) | `number` |   |
| `items[].memberData.emailStatus` | `SENDGRID_MAIL_EVENTS` | Allowed values: `"scheduled"`, `"processed"`, `"dropped"`, `"deferred"`, `"bounce"`, `"hard_bounce"`, `"soft_bounce"`, `"spamreport"`, `"delivered"`, `"unsubscribe"`, `"group_unsubscribe"`, `"group_resubscribe"`, `"open"`, `"failed"`, `"click"`, `"skipped_bounced"` |
| `items[].memberData.email` (Required when parent is present) | `string (email)` |   |
| `items[].memberData.phone` (Required when parent is present) | `string` |   |
| `items[].memberData.address` (Required when parent is present) | `ProfileAddress` | Nested fields omitted: depth limit. |
| `items[].expiresAt` (Required when parent is present) | `string` |   |
| `meta` (Required) | `PageMeta` |   |
| `meta.page` (Required) | `number` |   |
| `meta.take` (Required) | `number` |   |
| `meta.count` (Required) | `number` |   |
| `meta.pageCount` (Required) | `number` |   |
| `meta.hasPreviousPage` (Required) | `boolean` |   |
| `meta.hasNextPage` (Required) | `boolean` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/seats' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "items": [
    {}
  ],
  "meta": {
    "page": 0,
    "take": 0,
    "count": 0,
    "pageCount": 0,
    "hasPreviousPage": true,
    "hasNextPage": true
  }
}
```

<a id="put-api-v1-members-profile-subscriptions-product-id-ip-ranges"></a>
## Replace the full IP-range list for a subscribed product (full snapshot)

`PUT /api/v1/members/profile/subscriptions/product/{id}/ip-ranges`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `ReplaceIpRangesDto`

| Name | Type | Description |
| --- | --- | --- |
| `ipRanges` (Required) | `array of IpRangeInputDto` | Full replacement of the IP-range list. Maximum 200 entries; saving replaces every existing range for this product. |
| `ipRanges[].value` (Required when parent is present) | `string` | IP range. Accepted formats: CIDR (1.2.3.0/24, 2001:db8::/32), range (1.2.3.0-1.2.3.255), trailing wildcard (1.2.3.\*), or bare IP (1.2.3.4). Server normalizes to canonical CIDR. Minimum prefix length: /16 for IPv4, /32 for IPv6 (broader ranges are rejected). |
| `ipRanges[].label` | `string` | `maxLength`: `120` |

### Responses

#### 200

Content type: `application/json` · `array of IpRangeDto`

| Name | Type | Description |
| --- | --- | --- |
| `[].ipRange` (Required when parent is present) | `string` |   |
| `[].label` | `string` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, tooManyIpRanges, duplicateIpRangeInRequest, ipRangesNotAllowedOnThisProduct, invalidIpRangeFormat, ipRangeTooBroad

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"tooManyIpRanges"`, `"duplicateIpRangeInRequest"`, `"ipRangesNotAllowedOnThisProduct"`, `"invalidIpRangeFormat"`, `"ipRangeTooBroad"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Join selected available subscriptions (create product seats) (401)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-join-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "unauthorized",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/ip-ranges' \
  --request PUT \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "ipRanges": [
    {}
  ]
}'
```

### Example response

200 · `application/json`

```json
[
  {
    "ipRange": "string",
    "label": "string"
  }
]
```

<a id="delete-api-v1-members-profile-subscriptions-product-id-ip-ranges-iprange"></a>
## Remove a specific IP range from a subscribed product. The :ipRange path segment is the canonical CIDR (URL-encode "/" as %2F).

`DELETE /api/v1/members/profile/subscriptions/product/{id}/ip-ranges/{ipRange}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `ipRange` (Required) | path | `string` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, ipRangesNotAllowedOnThisProduct

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"ipRangesNotAllowedOnThisProduct"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Join selected available subscriptions (create product seats) (401)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-join-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "unauthorized",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

ipRangeNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"ipRangeNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "ipRangeNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/ip-ranges/{ipRange}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="post-api-v1-members-profile-subscriptions-product-id-create-member"></a>
## Create additional member for a product seat

`POST /api/v1/members/profile/subscriptions/product/{id}/create-member`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `CreateAdditionalMemberDto`

| Name | Type | Description |
| --- | --- | --- |
| `fullName` | `string` |   |
| `memberPackageProductId` | `number` | `minimum`: `1` |
| `email` | `string (email)` |   |
| `birthDate` | `string (date-time)` |   |
| `nickName` | `string` | `maxLength`: `255` |
| `phone` | `string` | `maxLength`: `32` |
| `countryCode` | `string` | `maxLength`: `8` |
| `isCompany` | `boolean` |   |
| `companyName` | `string` | `maxLength`: `255` |
| `address` | `MemberAddressDto` |   |
| `address.line1` | `string` | `maxLength`: `255` |
| `address.line2` | `string` | `maxLength`: `255` |
| `address.city` | `string` | `maxLength`: `255` |
| `address.state` | `string` | `maxLength`: `255` |
| `address.postCode` | `string` | `maxLength`: `32` |
| `address.country` | `string` | `maxLength`: `64` |
| `address.name` | `string` | `maxLength`: `255` |
| `address.email` | `string (email)` | `maxLength`: `255` |
| `address.organizationNo` | `string` | `maxLength`: `64` |
| `address.companyName` | `string` | `maxLength`: `255` |
| `address.invoiceReference` | `string` | `maxLength`: `255` |
| `customPropertyValues` | `object` |   |

**Example request body**

`application/json`

```json
{
  "fullName": "<fullName>",
  "memberPackageProductId": 1,
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "customPropertyValues": {}
}
```

### Responses

#### 201

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, alreadyExists, seatLimitReached, phoneAlreadyVerified

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"alreadyExists"`, `"seatLimitReached"`, `"phoneAlreadyVerified"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, productNotFound

Same fields as [Join selected available subscriptions (create product seats) (404)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-join-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/create-member' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "fullName": "<fullName>",
  "memberPackageProductId": 1,
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "customPropertyValues": {}
}'
```

### Example response

201 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="post-api-v1-members-profile-subscriptions-product-id-create-gift-receiver"></a>
## Create gift receiver for a product seat

`POST /api/v1/members/profile/subscriptions/product/{id}/create-gift-receiver`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `sendInvitation` | query | `boolean` |   |

### Request body

Content type: `application/json` · Required · `CreateGiftReceiverDto`

| Name | Type | Description |
| --- | --- | --- |
| `fullName` (Required) | `string` |   |
| `email` (Required) | `string (email)` | Required unless a phone is given: a receiver needs an email or a phone. |
| `phone` (Required) | `string` | Required unless an email is given. A phone-only receiver is accepted by this endpoint but cannot be seated until SUBRITE-965. |
| `memberPackageProductId` | `number` | `minimum`: `1` |

**Example request body**

`application/json`

```json
{
  "fullName": "<fullName>",
  "email": "user@example.com",
  "phone": "<phone>",
  "memberPackageProductId": 1
}
```

### Responses

#### 201

Content type: `application/json` · `MemberPersonalInfo`

Same fields as [Get logged in member personal info (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, alreadyExists, seatLimitReached, invitationAlreadyAccepted, invitationAlreadySent, phoneAlreadyVerified

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"alreadyExists"`, `"seatLimitReached"`, `"invitationAlreadyAccepted"`, `"invitationAlreadySent"`, `"phoneAlreadyVerified"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberPackageProductNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notFound"`, `"memberPackageProductNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/create-gift-receiver' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "fullName": "<fullName>",
  "email": "user@example.com",
  "phone": "<phone>",
  "memberPackageProductId": 1
}'
```

### Example response

201 · `application/json`

```json
{
  "id": "string",
  "fullName": "<fullName>",
  "nickName": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "avatar": "string",
  "countryCode": "string",
  "birthDate": "<birthDate>",
  "deleteAfterExpiration": true,
  "isCompany": true,
  "companyName": "string",
  "organizationNo": "string",
  "customPropertyValues": {},
  "emailVerified": "string",
  "phoneVerified": true,
  "memberNumber": 0,
  "userId": 0,
  "emailStatus": "scheduled",
  "email": "user@example.com",
  "phone": "<phone>",
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "string",
    "companyName": "string",
    "organizationNo": "string",
    "invoiceReference": "string",
    "isSynced": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z"
  }
}
```

<a id="get-api-v1-members-profile-invoice-id"></a>
## Get invoice of a order

`GET /api/v1/members/profile/invoice/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/invoice/{id}' \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-members-profile-refund-id"></a>
## Get a refund note pdf

`GET /api/v1/members/profile/refund/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/refund/{id}' \
  --header 'Authorization: Bearer <token>'
```

<a id="patch-api-v1-members-profile-subscriptions-id-auto-renewal-activate"></a>
## Toggle auto renewal of subscription

`PATCH /api/v1/members/profile/subscriptions/{id}/auto-renewal/{activate}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `activate` (Required) | path | `boolean` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, nextRenewalDateRequired, subscriptionChangeBlockedVippsChargeWindow, nextOrderDateMustBeAfterToday

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"nextRenewalDateRequired"`, `"subscriptionChangeBlockedVippsChargeWindow"`, `"nextOrderDateMustBeAfterToday"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberPackageNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notFound"`, `"memberPackageNotFound"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 409

Content type: `application/json` · `ErrorResponse`

autoRenewRequiresStoredPaymentMethod

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"autoRenewRequiresStoredPaymentMethod"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "autoRenewRequiresStoredPaymentMethod",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/auto-renewal/{activate}' \
  --request PATCH \
  --header 'Authorization: Bearer <token>'
```

<a id="patch-api-v1-members-profile-subscriptions-id-activation-date"></a>
## Update member package scheduled activation date

`PATCH /api/v1/members/profile/subscriptions/{id}/activation-date`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `UpdateMemberPackageDto`

| Name | Type | Description |
| --- | --- | --- |
| `autoRenew` | `boolean` |   |
| `nextRenewal` | `string (date-time)` |   |
| `scheduledActivationDate` | `string (date-time)` |   |

**Example request body**

`application/json`

```json
{
  "autoRenew": true,
  "nextRenewal": "2019-08-24T14:15:22Z",
  "scheduledActivationDate": "2019-08-24T14:15:22Z"
}
```

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/activation-date' \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "autoRenew": true,
  "nextRenewal": "2019-08-24T14:15:22Z",
  "scheduledActivationDate": "2019-08-24T14:15:22Z"
}'
```

<a id="get-api-v1-members-profile-seats-id"></a>
## Get product seat details

`GET /api/v1/members/profile/seats/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `SeatData`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `name` (Required) | `string` |   |
| `email` (Required) | `string` | Can be null |
| `status` (Required) | `string` | Allowed values: `"pending"`, `"accepted"`, `"expired"`, `"awaiting_activation"` |
| `memberId` (Required) | `string` |   |
| `memberData` (Required) | `MemberPersonalInfo` |   |
| `memberData.id` (Required) | `string` |   |
| `memberData.fullName` (Required) | `string` |   |
| `memberData.nickName` (Required) | `string` |   |
| `memberData.createdAt` (Required) | `string (date-time)` |   |
| `memberData.avatar` (Required) | `string` |   |
| `memberData.countryCode` | `string` |   |
| `memberData.birthDate` (Required) | `string (date-time)` |   |
| `memberData.deleteAfterExpiration` (Required) | `boolean` |   |
| `memberData.isCompany` (Required) | `boolean` |   |
| `memberData.companyName` (Required) | `string` |   |
| `memberData.organizationNo` (Required) | `string` |   |
| `memberData.customPropertyValues` (Required) | `object` |   |
| `memberData.emailVerified` | `string` |   |
| `memberData.phoneVerified` (Required) | `boolean` |   |
| `memberData.memberNumber` (Required) | `number` |   |
| `memberData.userId` (Required) | `number` |   |
| `memberData.emailStatus` | `SENDGRID_MAIL_EVENTS` | Allowed values: `"scheduled"`, `"processed"`, `"dropped"`, `"deferred"`, `"bounce"`, `"hard_bounce"`, `"soft_bounce"`, `"spamreport"`, `"delivered"`, `"unsubscribe"`, `"group_unsubscribe"`, `"group_resubscribe"`, `"open"`, `"failed"`, `"click"`, `"skipped_bounced"` |
| `memberData.email` (Required) | `string (email)` |   |
| `memberData.phone` (Required) | `string` |   |
| `memberData.address` (Required) | `ProfileAddress` |   |
| `memberData.address.line1` (Required) | `string` |   |
| `memberData.address.line2` (Required) | `string` |   |
| `memberData.address.city` (Required) | `string` |   |
| `memberData.address.postCode` (Required) | `string` |   |
| `memberData.address.country` (Required) | `string` |   |
| `memberData.address.name` (Required) | `string` |   |
| `memberData.address.email` (Required) | `string` |   |
| `memberData.address.companyName` (Required) | `string` |   |
| `memberData.address.organizationNo` (Required) | `string` |   |
| `memberData.address.invoiceReference` | `string` |   |
| `memberData.address.isSynced` | `boolean` |   |
| `memberData.address.lastSyncedAt` | `string (date-time)` |   |
| `expiresAt` (Required) | `string` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{id}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "name": "string",
  "email": "string",
  "status": "pending",
  "memberId": "string",
  "memberData": {
    "id": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "avatar": "string",
    "countryCode": "string",
    "birthDate": "<birthDate>",
    "deleteAfterExpiration": true,
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "customPropertyValues": {},
    "emailVerified": "string",
    "phoneVerified": true,
    "memberNumber": 0,
    "userId": 0,
    "emailStatus": "scheduled",
    "email": "user@example.com",
    "phone": "<phone>",
    "address": {}
  },
  "expiresAt": "string"
}
```

<a id="delete-api-v1-members-profile-seats-id"></a>
## Remove invitation to a product seat

`DELETE /api/v1/members/profile/seats/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{id}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="patch-api-v1-members-profile-seats-id"></a>
## Update product seat details

`PATCH /api/v1/members/profile/seats/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `UpdateMemberDto`

| Name | Type | Description |
| --- | --- | --- |
| `fullName` | `string` |   |
| `deleteAfterExpiration` | `boolean` |   |
| `address` | `MemberAddressDto` |   |
| `address.line1` | `string` | `maxLength`: `255` |
| `address.line2` | `string` | `maxLength`: `255` |
| `address.city` | `string` | `maxLength`: `255` |
| `address.state` | `string` | `maxLength`: `255` |
| `address.postCode` | `string` | `maxLength`: `32` |
| `address.country` | `string` | `maxLength`: `64` |
| `address.name` | `string` | `maxLength`: `255` |
| `address.email` | `string (email)` | `maxLength`: `255` |
| `address.organizationNo` | `string` | `maxLength`: `64` |
| `address.companyName` | `string` | `maxLength`: `255` |
| `address.invoiceReference` | `string` | `maxLength`: `255` |
| `email` | `string (email)` |   |
| `birthDate` | `string (date-time)` |   |
| `nickName` | `string` | `maxLength`: `255` |
| `phone` | `string` | `maxLength`: `32` |
| `countryCode` | `string` | `maxLength`: `8` |
| `isCompany` | `boolean` |   |
| `companyName` | `string` | `maxLength`: `255` |
| `customPropertyValues` | `object` |   |

**Example request body**

`application/json`

```json
{
  "fullName": "<fullName>",
  "deleteAfterExpiration": true,
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "customPropertyValues": {}
}
```

### Responses

#### 200

Content type: `application/json` · `SeatData`

Same fields as [Get product seat details (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-seats-id).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, phoneAlreadyVerified, alreadyExists

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"phoneAlreadyVerified"`, `"alreadyExists"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

notPackageOwner

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"notPackageOwner"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "notPackageOwner",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{id}' \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "fullName": "<fullName>",
  "deleteAfterExpiration": true,
  "address": {
    "line1": "string",
    "line2": "string",
    "city": "string",
    "state": "string",
    "postCode": "string",
    "country": "string",
    "name": "string",
    "email": "user@example.com",
    "organizationNo": "string",
    "companyName": "string",
    "invoiceReference": "string"
  },
  "email": "user@example.com",
  "birthDate": "<birthDate>",
  "nickName": "string",
  "phone": "<phone>",
  "countryCode": "string",
  "isCompany": true,
  "companyName": "string",
  "customPropertyValues": {}
}'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "name": "string",
  "email": "string",
  "status": "pending",
  "memberId": "string",
  "memberData": {
    "id": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "avatar": "string",
    "countryCode": "string",
    "birthDate": "<birthDate>",
    "deleteAfterExpiration": true,
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "customPropertyValues": {},
    "emailVerified": "string",
    "phoneVerified": true,
    "memberNumber": 0,
    "userId": 0,
    "emailStatus": "scheduled",
    "email": "user@example.com",
    "phone": "<phone>",
    "address": {}
  },
  "expiresAt": "string"
}
```

<a id="get-api-v1-members-profile-seats-id-recipient-attached-products"></a>
## Get product seat recipient attached products

`GET /api/v1/members/profile/seats/{id}/recipient/attached-products`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `array of MemberPackageProductSeatRecipientProductsResponseDto`

| Name | Type | Description |
| --- | --- | --- |
| `[].memberPackageProductId` (Required when parent is present) | `number` | The ID of the member package product |
| `[].productName` (Required when parent is present) | `string` | The name of the product |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{id}/recipient/attached-products' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "memberPackageProductId": 123,
    "productName": "Premium Subscription"
  }
]
```

<a id="post-api-v1-members-profile-seats-invite"></a>
## Invite member to a product seat

`POST /api/v1/members/profile/seats/invite`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `InviteSeatDto`

| Name | Type | Description |
| --- | --- | --- |
| `email` (Required) | `string (email)` |   |
| `id` (Required) | `number` | `minimum`: `1` |

**Example request body**

`application/json`

```json
{
  "email": "user@example.com",
  "id": 1
}
```

### Responses

#### 201

Content type: `application/json` · `MemberPackageProductSeat`

| Name | Type | Description |
| --- | --- | --- |
| `memberPackageProductId` (Required) | `number` |   |
| `memberId` (Required) | `string` |   |
| `email` (Required) | `string` | Can be null |
| `accepted` (Required) | `boolean` |   |
| `acceptedAt` (Required) | `string (date-time)` |   |
| `expiresAt` (Required) | `string (date-time)` |   |
| `uuid` (Required) | `string` |   |
| `memberPackageProduct` (Required) | `MemberPackageProduct` |   |
| `memberPackageProduct.memberPackageId` (Required) | `number` |   |
| `memberPackageProduct.productId` (Required) | `number` |   |
| `memberPackageProduct.price` (Required) | `number` |   |
| `memberPackageProduct.recurringPrice` (Required) | `number` |   |
| `memberPackageProduct.quantity` (Required) | `number` |   |
| `memberPackageProduct.hasAccess` (Required) | `boolean` |   |
| `memberPackageProduct.shippingCountry` (Required) | `string` |   |
| `memberPackageProduct.shippingProvider` (Required) | `string` | Allowed values: `"Helthjem"`, `"Bring - Posten"`, `"Distribution Innovation"` |
| `memberPackageProduct.allowDistributorToUpdateDeliveryAddress` (Required) | `boolean` |   |
| `memberPackageProduct.memberPackageProductEmailDomains` (Required) | `array of MemberPackageProductEmailDomain` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].emailDomain` (Required when parent is present) | `string` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].updatedBy` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `memberPackageProduct.memberPackageProductEmailDomains[].id` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductEmailDomains[].metaData` (Required when parent is present) | `object` |   |
| `memberPackageProduct.memberPackageProductIps` (Required) | `array of MemberPackageProductIp` |   |
| `memberPackageProduct.memberPackageProductIps[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductIps[].ipRange` (Required when parent is present) | `string` |   |
| `memberPackageProduct.memberPackageProductIps[].label` (Required when parent is present) | `string` |   |
| `memberPackageProduct.memberPackageProductIps[].updatedBy` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductIps[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `memberPackageProduct.memberPackageProductIps[].id` (Required when parent is present) | `number` |   |
| `memberPackageProduct.memberPackageProductIps[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductIps[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductIps[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `memberPackageProduct.memberPackageProductIps[].metaData` (Required when parent is present) | `object` |   |
| `memberPackageProduct.memberPackage` (Required) | `MemberPackage` | Nested fields omitted: field limit. |
| `memberPackageProduct.product` (Required) | `Product` | Nested fields omitted: field limit. |
| `memberPackageProduct.seats` (Required) | `array of MemberPackageProductSeat` | Recursive schema; nested fields are not repeated. |
| `memberPackageProduct.recipients` (Required) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `memberPackageProduct.id` (Required) | `number` |   |
| `memberPackageProduct.createdAt` (Required) | `string (date-time)` |   |
| `memberPackageProduct.updatedAt` (Required) | `string (date-time)` |   |
| `memberPackageProduct.deletedAt` (Required) | `string (date-time)` |   |
| `memberPackageProduct.metaData` (Required) | `object` |   |
| `member` (Required) | `Member` |   |
| `member.userId` (Required) | `number` | Can be null |
| `member.memberNumber` (Required) | `number` | Can be null |
| `member.tenantId` (Required) | `number` |   |
| `member.externalId` (Required) | `string` | Can be null |
| `member.fullName` (Required) | `string` |   |
| `member.nickName` (Required) | `string` |   |
| `member.avatar` (Required) | `string` |   |
| `member.email` (Required) | `string` |   |
| `member.birthDate` (Required) | `string (date-time)` | Can be null |
| `member.phone` (Required) | `string` |   |
| `member.isCompany` (Required) | `boolean` |   |
| `member.companyName` (Required) | `string` | Can be null |
| `member.organizationNo` (Required) | `string` | Can be null |
| `member.deleteAfterExpiration` (Required) | `boolean` |   |
| `member.customPropertyValues` (Required) | `object` |   |
| `member.productRecipients` (Required) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `member.id` (Required) | `string` |   |
| `member.createdAt` (Required) | `string (date-time)` |   |
| `member.updatedAt` (Required) | `string (date-time)` |   |
| `member.deletedAt` (Required) | `string (date-time)` |   |
| `member.metaData` (Required) | `object` |   |
| `id` (Required) | `number` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `deletedAt` (Required) | `string (date-time)` |   |
| `metaData` (Required) | `object` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, cannotInviteYourself, cannotAssignToTheOwner, invitationLimitReached, invitationAlreadyAccepted, invitationAlreadySent

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"cannotInviteYourself"`, `"cannotAssignToTheOwner"`, `"invitationLimitReached"`, `"invitationAlreadyAccepted"`, `"invitationAlreadySent"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberPackageProductNotFound

Same fields as [Create gift receiver for a product seat (404)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-product-id-create-gift-receiver).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/seats/invite \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "email": "user@example.com",
  "id": 1
}'
```

### Example response

201 · `application/json`

```json
{
  "memberPackageProductId": 0,
  "memberId": "string",
  "email": "string",
  "accepted": true,
  "acceptedAt": "2019-08-24T14:15:22Z",
  "expiresAt": "2019-08-24T14:15:22Z",
  "uuid": "string",
  "memberPackageProduct": {
    "memberPackageId": 0,
    "productId": 0,
    "price": 0,
    "recurringPrice": 0,
    "quantity": 0,
    "hasAccess": true,
    "shippingCountry": "string",
    "shippingProvider": "Helthjem",
    "allowDistributorToUpdateDeliveryAddress": true,
    "memberPackageProductEmailDomains": [],
    "memberPackageProductIps": [],
    "memberPackage": {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    },
    "product": {
      "properties": {},
      "shippingCharges": [],
      "entityTags": [],
      "subscriptionPlanProducts": [],
      "packageProducts": [],
      "memberPackageProducts": [],
      "orderItem": [],
      "productContents": [],
      "metaData": {}
    },
    "seats": [],
    "recipients": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "member": {
    "userId": 0,
    "memberNumber": 0,
    "tenantId": 0,
    "externalId": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "avatar": "string",
    "email": "string",
    "birthDate": "<birthDate>",
    "phone": "<phone>",
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "deleteAfterExpiration": true,
    "customPropertyValues": {},
    "productRecipients": [],
    "id": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="post-api-v1-members-profile-seats-seatid-resend"></a>
## Resend invitation to a product seat

`POST /api/v1/members/profile/seats/{seatId}/resend`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `seatId` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `ResendSeatInvitationDto`

| Name | Type | Description |
| --- | --- | --- |
| `email` | `string (email)` |   |

**Example request body**

`application/json`

```json
{
  "email": "user@example.com"
}
```

### Responses

#### 201

Content type: `application/json` · `MemberPackageProductSeat`

Same fields as [Invite member to a product seat (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-seats-invite).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invitationLimitReached, invitationAlreadyAccepted, invitationAlreadySent, cannotInviteYourself, cannotAssignToTheOwner

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"invitationLimitReached"`, `"invitationAlreadyAccepted"`, `"invitationAlreadySent"`, `"cannotInviteYourself"`, `"cannotAssignToTheOwner"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberPackageProductNotFound

Same fields as [Create gift receiver for a product seat (404)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-product-id-create-gift-receiver).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{seatId}/resend' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "email": "user@example.com"
}'
```

### Example response

201 · `application/json`

```json
{
  "memberPackageProductId": 0,
  "memberId": "string",
  "email": "string",
  "accepted": true,
  "acceptedAt": "2019-08-24T14:15:22Z",
  "expiresAt": "2019-08-24T14:15:22Z",
  "uuid": "string",
  "memberPackageProduct": {
    "memberPackageId": 0,
    "productId": 0,
    "price": 0,
    "recurringPrice": 0,
    "quantity": 0,
    "hasAccess": true,
    "shippingCountry": "string",
    "shippingProvider": "Helthjem",
    "allowDistributorToUpdateDeliveryAddress": true,
    "memberPackageProductEmailDomains": [],
    "memberPackageProductIps": [],
    "memberPackage": {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    },
    "product": {
      "properties": {},
      "shippingCharges": [],
      "entityTags": [],
      "subscriptionPlanProducts": [],
      "packageProducts": [],
      "memberPackageProducts": [],
      "orderItem": [],
      "productContents": [],
      "metaData": {}
    },
    "seats": [],
    "recipients": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "member": {
    "userId": 0,
    "memberNumber": 0,
    "tenantId": 0,
    "externalId": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "avatar": "string",
    "email": "string",
    "birthDate": "<birthDate>",
    "phone": "<phone>",
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "deleteAfterExpiration": true,
    "customPropertyValues": {},
    "productRecipients": [],
    "id": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="post-api-v1-members-profile-seats-uuid-accept"></a>
## Accept invitation to a product seat

`POST /api/v1/members/profile/seats/{uuid}/accept`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `uuid` (Required) | path | `string` |   |

### Responses

#### 201

Content type: `application/json` · `MemberPackageProductSeat`

Same fields as [Invite member to a product seat (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-seats-invite).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invitationAlreadyAccepted, invitationExpired, seatLimitReached

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"invitationAlreadyAccepted"`, `"invitationExpired"`, `"seatLimitReached"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

invalidMember

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"invalidMember"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "invalidMember",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{uuid}/accept' \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

### Example response

201 · `application/json`

```json
{
  "memberPackageProductId": 0,
  "memberId": "string",
  "email": "string",
  "accepted": true,
  "acceptedAt": "2019-08-24T14:15:22Z",
  "expiresAt": "2019-08-24T14:15:22Z",
  "uuid": "string",
  "memberPackageProduct": {
    "memberPackageId": 0,
    "productId": 0,
    "price": 0,
    "recurringPrice": 0,
    "quantity": 0,
    "hasAccess": true,
    "shippingCountry": "string",
    "shippingProvider": "Helthjem",
    "allowDistributorToUpdateDeliveryAddress": true,
    "memberPackageProductEmailDomains": [],
    "memberPackageProductIps": [],
    "memberPackage": {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    },
    "product": {
      "properties": {},
      "shippingCharges": [],
      "entityTags": [],
      "subscriptionPlanProducts": [],
      "packageProducts": [],
      "memberPackageProducts": [],
      "orderItem": [],
      "productContents": [],
      "metaData": {}
    },
    "seats": [],
    "recipients": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "member": {
    "userId": 0,
    "memberNumber": 0,
    "tenantId": 0,
    "externalId": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "avatar": "string",
    "email": "string",
    "birthDate": "<birthDate>",
    "phone": "<phone>",
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "deleteAfterExpiration": true,
    "customPropertyValues": {},
    "productRecipients": [],
    "id": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="post-api-v1-members-profile-seats-uuid-accept-gift"></a>
## Accept gift invitation to a product seat

`POST /api/v1/members/profile/seats/{uuid}/accept-gift`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `uuid` (Required) | path | `string` |   |

### Responses

#### 201

Content type: `application/json` · `MemberPackageProductSeat`

Same fields as [Invite member to a product seat (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-seats-invite).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invitationAlreadyAccepted, invitationExpired, seatLimitReached

Same fields as [Accept invitation to a product seat (400)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-seats-uuid-accept).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

invalidMember

Same fields as [Accept invitation to a product seat (403)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-seats-uuid-accept).

**Example response**

`application/json`

```json
{
  "messageCode": "invalidMember",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/seats/{uuid}/accept-gift' \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

### Example response

201 · `application/json`

```json
{
  "memberPackageProductId": 0,
  "memberId": "string",
  "email": "string",
  "accepted": true,
  "acceptedAt": "2019-08-24T14:15:22Z",
  "expiresAt": "2019-08-24T14:15:22Z",
  "uuid": "string",
  "memberPackageProduct": {
    "memberPackageId": 0,
    "productId": 0,
    "price": 0,
    "recurringPrice": 0,
    "quantity": 0,
    "hasAccess": true,
    "shippingCountry": "string",
    "shippingProvider": "Helthjem",
    "allowDistributorToUpdateDeliveryAddress": true,
    "memberPackageProductEmailDomains": [],
    "memberPackageProductIps": [],
    "memberPackage": {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    },
    "product": {
      "properties": {},
      "shippingCharges": [],
      "entityTags": [],
      "subscriptionPlanProducts": [],
      "packageProducts": [],
      "memberPackageProducts": [],
      "orderItem": [],
      "productContents": [],
      "metaData": {}
    },
    "seats": [],
    "recipients": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "member": {
    "userId": 0,
    "memberNumber": 0,
    "tenantId": 0,
    "externalId": "string",
    "fullName": "<fullName>",
    "nickName": "string",
    "avatar": "string",
    "email": "string",
    "birthDate": "<birthDate>",
    "phone": "<phone>",
    "isCompany": true,
    "companyName": "string",
    "organizationNo": "string",
    "deleteAfterExpiration": true,
    "customPropertyValues": {},
    "productRecipients": [],
    "id": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="post-api-v1-members-profile-subscriptions-id-invoice-address"></a>
## Add invoice address of a subscribed product

`POST /api/v1/members/profile/subscriptions/{id}/invoice-address`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `MemberAddressDto`

| Name | Type | Description |
| --- | --- | --- |
| `line1` | `string` | `maxLength`: `255` |
| `line2` | `string` | `maxLength`: `255` |
| `city` | `string` | `maxLength`: `255` |
| `state` | `string` | `maxLength`: `255` |
| `postCode` | `string` | `maxLength`: `32` |
| `country` | `string` | `maxLength`: `64` |
| `name` | `string` | `maxLength`: `255` |
| `email` | `string (email)` | `maxLength`: `255` |
| `organizationNo` | `string` | `maxLength`: `64` |
| `companyName` | `string` | `maxLength`: `255` |
| `invoiceReference` | `string` | `maxLength`: `255` |

**Example request body**

`application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}
```

### Responses

#### 201

Content type: `application/json` · `ProfileAddress`

| Name | Type | Description |
| --- | --- | --- |
| `line1` (Required) | `string` |   |
| `line2` (Required) | `string` |   |
| `city` (Required) | `string` |   |
| `postCode` (Required) | `string` |   |
| `country` (Required) | `string` |   |
| `name` (Required) | `string` |   |
| `email` (Required) | `string` |   |
| `companyName` (Required) | `string` |   |
| `organizationNo` (Required) | `string` |   |
| `invoiceReference` | `string` |   |
| `isSynced` | `boolean` |   |
| `lastSyncedAt` | `string (date-time)` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/invoice-address' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}'
```

### Example response

201 · `application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "string",
  "companyName": "string",
  "organizationNo": "string",
  "invoiceReference": "string",
  "isSynced": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z"
}
```

<a id="patch-api-v1-members-profile-subscriptions-id-invoice-address"></a>
## Update invoice address of a subscribed product

`PATCH /api/v1/members/profile/subscriptions/{id}/invoice-address`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `MemberAddressDto`

Same fields as [Add invoice address of a subscribed product (Request body)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-id-invoice-address).

**Example request body**

`application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}
```

### Responses

#### 200

Content type: `application/json` · `ProfileAddress`

Same fields as [Add invoice address of a subscribed product (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-id-invoice-address).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/invoice-address' \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}'
```

### Example response

200 · `application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "string",
  "companyName": "string",
  "organizationNo": "string",
  "invoiceReference": "string",
  "isSynced": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z"
}
```

<a id="post-api-v1-members-profile-subscriptions-product-id-delivery-address"></a>
## Add delivery address of a subscribed product

`POST /api/v1/members/profile/subscriptions/product/{id}/delivery-address`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `MemberAddressDto`

Same fields as [Add invoice address of a subscribed product (Request body)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-id-invoice-address).

**Example request body**

`application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}
```

### Responses

#### 201

Content type: `application/json` · `DeliveryAddress`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `route` | `string` | The DI carrier route for this address. · Can be null |
| `line1` (Required) | `string` |   |
| `line2` (Required) | `string` |   |
| `city` (Required) | `string` |   |
| `postCode` (Required) | `string` |   |
| `country` (Required) | `string` |   |
| `name` (Required) | `string` |   |
| `email` (Required) | `string` |   |
| `companyName` (Required) | `string` |   |
| `organizationNo` (Required) | `string` |   |
| `invoiceReference` | `string` |   |
| `isSynced` | `boolean` |   |
| `lastSyncedAt` | `string (date-time)` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/delivery-address' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}'
```

### Example response

201 · `application/json`

```json
{
  "id": 0,
  "route": "string",
  "line1": "string",
  "line2": "string",
  "city": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "string",
  "companyName": "string",
  "organizationNo": "string",
  "invoiceReference": "string",
  "isSynced": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z"
}
```

<a id="patch-api-v1-members-profile-subscriptions-product-id-owner-access-activate"></a>
## Trigger own access of a product

`PATCH /api/v1/members/profile/subscriptions/product/{id}/owner-access/{activate}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `activate` (Required) | path | `boolean` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, alreadyActivated, alreadyDeactivated, seatLimitReached

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"alreadyActivated"`, `"alreadyDeactivated"`, `"seatLimitReached"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/owner-access/{activate}' \
  --request PATCH \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-members-profile-subscriptions-product-productid-delivery-address-addressid"></a>
## Get delivery address of a subscribed product

`GET /api/v1/members/profile/subscriptions/product/{productId}/delivery-address/{addressId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `productId` (Required) | path | `number` |   |
| `addressId` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `DeliveryAddress`

Same fields as [Add delivery address of a subscribed product (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-product-id-delivery-address).

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{productId}/delivery-address/{addressId}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "route": "string",
  "line1": "string",
  "line2": "string",
  "city": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "string",
  "companyName": "string",
  "organizationNo": "string",
  "invoiceReference": "string",
  "isSynced": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z"
}
```

<a id="patch-api-v1-members-profile-subscriptions-product-productid-delivery-address-addressid"></a>
## Update delivery address of a subscribed product

`PATCH /api/v1/members/profile/subscriptions/product/{productId}/delivery-address/{addressId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `productId` (Required) | path | `number` |   |
| `addressId` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `MemberAddressDto`

Same fields as [Add invoice address of a subscribed product (Request body)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-id-invoice-address).

**Example request body**

`application/json`

```json
{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}
```

### Responses

#### 200

Content type: `application/json` · `DeliveryAddress`

Same fields as [Add delivery address of a subscribed product (201)](https://www.subrite.no/developers/member-profile?md=true#post-api-v1-members-profile-subscriptions-product-id-delivery-address).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{productId}/delivery-address/{addressId}' \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "line1": "string",
  "line2": "string",
  "city": "string",
  "state": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "user@example.com",
  "organizationNo": "string",
  "companyName": "string",
  "invoiceReference": "string"
}'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "route": "string",
  "line1": "string",
  "line2": "string",
  "city": "string",
  "postCode": "string",
  "country": "string",
  "name": "string",
  "email": "string",
  "companyName": "string",
  "organizationNo": "string",
  "invoiceReference": "string",
  "isSynced": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z"
}
```

<a id="delete-api-v1-members-profile-subscriptions-product-id-delivery-address-addressid"></a>
## Soft Remove delivery address of a subscribed product

`DELETE /api/v1/members/profile/subscriptions/product/{id}/delivery-address/{addressId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `addressId` (Required) | path | `number` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/product/{id}/delivery-address/{addressId}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-members-profile-consents"></a>
## Get consents

`GET /api/v1/members/profile/consents`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of MemberConsentDto`

| Name | Type | Description |
| --- | --- | --- |
| `[].id` (Required when parent is present) | `number` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].title` (Required when parent is present) | `string` |   |
| `[].description` (Required when parent is present) | `string` |   |
| `[].image` (Required when parent is present) | `string` |   |
| `[].showOnCheckoutPage` (Required when parent is present) | `boolean` |   |
| `[].showOnMyPage` (Required when parent is present) | `boolean` |   |
| `[].status` (Required when parent is present) | `object` |   |
| `[].sortOrder` (Required when parent is present) | `number` |   |
| `[].frequency` (Required when parent is present) | `string` |   |
| `[].newsletterProviderConfigId` (Required when parent is present) | `number` | Can be null |
| `[].consentStatus` (Required when parent is present) | `string` |   |
| `[].purpose` (Required when parent is present) | `string` | Allowed values: `"marketing_and_newsletter"`, `"consent"` |
| `[].visibility` (Required when parent is present) | `string` | Allowed values: `"subscriber"`, `"nonSubscriber"`, `"all"` |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

memberNotFound

Same fields as [Get logged in member info with content access (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-info-with-content-access).

**Example response**

`application/json`

```json
{
  "messageCode": "memberNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/consents \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "id": 0,
    "updatedAt": "2019-08-24T14:15:22Z",
    "title": "string",
    "description": "string",
    "image": "string",
    "showOnCheckoutPage": true,
    "showOnMyPage": true,
    "status": {},
    "sortOrder": 0,
    "frequency": "string",
    "newsletterProviderConfigId": 0,
    "consentStatus": "string",
    "purpose": "marketing_and_newsletter",
    "visibility": "subscriber"
  }
]
```

<a id="patch-api-v1-members-profile-consents-toggle-id"></a>
## Toggle member consent status by id

`PATCH /api/v1/members/profile/consents/toggle/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `ConsentUpdateDto`

| Name | Type | Description |
| --- | --- | --- |
| `channel` (Required) | `string` | Allowed values: `"mypage"`, `"onboarding"`, `"newsletter"`, `"admin"`, `"mailchimp"`, `"make"`, `"m2m"`, `"mailmojo"`, `"import"` |
| `reference` | `string` | Can be null |
| `note` (Required) | `string` | `maxLength`: `1000` |

**Example request body**

`application/json`

```json
{
  "channel": "mypage",
  "reference": "string",
  "note": "string"
}
```

### Responses

#### 200

Content type: `application/json` · `MemberConsentDto`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `title` (Required) | `string` |   |
| `description` (Required) | `string` |   |
| `image` (Required) | `string` |   |
| `showOnCheckoutPage` (Required) | `boolean` |   |
| `showOnMyPage` (Required) | `boolean` |   |
| `status` (Required) | `object` |   |
| `sortOrder` (Required) | `number` |   |
| `frequency` (Required) | `string` |   |
| `newsletterProviderConfigId` (Required) | `number` | Can be null |
| `consentStatus` (Required) | `string` |   |
| `purpose` (Required) | `string` | Allowed values: `"marketing_and_newsletter"`, `"consent"` |
| `visibility` (Required) | `string` | Allowed values: `"subscriber"`, `"nonSubscriber"`, `"all"` |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invalidConsent, mailchimpBadRequest

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"invalidConsent"`, `"mailchimpBadRequest"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 502

Content type: `application/json` · `ErrorResponse`

newsletterProviderError

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"newsletterProviderError"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "newsletterProviderError",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/consents/toggle/{id}' \
  --request PATCH \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "channel": "mypage",
  "reference": "string",
  "note": "string"
}'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "updatedAt": "2019-08-24T14:15:22Z",
  "title": "string",
  "description": "string",
  "image": "string",
  "showOnCheckoutPage": true,
  "showOnMyPage": true,
  "status": {},
  "sortOrder": 0,
  "frequency": "string",
  "newsletterProviderConfigId": 0,
  "consentStatus": "string",
  "purpose": "marketing_and_newsletter",
  "visibility": "subscriber"
}
```

<a id="post-api-v1-members-profile-consents-default-subscribe"></a>
## Subscribe default consents for current member

`POST /api/v1/members/profile/consents/default-subscribe`

**Authentication:** Bearer token (JWT)

### Responses

#### 201

Content type: `application/json` · `boolean`

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

memberNotFound

Same fields as [Get logged in member info with content access (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-info-with-content-access).

**Example response**

`application/json`

```json
{
  "messageCode": "memberNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 502

Content type: `application/json` · `ErrorResponse`

newsletterProviderError

Same fields as [Toggle member consent status by id (502)](https://www.subrite.no/developers/member-profile?md=true#patch-api-v1-members-profile-consents-toggle-id).

**Example response**

`application/json`

```json
{
  "messageCode": "newsletterProviderError",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/consents/default-subscribe \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

### Example response

201 · `application/json`

```json
true
```

<a id="post-api-v1-members-profile-subscriptions-id-change"></a>
## Change subscription package and products

`POST /api/v1/members/profile/subscriptions/{id}/change`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `ChangeSubscriptionDto`

| Name | Type | Description |
| --- | --- | --- |
| `planId` | `number` |   |
| `isImmediate` (Required) | `boolean` |   |
| `products` | `array of OptionalProductWithQuantity` |   |
| `products[].productId` (Required when parent is present) | `number` | `minimum`: `1` |
| `products[].quantity` (Required when parent is present) | `number` | `minimum`: `1` |
| `products[].shippingCountry` | `string` | `maxLength`: `64` |
| `products[].manualPrice` | `number` |   |
| `seatTransferMap` | `array of SeatTransferMappingDto` | Optional per-source-product mapping used when switching to a different plan on a group subscription. Required for group plan switches when the old plan has member-package-products with existing seats; must map each such product to a product on the new plan that has enough seat capacity. |
| `seatTransferMap[].fromMemberPackageProductId` (Required when parent is present) | `number` | Id of the existing MemberPackageProduct whose seats should be transferred to the new plan. |
| `seatTransferMap[].toNewPlanProductId` (Required when parent is present) | `number` | Id of the Product on the new plan that will receive the transferred seats. Must be present in the change payload products list. |

**Example request body**

`application/json`

```json
{
  "planId": 0,
  "isImmediate": true
}
```

### Responses

#### 201

Content type: `application/json` · `ChangeSubscriptionResponse`

| Name | Type | Description |
| --- | --- | --- |
| `subscriptionChangeId` (Required) | `number` |   |
| `orderId` | `number` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, subscriptionChangeBlockedNotActive, subscriptionChangeBlockedPastDue, subscriptionChangeBlockedOnRenewalDay, subscriptionChangeBlockedVippsChargeCreated, subscriptionChangeBlockedVippsChargeWindow, subscriptionChangeBlockedInvoicePaidNextPeriod, subscriptionChangeBlockedInvoiceUnpaidCurrentPeriod, seatTransferTargetPlanNotGroupCapable, seatTransferMappingRequired, seatTransferDuplicateSource, seatTransferTargetNotInPlan, seatTransferTargetNotDigital, seatTransferInsufficientCapacity

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"subscriptionChangeBlockedNotActive"`, `"subscriptionChangeBlockedPastDue"`, `"subscriptionChangeBlockedOnRenewalDay"`, `"subscriptionChangeBlockedVippsChargeCreated"`, `"subscriptionChangeBlockedVippsChargeWindow"`, `"subscriptionChangeBlockedInvoicePaidNextPeriod"`, `"subscriptionChangeBlockedInvoiceUnpaidCurrentPeriod"`, `"seatTransferTargetPlanNotGroupCapable"`, `"seatTransferMappingRequired"`, `"seatTransferDuplicateSource"`, `"seatTransferTargetNotInPlan"`, `"seatTransferTargetNotDigital"`, `"seatTransferInsufficientCapacity"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound, memberPackageNotFound

Same fields as [Toggle auto renewal of subscription (404)](https://www.subrite.no/developers/member-profile?md=true#patch-api-v1-members-profile-subscriptions-id-auto-renewal-activate).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/change' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "planId": 0,
  "isImmediate": true,
  "products": [
    {}
  ],
  "seatTransferMap": [
    {}
  ]
}'
```

### Example response

201 · `application/json`

```json
{
  "subscriptionChangeId": 0,
  "orderId": 0
}
```

<a id="get-api-v1-members-profile-subscriptions-id-change-changeid"></a>
## Get subscription change details

`GET /api/v1/members/profile/subscriptions/{id}/change/{changeId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `changeId` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `ChangeSubscriptionDetails`

| Name | Type | Description |
| --- | --- | --- |
| `id` (Required) | `number` |   |
| `currentPlanName` (Required) | `string` |   |
| `newPlanName` (Required) | `string` |   |
| `currentProducts` (Required) | `array of ProductPackage` |   |
| `currentProducts[].circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `currentProducts[].id` (Required when parent is present) | `number` |   |
| `currentProducts[].name` (Required when parent is present) | `string` |   |
| `currentProducts[].productId` (Required when parent is present) | `number` |   |
| `currentProducts[].productCategory` (Required when parent is present) | `string` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `currentProducts[].price` (Required when parent is present) | `number` |   |
| `currentProducts[].recurringPrice` (Required when parent is present) | `number` |   |
| `currentProducts[].quantity` (Required when parent is present) | `number` |   |
| `currentProducts[].hasAccess` (Required when parent is present) | `boolean` |   |
| `currentProducts[].isOptional` (Required when parent is present) | `boolean` |   |
| `currentProducts[].shippingCountry` (Required when parent is present) | `string` |   |
| `currentProducts[].shippingCharges` (Required when parent is present) | `array of ShippingCharge` |   |
| `currentProducts[].shippingCharges[].country` (Required when parent is present) | `string` |   |
| `currentProducts[].shippingCharges[].charge` (Required when parent is present) | `number` |   |
| `currentProducts[].shippingCountries` (Required when parent is present) | `array of string` |   |
| `currentProducts[].shippingPrice` (Required when parent is present) | `number` |   |
| `currentProducts[].groupInfo` (Required when parent is present) | `GroupSubscriptionResponse` |   |
| `currentProducts[].groupInfo.ownerHasAccess` (Required when parent is present) | `boolean` | Default: `false` |
| `currentProducts[].groupInfo.seatsAllowed` (Required when parent is present) | `number` | Default: `0` |
| `currentProducts[].groupInfo.seatsActive` (Required when parent is present) | `number` | Default: `0` |
| `currentProducts[].groupInfo.seatsRemaining` (Required when parent is present) | `number` | Default: `0` |
| `currentProducts[].groupInfo.groupMemberCount` (Required when parent is present) | `number` | Group members holding a live seat (accepted or open invitation). Excludes the owner's own access and expired invitations. · Default: `0` |
| `currentProducts[].groupInfo.maxQuantityPerOrder` (Required when parent is present) | `number` |   |
| `currentProducts[].groupInfo.assignSeatToOwner` (Required when parent is present) | `boolean` |   |
| `currentProducts[].groupInfo.groupOwnerMemberName` (Required when parent is present) | `string` |   |
| `currentProducts[].groupInfo.groupOwnerMemberId` (Required when parent is present) | `string` |   |
| `currentProducts[].groupInfo.groupOwnerMemberNumber` (Required when parent is present) | `number` |   |
| `currentProducts[].groupInfo.seats` (Required when parent is present) | `array of SeatData` | Default: `[]` · Deprecated · Nested fields omitted: depth limit. |
| `newProducts` (Required) | `array of ProductPackage` |   |
| `newProducts[].circulationType` | `CIRCULATION_TYPE` | Allowed values: `"subscription"`, `"single_copy"` · Can be null |
| `newProducts[].id` (Required when parent is present) | `number` |   |
| `newProducts[].name` (Required when parent is present) | `string` |   |
| `newProducts[].productId` (Required when parent is present) | `number` |   |
| `newProducts[].productCategory` (Required when parent is present) | `string` | Allowed values: `"digital_subscription"`, `"physical_subscription"`, `"physical"`, `"event_ticket"`, `"PHYSICAL_PRODUCT"` |
| `newProducts[].price` (Required when parent is present) | `number` |   |
| `newProducts[].recurringPrice` (Required when parent is present) | `number` |   |
| `newProducts[].quantity` (Required when parent is present) | `number` |   |
| `newProducts[].hasAccess` (Required when parent is present) | `boolean` |   |
| `newProducts[].isOptional` (Required when parent is present) | `boolean` |   |
| `newProducts[].shippingCountry` (Required when parent is present) | `string` |   |
| `newProducts[].shippingCharges` (Required when parent is present) | `array of ShippingCharge` |   |
| `newProducts[].shippingCharges[].country` (Required when parent is present) | `string` |   |
| `newProducts[].shippingCharges[].charge` (Required when parent is present) | `number` |   |
| `newProducts[].shippingCountries` (Required when parent is present) | `array of string` |   |
| `newProducts[].shippingPrice` (Required when parent is present) | `number` |   |
| `newProducts[].groupInfo` (Required when parent is present) | `GroupSubscriptionResponse` | Nested fields omitted: field limit. |
| `currentPaymentProviderInfo` (Required) | `PaymentInfo` |   |
| `currentPaymentProviderInfo.stripeCardInfo` (Required) | `StripeCardInfo` |   |
| `currentPaymentProviderInfo.stripeCardInfo.brand` (Required) | `string` |   |
| `currentPaymentProviderInfo.stripeCardInfo.expMonth` (Required) | `number` |   |
| `currentPaymentProviderInfo.stripeCardInfo.expYear` (Required) | `number` |   |
| `currentPaymentProviderInfo.stripeCardInfo.last4` (Required) | `string` |   |
| `currentPaymentProviderInfo.stripeCardInfo.country` (Required) | `string` |   |
| `currentPaymentProviderInfo.isLink` (Required) | `boolean` |   |
| `currentPaymentProviderInfo.netsCardInfo` (Required) | `NetsCardInfo` |   |
| `currentPaymentProviderInfo.swedbankpayCardInfo` (Required) | `SwedbankpayCardInfo` | Nested fields omitted: field limit. |
| `currentPaymentProviderInfo.vippsPaymentInfoWithDueCharge` (Required) | `VippsPaymentInfoWithDueCharge` | Nested fields omitted: field limit. |
| `currentPaymentProviderInfo.eInvoicePaymentInfo` (Required) | `EInvoicePaymentInfo` | Nested fields omitted: field limit. |
| `currentPaymentProviderInfo.externalPaymentInfo` (Required) | `ExternalPaymentInfo` |   |
| `currentPaymentProviderInfo.externalPaymentInfo.isPaid` (Required) | `boolean` |   |
| `currentPaymentProviderInfo.externalPaymentInfo.paidTill` (Required) | `string (date-time)` |   |
| `currentBillingPeriod` (Required) | `BillingPeriodInfo` |   |
| `currentBillingPeriod.billingPeriod` (Required) | `string` |   |
| `currentBillingPeriod.customBillingPeriod` (Required) | `BillingPeriodDetails` | Nested fields omitted: field limit. |
| `newBillingPeriod` (Required) | `BillingPeriodInfo` |   |
| `newBillingPeriod.billingPeriod` (Required) | `string` |   |
| `newBillingPeriod.customBillingPeriod` (Required) | `BillingPeriodDetails` | Nested fields omitted: field limit. |
| `currentPeriodStart` (Required) | `string (date-time)` |   |
| `nextRenewal` (Required) | `string (date-time)` |   |
| `newPeriodStart` (Required) | `string (date-time)` |   |
| `changeInPrice` (Required) | `number` |   |
| `currentRecurringPrice` (Required) | `number` |   |
| `nextRenewalPrice` (Required) | `number` |   |
| `autoRenew` (Required) | `boolean` |   |
| `newPackageAutoRenew` (Required) | `boolean` |   |
| `orderId` (Required) | `number` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/change/{changeId}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "id": 0,
  "currentPlanName": "string",
  "newPlanName": "string",
  "currentProducts": [
    {
      "shippingCharges": [],
      "shippingCountries": []
    }
  ],
  "newProducts": [
    {
      "shippingCharges": [],
      "shippingCountries": []
    }
  ],
  "currentPaymentProviderInfo": {
    "stripeCardInfo": {},
    "isLink": true,
    "netsCardInfo": {},
    "swedbankpayCardInfo": {},
    "vippsPaymentInfoWithDueCharge": {},
    "eInvoicePaymentInfo": {},
    "externalPaymentInfo": {}
  },
  "currentBillingPeriod": {
    "billingPeriod": "string",
    "customBillingPeriod": {}
  },
  "newBillingPeriod": {
    "billingPeriod": "string",
    "customBillingPeriod": {}
  },
  "currentPeriodStart": "2019-08-24T14:15:22Z",
  "nextRenewal": "2019-08-24T14:15:22Z",
  "newPeriodStart": "2019-08-24T14:15:22Z",
  "changeInPrice": 0,
  "currentRecurringPrice": 0,
  "nextRenewalPrice": 0,
  "autoRenew": true,
  "newPackageAutoRenew": true,
  "orderId": 0
}
```

<a id="patch-api-v1-members-profile-subscriptions-id-change-changeid-cancel"></a>
## Cancel subscription change details

`PATCH /api/v1/members/profile/subscriptions/{id}/change/{changeId}/cancel`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `changeId` (Required) | path | `number` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/change/{changeId}/cancel' \
  --request PATCH \
  --header 'Authorization: Bearer <token>'
```

<a id="patch-api-v1-members-profile-subscriptions-id-change-changeid-confirm"></a>
## Confirm subscription change for next renewal

`PATCH /api/v1/members/profile/subscriptions/{id}/change/{changeId}/confirm`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |
| `changeId` (Required) | path | `number` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest, invalidStatus

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"invalidStatus"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/change/{changeId}/confirm' \
  --request PATCH \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-members-profile-missing-info"></a>
## Get missing info alerts for member info, invited member info

`GET /api/v1/members/profile/missing-info`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of MissingInfoResponse`

| Name | Type | Description |
| --- | --- | --- |
| `[].missingInfoType` (Required when parent is present) | `MISSING_INFO` | Allowed values: `"member_details"`, `"invited_member_details"`, `"member_not_invited"`, `"gift_receiver_not_added"`, `"activation_date"`, `"available_subscriptions_to_join"`, `"active_subscriptions"` |
| `[].alertIndex` (Required when parent is present) | `string` |   |
| `[].missingFields` (Required when parent is present) | `array of string` |   |
| `[].invitedMemberInfo` (Required when parent is present) | `InvitedMemberInfo` |   |
| `[].invitedMemberInfo.subscriptionId` (Required when parent is present) | `number` |   |
| `[].invitedMemberInfo.seatId` (Required when parent is present) | `number` |   |
| `[].invitedMemberInfo.memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].invitedMemberInfo.productName` (Required when parent is present) | `string` |   |
| `[].invitedMemberInfo.invitedMemberEmail` (Required when parent is present) | `string` |   |
| `[].memberNotInvitedInfo` (Required when parent is present) | `MemberNotInvitedInfo` |   |
| `[].memberNotInvitedInfo.subscriptionId` (Required when parent is present) | `number` |   |
| `[].memberNotInvitedInfo.packageName` (Required when parent is present) | `string` |   |
| `[].memberNotInvitedInfo.subscriptionProductInfo` (Required when parent is present) | `array of SubscriptionProductInfo` |   |
| `[].memberNotInvitedInfo.subscriptionProductInfo[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].memberNotInvitedInfo.subscriptionProductInfo[].productName` (Required when parent is present) | `string` |   |
| `[].giftReceiverNotAddedInfo` (Required when parent is present) | `GiftReceiverNotAddedInfo` |   |
| `[].giftReceiverNotAddedInfo.subscriptionId` (Required when parent is present) | `number` |   |
| `[].giftReceiverNotAddedInfo.planName` (Required when parent is present) | `string` |   |
| `[].giftReceiverNotAddedInfo.subscriptionProductInfo` (Required when parent is present) | `array of SubscriptionProductInfo` |   |
| `[].giftReceiverNotAddedInfo.subscriptionProductInfo[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].giftReceiverNotAddedInfo.subscriptionProductInfo[].productName` (Required when parent is present) | `string` |   |
| `[].activationDateMissingInfo` (Required when parent is present) | `ActivationDateMissingInfo` |   |
| `[].activationDateMissingInfo.subscriptionId` (Required when parent is present) | `number` |   |
| `[].activationDateMissingInfo.planName` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin` (Required when parent is present) | `array of MemberPackageProduct` |   |
| `[].availableSubscriptionsToJoin[].memberPackageId` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].productId` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].price` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].recurringPrice` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].quantity` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].hasAccess` (Required when parent is present) | `boolean` |   |
| `[].availableSubscriptionsToJoin[].shippingCountry` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].shippingProvider` (Required when parent is present) | `string` | Allowed values: `"Helthjem"`, `"Bring - Posten"`, `"Distribution Innovation"` |
| `[].availableSubscriptionsToJoin[].allowDistributorToUpdateDeliveryAddress` (Required when parent is present) | `boolean` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains` (Required when parent is present) | `array of MemberPackageProductEmailDomain` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].emailDomain` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].updatedBy` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].id` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductEmailDomains[].metaData` (Required when parent is present) | `object` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps` (Required when parent is present) | `array of MemberPackageProductIp` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].ipRange` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].label` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].updatedBy` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].id` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].memberPackageProductIps[].metaData` (Required when parent is present) | `object` |   |
| `[].availableSubscriptionsToJoin[].memberPackage` (Required when parent is present) | `MemberPackage` | Nested fields omitted: field limit. |
| `[].availableSubscriptionsToJoin[].product` (Required when parent is present) | `Product` | Nested fields omitted: field limit. |
| `[].availableSubscriptionsToJoin[].seats` (Required when parent is present) | `array of MemberPackageProductSeat` |   |
| `[].availableSubscriptionsToJoin[].seats[].memberPackageProductId` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].seats[].memberId` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].seats[].email` (Required when parent is present) | `string` | Can be null |
| `[].availableSubscriptionsToJoin[].seats[].accepted` (Required when parent is present) | `boolean` |   |
| `[].availableSubscriptionsToJoin[].seats[].acceptedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].seats[].expiresAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].seats[].uuid` (Required when parent is present) | `string` |   |
| `[].availableSubscriptionsToJoin[].seats[].memberPackageProduct` (Required when parent is present) | `MemberPackageProduct` | Recursive schema; nested fields are not repeated. |
| `[].availableSubscriptionsToJoin[].seats[].member` (Required when parent is present) | `Member` | Nested fields omitted: depth limit. |
| `[].availableSubscriptionsToJoin[].seats[].id` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].seats[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].seats[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].seats[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].seats[].metaData` (Required when parent is present) | `object` |   |
| `[].availableSubscriptionsToJoin[].recipients` (Required when parent is present) | `array of MemberPackageProductRecipient` | Nested fields omitted: field limit. |
| `[].availableSubscriptionsToJoin[].id` (Required when parent is present) | `number` |   |
| `[].availableSubscriptionsToJoin[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].availableSubscriptionsToJoin[].metaData` (Required when parent is present) | `object` |   |
| `[].buyNewSubscriptionPackageSlug` (Required when parent is present) | `string` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/missing-info \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "missingInfoType": "member_details",
    "alertIndex": "string",
    "missingFields": [],
    "invitedMemberInfo": {},
    "memberNotInvitedInfo": {
      "subscriptionProductInfo": []
    },
    "giftReceiverNotAddedInfo": {
      "subscriptionProductInfo": []
    },
    "activationDateMissingInfo": {},
    "availableSubscriptionsToJoin": [],
    "buyNewSubscriptionPackageSlug": "string"
  }
]
```

<a id="get-api-v1-members-profile-login-accounts"></a>
## Get all login linked accounts of a member

`GET /api/v1/members/profile/login-accounts`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of LoginAccountsResponse`

| Name | Type | Description |
| --- | --- | --- |
| `[].id` (Required when parent is present) | `string` |   |
| `[].provider` (Required when parent is present) | `string` |   |
| `[].providerAccountId` (Required when parent is present) | `string` |   |
| `[].email` | `string` |   |
| `[].phone` | `string` |   |
| `[].userId` (Required when parent is present) | `number` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/login-accounts \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "id": "string",
    "provider": "string",
    "providerAccountId": "string",
    "email": "string",
    "phone": "<phone>",
    "userId": 0
  }
]
```

<a id="post-api-v1-members-profile-subscription-plan-price-by-quantity"></a>
## Get recurring price by quantity of optional products of logged in member subscription

`POST /api/v1/members/profile/subscription-plan/price-by-quantity`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `SubscriptionPlanPriceByQuantityDto`

| Name | Type | Description |
| --- | --- | --- |
| `planId` (Required) | `number` | `minimum`: `1` |
| `products` (Required) | `array of OptionalProductWithQuantity` |   |
| `products[].productId` (Required when parent is present) | `number` | `minimum`: `1` |
| `products[].quantity` (Required when parent is present) | `number` | `minimum`: `1` |
| `products[].shippingCountry` | `string` | `maxLength`: `64` |
| `products[].manualPrice` | `number` |   |
| `memberPackageId` | `number` |   |

### Responses

#### 201

Content type: `application/json` · `SubscriptionPlanResponse`

Same fields as [Get subscription plan settings details (200)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscription-plans-id).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get mypage cards settings of a tenant (400)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/members/profile/subscription-plan/price-by-quantity \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "planId": 1,
  "products": [
    {}
  ],
  "memberPackageId": 0
}'
```

### Example response

201 · `application/json`

```json
{
  "paymentProviders": [
    "stripe"
  ],
  "name": "string",
  "uuid": "string",
  "billingPeriod": "monthly",
  "billingPeriodUnit": "day",
  "billingPeriodFrequency": 0,
  "autoRenew": true,
  "status": "draft",
  "tenantId": 0,
  "allowSameSubscriptionChange": true,
  "allowDifferentSubscriptionSwitch": true,
  "allowAdminSameSubscriptionChange": true,
  "allowAdminDifferentSubscriptionSwitch": true,
  "enableGiftSubscription": true,
  "allowFutureStartDate": true,
  "showAsOptionOnSubscriptionSwitch": true,
  "showAsOptionOnAdminSubscriptionSwitch": true,
  "offerSwitchOnCheckout": true,
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "entityTags": [
    {
      "metaData": {}
    }
  ],
  "subscriptionPlanProducts": [
    {
      "metaData": {}
    }
  ],
  "packages": [
    {
      "paymentProviders": [],
      "description": {},
      "packageProducts": [],
      "payments": [],
      "memberPackages": [],
      "metaData": {}
    }
  ],
  "memberPackages": [
    {
      "memberPackageProducts": [],
      "orders": [],
      "changes": [],
      "histories": [],
      "metaData": {}
    }
  ],
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {},
  "subscriptionCount": 0,
  "products": [
    {
      "shippingCharges": []
    }
  ],
  "tags": [
    "string"
  ],
  "price": 0,
  "hasOptionalProducts": true
}
```

<a id="delete-api-v1-members-profile-login-accounts-id"></a>
## Remove a linked account of a member

`DELETE /api/v1/members/profile/login-accounts/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `string` |   |

### Responses

#### 200

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/login-accounts/{id}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="post-api-v1-members-profile-subscription-action-help-text-id"></a>
## Get help text for subscription action

`POST /api/v1/members/profile/subscription-action-help-text/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `SubscriptionActionHelpTextRequestDto`

| Name | Type | Description |
| --- | --- | --- |
| `language` | `LANGUAGE` | Allowed values: `"en"`, `"no"`, `"sv"`, `"da"` |
| `autoRenew` | `boolean` |   |
| `isRestart` | `boolean` |   |

**Example request body**

`application/json`

```json
{
  "language": "en",
  "autoRenew": true,
  "isRestart": true
}
```

### Responses

#### 201

Content type: `application/json` · `SubscriptionActionHelpTextResponse`

| Name | Type | Description |
| --- | --- | --- |
| `helpText` (Required) | `string` |   |

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbiddenResource

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscription-action-help-text/{id}' \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "language": "en",
  "autoRenew": true,
  "isRestart": true
}'
```

### Example response

201 · `application/json`

```json
{
  "helpText": "string"
}
```

<a id="delete-api-v1-members-profile-subscriptions-id-payment-method"></a>
## Remove the subscription's stored payment method

`DELETE /api/v1/members/profile/subscriptions/{id}/payment-method`

Deletes the card at the payment provider and clears every local copy of it. Allowed only for the paying owner, and only while the subscription cannot be charged — a terminal status, or active with auto-renew off. Idempotent: repeating it on a subscription that stores nothing succeeds.

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 204

#### 401

Content type: `application/json` · `ErrorResponse`

unauthorized

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 403

Content type: `application/json` · `ErrorResponse`

forbidden

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"forbidden"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "forbidden",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 404

Content type: `application/json` · `ErrorResponse`

notFound

Same fields as [Get logged in member subscriptions (404)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-subscriptions).

**Example response**

`application/json`

```json
{
  "messageCode": "notFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 409

Content type: `application/json` · `ErrorResponse`

storedPaymentMethodRemovalNotAllowed

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"storedPaymentMethodRemovalNotAllowed"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "storedPaymentMethodRemovalNotAllowed",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

Content type: `application/json` · `ErrorResponse`

internalServerError

Same fields as [Get mypage cards settings of a tenant (401)](https://www.subrite.no/developers/member-profile?md=true#get-api-v1-members-profile-mypage-cards-settings).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/members/profile/subscriptions/{id}/payment-method' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```
