Elastic Path Subscribers API
A subscriber is someone who subscribes to your plan or service.
A subscriber is someone who subscribes to your plan or service.
openapi: 3.1.0
info:
version: 25.1126.6886238
x-version-timestamp: 2025-11-26 19:10:23+00:00
title: Addresses Introduction Account Addresses Subscribers API
description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.
You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.
'
contact:
name: Elastic Path
url: https://www.elasticpath.com
email: support@elasticpath.com
license:
url: https://elasticpath.dev
name: MIT
servers:
- url: https://useast.api.elasticpath.com
description: US East
- url: https://euwest.api.elasticpath.com
description: EU West
security:
- BearerToken: []
tags:
- name: Subscribers
description: 'A subscriber is someone who subscribes to your plan or service.
'
paths:
/v2/subscriptions/subscribers:
parameters:
- $ref: '#/components/parameters/Filter'
get:
tags:
- Subscribers
summary: List subscribers
parameters:
- $ref: '#/components/parameters/PageOffset'
- $ref: '#/components/parameters/PageLimit'
operationId: ListSubscribers
description: "Retrieves a list of all subscribers.\n\n### Filtering\n\nThis endpoint supports filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering).\n\nThe following attributes and operators are supported.\n\n| Operator | Attribute | Description |\n| --- | --- | --- | \n| `eq` | `account_id`, `name`, `email`, `external_ref` | Equals. Checks if the values of two operands are equal. If they are, the condition is true. |\n| `in` | `account_id`, `name`, `email`, `external_ref` | In. Checks if the value is in the specified list. If it is, the condition is true. |\n| `like` | `name`, `email` | Partial match (case-sensitive). Use `*` at the start, end, or both to match any sequence of characters (e.g. `*substring`, `substring*`, `*substring*`). |\n| `ilike` | `name`, `email` | Partial match (case-insensitive). Same as `like` but matching ignores case. Use `*` at the start, end, or both to match any sequence of characters. |\n"
responses:
'200':
description: Success. A list of subscribers is returned.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Subscriber'
links:
$ref: '#/components/schemas/Links'
'400':
$ref: '#/components/responses/ValidationError'
'500':
$ref: '#/components/responses/InternalServerError'
post:
tags:
- Subscribers
summary: Create a subscriber
operationId: CreateSubscriber
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/SubscriberCreate'
responses:
'201':
description: Success. The subscriber is created.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Subscriber'
'400':
$ref: '#/components/responses/ValidationError'
'500':
$ref: '#/components/responses/InternalServerError'
/v2/subscriptions/subscribers/{subscriber_uuid}:
parameters:
- name: subscriber_uuid
in: path
description: The unique identifier of the subscriber.
required: true
schema:
$ref: '#/components/schemas/UUID'
get:
tags:
- Subscribers
summary: Get a subscriber
operationId: GetSubscriber
responses:
'200':
description: Success. A subscriber is returned.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Subscriber'
'400':
$ref: '#/components/responses/ValidationError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
put:
tags:
- Subscribers
summary: Update a subscriber
operationId: UpdateSubscriber
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/SubscriberUpdate'
responses:
'200':
description: Success. The subscriber details are returned.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Subscriber'
'400':
$ref: '#/components/responses/ValidationError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFoundError'
'409':
$ref: '#/components/responses/WriteConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Subscribers
summary: Delete subscriber
operationId: DeleteSubscriber
responses:
'204':
description: Success. The subscriber is removed.
'400':
$ref: '#/components/responses/ValidationError'
'500':
$ref: '#/components/responses/InternalServerError'
components:
parameters:
PageOffset:
name: page[offset]
description: The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.
in: query
required: false
schema:
type: integer
format: int64
minimum: 0
maximum: 10000
example: 10
Filter:
name: filter
in: query
required: false
schema:
type: string
format: string
description: 'Some Subscriptions API endpoints support filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering), but you must go to a specific endpoint to understand the attributes and operators an endpoint supports.
'
example: eq(name,Alan Turing)
PageLimit:
name: page[limit]
description: The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the [page length](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.
in: query
required: false
schema:
type: integer
format: int64
minimum: 0
example: 100
responses:
ForbiddenError:
description: Forbidden. The operation is forbidden on this entity.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
not-found:
value:
errors:
- title: Permission denied
status: '404'
detail: 'Permission denied: plan tenancy mismatch'
NotFoundError:
description: Not found. The requested entity does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
not-found:
value:
errors:
- title: Not Found
status: '404'
detail: No plan found
WriteConflictError:
description: Write conflict. Unable to perform the operation at this time.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
errors:
- title: Write Conflict
status: '409'
ValidationError:
description: Bad request. The request failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
missing-name:
value:
errors:
- title: Validation Error
status: '400'
detail: 'data.attributes.name: "name" is required'
InternalServerError:
description: Internal server error. There was a system failure in the platform.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
internal-server-error:
value:
errors:
- title: Internal Server Error
status: '500'
schemas:
PaymentAuthorityAuthorizeNet:
type: object
required:
- type
properties:
type:
description: The name of the payment gateway facilitating the secure transmission of payment data.
type: string
example: authorize_net
enum:
- authorize_net
x-go-type: paymentgateways.GatewayName
x-go-type-import:
name: paymentgateways
path: gitlab.elasticpath.com/commerce-cloud/subscriptions.svc/internal/paymentgateways
payment_profile_id:
description: The customer's payment profile id, unique to Authorize.net, used to facilitate payment of the subscription.
type: string
minLength: 3
maxLength: 1024
example: '1511660856'
customer_profile_id:
description: The customer's profile id, unique to Authorize.net, used to facilitate payment of the subscription.
type: string
minLength: 3
maxLength: 1024
example: '1511736979'
Subscriber:
required:
- type
- attributes
- meta
properties:
id:
$ref: '#/components/schemas/UUID'
type:
$ref: '#/components/schemas/SubscriptionSubscriberType'
attributes:
$ref: '#/components/schemas/SubscriberResponseAttributes'
meta:
$ref: '#/components/schemas/SubscriberMeta'
SubscriptionSubscriberType:
type: string
example: subscription_subscriber
enum:
- subscription_subscriber
SubscriberResponseAttributes:
allOf:
- $ref: '#/components/schemas/SubscriberAttributes'
- $ref: '#/components/schemas/Timestamps'
Timestamps:
required:
- created_at
- updated_at
properties:
updated_at:
description: The date and time a resource was updated.
type: string
example: '2017-01-10T11:41:19.244842Z'
created_at:
description: The date and time a resource was created.
type: string
example: '2017-01-10T11:41:19.244842Z'
Link:
anyOf:
- $ref: '#/components/schemas/LinkURI'
- $ref: '#/components/schemas/LinkObject'
Error:
required:
- status
- title
properties:
status:
type: string
description: The HTTP response code of the error.
example: '500'
title:
type: string
description: A brief summary of the error.
example: Internal server error
detail:
type: string
description: Optional additional detail about the error.
example: An internal error has occurred.
meta:
type: object
description: Additional supporting meta data for the error.
example:
missing_ids:
- e7d50bd5-1833-43c0-9848-f9d325b08be8
ErrorResponse:
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
Links:
type: object
additionalProperties:
$ref: '#/components/schemas/Link'
SubscriberMeta:
readOnly: true
required:
- owner
- timestamps
properties:
feature_entitlements:
type: array
description: A list of entitlement tags currently active for the subscriber
example:
- tag1
- tag2
items:
$ref: '#/components/schemas/FeatureTag'
owner:
$ref: '#/components/schemas/OwnerMeta'
timestamps:
$ref: '#/components/schemas/Timestamps'
PaymentAuthority:
type: object
oneOf:
- $ref: '#/components/schemas/PaymentAuthorityEPPayments'
- $ref: '#/components/schemas/PaymentAuthorityStripe'
- $ref: '#/components/schemas/PaymentAuthorityAuthorizeNet'
discriminator:
propertyName: type
mapping:
elastic_path_payments_stripe: '#/components/schemas/PaymentAuthorityEPPayments'
stripe_payment_intents: '#/components/schemas/PaymentAuthorityStripe'
authorize_net: '#/components/schemas/PaymentAuthorityAuthorizeNet'
required:
- type
properties:
type:
description: The name of the payment gateway facilitating the secure transmission of payment data.
type: string
example: elastic_path_payments_stripe
enum:
- authorize_net
- elastic_path_payments_stripe
- stripe_payment_intents
x-go-type: paymentgateways.GatewayName
x-go-type-import:
name: paymentgateways
path: gitlab.elasticpath.com/commerce-cloud/subscriptions.svc/internal/paymentgateways
SubscriberAttributes:
required:
- name
- email
- account_id
properties:
account_id:
$ref: '#/components/schemas/UUID'
name:
type: string
description: The name of the subscriber.
minLength: 3
maxLength: 1024
example: John Doe
email:
type: string
format: email
description: The email of the subscriber.
minLength: 3
maxLength: 1024
example: john.doe@example.com
x-go-type: types.Email
x-go-type-import:
name: email
path: github.com/oapi-codegen/runtime/types
payment_authority:
$ref: '#/components/schemas/PaymentAuthority'
LinkObject:
type: object
properties:
href:
type: string
format: uri
example: http://example.com/articles/1/comments
title:
type: string
example: Comments
describedby:
type: string
format: uri
example: http://example.com/schemas/article-comments
PaymentAuthorityStripe:
writeOnly: true
type: object
required:
- type
properties:
type:
description: The name of the payment gateway facilitating the secure transmission of payment data.
type: string
example: stripe_payment_intents
enum:
- stripe_payment_intents
x-go-type: paymentgateways.GatewayName
x-go-type-import:
name: paymentgateways
path: gitlab.elasticpath.com/commerce-cloud/subscriptions.svc/internal/paymentgateways
customer_id:
description: The unique identifier for a customer.
type: string
minLength: 3
maxLength: 1024
example: cus_OPfKlxWV3hp9h6
card_id:
description: The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).
type: string
minLength: 3
maxLength: 1024
example: card_8Diw3FQPhxK27WADPVMeXieP
SubscriberUpdate:
required:
- id
- type
- attributes
properties:
id:
$ref: '#/components/schemas/UUID'
type:
$ref: '#/components/schemas/SubscriptionSubscriberType'
attributes:
$ref: '#/components/schemas/SubscriberUpdateAttributes'
UUID:
type: string
description: The unique identifier.
format: uuid
x-go-type: uuid.UUID
x-go-type-import:
name: uuid
path: github.com/google/uuid
example: 11111111-2222-3333-4444-555555555555
SubscriberUpdateAttributes:
properties:
name:
type: string
description: The name of the subscriber.
minLength: 3
maxLength: 1024
example: John Doe
email:
type: string
format: email
description: The email of the subscriber.
minLength: 3
maxLength: 1024
example: john.doe@example.com
x-go-type: types.Email
x-go-type-import:
name: email
path: github.com/oapi-codegen/runtime/types
payment_authority:
$ref: '#/components/schemas/NullablePaymentAuthority'
LinkURI:
type: string
format: uri
example: http://example.com/articles/1/comments
nullable: true
PaymentAuthorityEPPayments:
writeOnly: true
type: object
required:
- type
properties:
type:
description: The name of the payment gateway facilitating the secure transmission of payment data.
type: string
example: elastic_path_payments_stripe
enum:
- elastic_path_payments_stripe
x-go-type: paymentgateways.GatewayName
x-go-type-import:
name: paymentgateways
path: gitlab.elasticpath.com/commerce-cloud/subscriptions.svc/internal/paymentgateways
customer_id:
description: The unique identifier for a customer.
type: string
minLength: 3
maxLength: 1024
example: cus_OPfKlxWV3hp9h6
card_id:
description: The unique identifier of the card used to facilitate payment of the subscription. If a card payment fails, you can use the `card_id` and `customer_id` attributes to program your front-end implementation to allow your preferred payment service provider to update a subscription with new card details. See [Card declines](/docs/api/subscriptions/invoices#card-declines).
type: string
minLength: 3
maxLength: 1024
example: card_8Diw3FQPhxK27WADPVMeXieP
NullablePaymentAuthority:
type: object
nullable: true
oneOf:
- $ref: '#/components/schemas/PaymentAuthorityEPPayments'
- $ref: '#/components/schemas/PaymentAuthorityStripe'
- $ref: '#/components/schemas/PaymentAuthorityAuthorizeNet'
discriminator:
propertyName: type
mapping:
elastic_path_payments_stripe: '#/components/schemas/PaymentAuthorityEPPayments'
stripe_payment_intents: '#/components/schemas/PaymentAuthorityStripe'
authorize_net: '#/components/schemas/PaymentAuthorityAuthorizeNet'
required:
- type
properties:
type:
description: The name of the payment gateway facilitating the secure transmission of payment data.
type: string
example: elastic_path_payments_stripe
enum:
- authorize_net
- elastic_path_payments_stripe
- stripe_payment_intents
x-go-type: paymentgateways.GatewayName
x-go-type-import:
name: paymentgateways
path: gitlab.elasticpath.com/commerce-cloud/subscriptions.svc/internal/paymentgateways
OwnerMeta:
readOnly: true
type: string
format: string
description: The owner of a resource, either `store` or `organization`.
example: store
FeatureTag:
type: string
description: A tag to add to the customer's account when entitled to the feature.
minLength: 1
maxLength: 64
pattern: ^[0-9A-Za-z_-]+$
example: digital_library_access
SubscriberCreate:
required:
- type
- attributes
properties:
type:
$ref: '#/components/schemas/SubscriptionSubscriberType'
attributes:
$ref: '#/components/schemas/SubscriberAttributes'
securitySchemes:
BearerToken:
type: http
scheme: bearer