Courier User Profiles API
The User Profiles API from Courier — 2 operation(s) for user profiles.
The User Profiles API from Courier — 2 operation(s) for user profiles.
openapi: 3.0.1
info:
title: Courier Audiences User Profiles API
description: The Courier REST API.
version: "1.0"
servers:
- url: https://api.courier.com
description: Production
tags:
- name: User Profiles
paths:
/profiles/{user_id}:
get:
description: Returns the specified user profile.
operationId: profiles_get
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested profile.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileGetResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Get a profile
security:
- BearerAuth: []
post:
description: Merge the supplied values with an existing profile or create a new profile if one doesn't already exist.
operationId: profiles_create
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested profile.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/MergeProfileResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Create a profile
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
profile:
type: object
additionalProperties: true
required:
- profile
put:
description: "When using `PUT`, be sure to include all the key-value pairs required by the recipient's profile. \nAny key-value pairs that exist in the profile but fail to be included in the `PUT` request will be \nremoved from the profile. Remember, a `PUT` update is a full replacement of the data. For partial updates, \nuse the [Patch](https://www.courier.com/docs/reference/profiles/patch/) request."
operationId: profiles_replace
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested user profile.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReplaceProfileResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Replace a profile
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
profile:
type: object
additionalProperties: true
required:
- profile
patch:
operationId: profiles_mergeProfile
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested user profile.
required: true
schema:
type: string
responses:
'204':
description: ''
summary: Update a profile
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProfileUpdateRequest'
delete:
description: Deletes the specified user profile.
operationId: profiles_delete
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested user profile.
required: true
schema:
type: string
responses:
'204':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Delete a profile
security:
- BearerAuth: []
/profiles/{user_id}/lists:
get:
description: Returns the subscribed lists for a specified user.
operationId: profiles_getListSubscriptions
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested user profile.
required: true
schema:
type: string
- name: cursor
in: query
description: A unique identifier that allows for fetching the next set of message statuses.
required: false
schema:
type: string
nullable: true
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetListSubscriptionsResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Get list subscriptions
security:
- BearerAuth: []
post:
description: Subscribes the given user to one or more lists. If the list does not exist, it will be created.
operationId: profiles_subscribeToList
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested user profile.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SubscribeToListsResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Subscribe to one or more lists
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubscribeToListsRequest'
delete:
description: Removes all list subscriptions for given user.
operationId: profiles_deleteListSubscription
tags:
- User Profiles
parameters:
- name: user_id
in: path
description: A unique identifier representing the user associated with the requested profile.
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteListSubscriptionResponse'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
summary: Delete list subscriptions
security:
- BearerAuth: []
components:
schemas:
ChannelPreference:
title: ChannelPreference
type: object
properties:
channel:
$ref: '#/components/schemas/ChannelClassification'
required:
- channel
BadRequest:
title: BadRequest
type: object
properties:
type:
type: string
enum:
- invalid_request_error
required:
- type
allOf:
- $ref: '#/components/schemas/BaseError'
GetListSubscriptionsItem:
title: GetListSubscriptionsItem
type: object
properties:
id:
type: string
name:
type: string
description: List name
created:
type: string
description: The date/time of when the list was created. Represented as a string in ISO format.
updated:
type: string
description: The date/time of when the list was updated. Represented as a string in ISO format.
preferences:
$ref: '#/components/schemas/RecipientPreferences'
nullable: true
required:
- id
- name
- created
- updated
PreferenceStatus:
title: PreferenceStatus
type: string
enum:
- OPTED_IN
- OPTED_OUT
- REQUIRED
SubscribeToListsRequest:
title: SubscribeToListsRequest
type: object
properties:
lists:
type: array
items:
$ref: '#/components/schemas/SubscribeToListsRequestItem'
required:
- lists
NotificationPreferenceDetails:
title: NotificationPreferenceDetails
type: object
properties:
status:
$ref: '#/components/schemas/PreferenceStatus'
rules:
type: array
items:
$ref: '#/components/schemas/Rule'
nullable: true
channel_preferences:
type: array
items:
$ref: '#/components/schemas/ChannelPreference'
nullable: true
required:
- status
ChannelClassification:
title: ChannelClassification
type: string
enum:
- direct_message
- email
- push
- sms
- webhook
- inbox
BaseError:
title: BaseError
type: object
properties:
message:
type: string
description: A message describing the error that occurred.
required:
- message
Rule:
title: Rule
type: object
properties:
start:
type: string
nullable: true
until:
type: string
required:
- until
ProfileUpdateRequest:
title: ProfileUpdateRequest
type: object
properties:
patch:
type: array
items:
$ref: '#/components/schemas/UserProfilePatch'
description: List of patch operations to apply to the profile.
required:
- patch
NotificationPreferences:
title: NotificationPreferences
type: object
additionalProperties:
$ref: '#/components/schemas/NotificationPreferenceDetails'
SubscribeToListsRequestItem:
title: SubscribeToListsRequestItem
type: object
properties:
listId:
type: string
preferences:
$ref: '#/components/schemas/RecipientPreferences'
nullable: true
required:
- listId
MergeProfileResponse:
title: MergeProfileResponse
type: object
properties:
status:
type: string
enum:
- SUCCESS
required:
- status
ReplaceProfileResponse:
title: ReplaceProfileResponse
type: object
properties:
status:
type: string
enum:
- SUCCESS
required:
- status
RecipientPreferences:
title: RecipientPreferences
type: object
properties:
categories:
$ref: '#/components/schemas/NotificationPreferences'
nullable: true
notifications:
$ref: '#/components/schemas/NotificationPreferences'
nullable: true
UserProfilePatch:
title: UserProfilePatch
type: object
properties:
op:
type: string
description: The operation to perform.
path:
type: string
description: The JSON path specifying the part of the profile to operate on.
value:
type: string
description: The value for the operation.
required:
- op
- path
- value
ProfileGetResponse:
title: ProfileGetResponse
type: object
properties:
profile:
type: object
additionalProperties: true
preferences:
$ref: '#/components/schemas/RecipientPreferences'
nullable: true
required:
- profile
SubscribeToListsResponse:
title: SubscribeToListsResponse
type: object
properties:
status:
type: string
enum:
- SUCCESS
required:
- status
DeleteListSubscriptionResponse:
title: DeleteListSubscriptionResponse
type: object
properties:
status:
type: string
enum:
- SUCCESS
required:
- status
GetListSubscriptionsResponse:
title: GetListSubscriptionsResponse
type: object
properties:
paging:
$ref: '#/components/schemas/Paging'
results:
type: array
items:
$ref: '#/components/schemas/GetListSubscriptionsItem'
description: An array of lists
required:
- paging
- results
Paging:
title: Paging
type: object
properties:
cursor:
type: string
nullable: true
more:
type: boolean
required:
- more
securitySchemes:
BearerAuth:
type: http
scheme: bearer