SumUp Memberships API
Endpoints to manage user's memberships. Memberships are used to connect the user to merchant accounts and to grant them access to the merchant's resources via roles.
Endpoints to manage user's memberships. Memberships are used to connect the user to merchant accounts and to grant them access to the merchant's resources via roles.
openapi: 3.0.1
info:
title: SumUp REST Checkouts Memberships API
version: 1.0.0
description: 'SumUp’s REST API operates with [JSON](https://www.json.org/json-en.html) HTTP requests and responses. The request bodies are sent through resource-oriented URLs and use the standard [HTTP response codes](https://developer.mozilla.org/docs/Web/HTTP/Status).
You can experiment and work on your integration in a sandbox that doesn''t affect your regular data and doesn''t process real transactions. To create a sandbox merchant account visit the [dashboard](https://me.sumup.com/settings/developer). To use the sandbox when interacting with SumUp APIs [create an API](https://me.sumup.com/settings/api-keys) key and use it for [authentication](https://developer.sumup.com/api/authentication).'
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://api.sumup.com
description: Production server
tags:
- name: Memberships
description: Endpoints to manage user's memberships. Memberships are used to connect the user to merchant accounts and to grant them access to the merchant's resources via roles.
x-core-objects:
- $ref: '#/components/schemas/Membership'
x-beta: true
paths:
/v0.1/memberships:
get:
operationId: ListMemberships
summary: List memberships
description: List memberships of the current user.
parameters:
- name: offset
in: query
description: Offset of the first member to return.
schema:
type: integer
example: 0
default: 0
minimum: 0
- name: limit
in: query
description: Maximum number of members to return.
schema:
type: integer
example: 10
default: 10
maximum: 25
minimum: 1
- name: kind
in: query
description: Filter memberships by resource kind.
schema:
$ref: '#/components/schemas/ResourceType'
- name: status
in: query
description: Filter the returned memberships by the membership status.
schema:
$ref: '#/components/schemas/MembershipStatus'
- name: resource.type
in: query
description: Filter memberships by resource kind.
schema:
$ref: '#/components/schemas/ResourceType'
- name: resource.attributes.sandbox
in: query
description: Filter memberships by the sandbox status of the resource the membership is in.
schema:
type: boolean
- name: resource.name
in: query
description: Filter memberships by the name of the resource the membership is in.
schema:
type: string
- name: resource.parent.id
in: query
description: 'Filter memberships by the parent of the resource the membership is in.
When filtering by parent both `resource.parent.id` and `resource.parent.type` must be present. Pass explicit null to filter for resources without a parent.'
schema:
type: string
nullable: true
- name: resource.parent.type
in: query
description: 'Filter memberships by the parent of the resource the membership is in.
When filtering by parent both `resource.parent.id` and `resource.parent.type` must be present. Pass explicit null to filter for resources without a parent.'
schema:
allOf:
- $ref: '#/components/schemas/ResourceType'
nullable: true
- name: roles
in: query
description: Filter the returned memberships by role.
schema:
type: array
items:
type: string
example:
- role_employee
- role_accountant
explode: true
style: form
responses:
'200':
description: Returns a list of Membership objects.
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Membership'
total_count:
type: integer
example: 3
required:
- total_count
- items
'400':
description: Invalid query parameter combination.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://developer.sumup.com/problem/bad-request
title: Bad Request
status: 400
detail: Request validation failed.
'401':
description: Authentication failed or missing required scope.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: https://developer.sumup.com/problem/unauthorized
title: Unauthorized
status: 401
detail: Authentication credentials are missing or invalid.
security:
- apiKey: []
- oauth2: []
tags:
- Memberships
x-codegen:
method_name: list
x-scopes: []
components:
schemas:
Membership:
description: A membership associates a user with a resource, memberships is defined by user, resource, resource type, and associated roles.
type: object
properties:
id:
description: ID of the membership.
type: string
example: mem_WZsm7QTPhVrompscmPhoGTXXcrd58fr9MOhP
resource_id:
description: ID of the resource the membership is in.
type: string
example: M2DDT39A
type:
$ref: '#/components/schemas/ResourceType'
roles:
description: User's roles.
type: array
items:
type: string
example:
- role_admin
permissions:
description: User's permissions.
type: array
items:
type: string
example:
- members_read
- members_write
- create_moto_payments
- full_transaction_history_view
- refund_transactions
- create_referral
- developer_settings_edit
- developer_settings_access
deprecated: true
x-deprecation-notice: Permissions include only legacy permissions, please use roles instead. Member access is based on their roles within a given resource and the permissions these roles grant.
created_at:
description: The timestamp of when the membership was created.
type: string
format: date-time
example: 2023-01-20 15:16:17+00:00
updated_at:
description: The timestamp of when the membership was last updated.
type: string
format: date-time
example: 2023-01-20 15:16:17+00:00
invite:
$ref: '#/components/schemas/Invite'
status:
$ref: '#/components/schemas/MembershipStatus'
metadata:
$ref: '#/components/schemas/Metadata'
attributes:
$ref: '#/components/schemas/Attributes'
resource:
$ref: '#/components/schemas/MembershipResource'
required:
- id
- resource_id
- type
- roles
- permissions
- created_at
- updated_at
- status
- resource
title: Membership
Invite:
description: Pending invitation for membership.
type: object
properties:
email:
description: Email address of the invited user.
type: string
format: email
example: boaty.mcboatface@sumup.com
expires_at:
type: string
format: date-time
example: 2023-01-20 15:16:17+00:00
required:
- email
- expires_at
title: Invite
Attributes:
description: Object attributes that are modifiable only by SumUp applications.
type: object
example: {}
additionalProperties: true
MembershipStatus:
description: The status of the membership.
type: string
enum:
- accepted
- pending
- expired
- disabled
- unknown
Metadata:
description: Set of user-defined key-value pairs attached to the object. Partial updates are not supported. When updating, always submit whole metadata. Maximum of 64 parameters are allowed in the object.
type: object
example: {}
additionalProperties: true
maxProperties: 64
ResourceType:
description: 'The type of the membership resource.
Possible values are:
* `merchant` - merchant account(s)
* `organization` - organization(s)'
type: string
example: merchant
Problem:
description: 'A RFC 9457 problem details object.
Additional properties specific to the problem type may be present.'
type: object
properties:
type:
description: A URI reference that identifies the problem type.
type: string
format: uri
example: https://developer.sumup.com/problem/not-found
title:
description: A short, human-readable summary of the problem type.
type: string
example: Requested resource couldn't be found.
status:
description: The HTTP status code generated by the origin server for this occurrence of the problem.
type: integer
example: 404
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
example: The requested resource doesn't exist or does not belong to you.
instance:
description: A URI reference that identifies the specific occurrence of the problem.
type: string
format: uri
additionalProperties: true
required:
- type
title: Problem
MembershipResource:
description: Information about the resource the membership is in.
type: object
properties:
id:
description: ID of the resource the membership is in.
type: string
example: M2DDT39A
type:
$ref: '#/components/schemas/ResourceType'
name:
description: Display name of the resource.
type: string
example: Acme Corp
logo:
description: Logo fo the resource.
type: string
format: uri
example: https://images.sumup.com/img_2x4y6z8a0b1c2d3e4f5g6h7j8k.png
maxLength: 256
created_at:
description: The timestamp of when the membership resource was created.
type: string
format: date-time
example: 2023-01-20 15:16:17+00:00
updated_at:
description: The timestamp of when the membership resource was last updated.
type: string
format: date-time
example: 2023-01-20 15:16:17+00:00
attributes:
$ref: '#/components/schemas/Attributes'
required:
- id
- type
- name
- created_at
- updated_at
title: Resource
securitySchemes:
apiKey:
description: API keys allow you easily interact with SumUp APIs. API keys are static tokens. You can create API keys from the [Dashboard](https://me.sumup.com/settings/api-keys)
type: http
scheme: Bearer
oauth2:
type: oauth2
description: 'SumUp supports [OAuth 2.0](https://tools.ietf.org/html/rfc6749) authentication for platforms that want to offer their services to SumUp users.
To integrate via OAuth 2.0 you will need a client credentials that you can create in the [SumUp Dashboard](https://me.sumup.com/settings/oauth2-applications).
To maintain security of our users, we highly recommend that you use one of the [recommended OAuth 2.0 libraries](https://oauth.net/code/) for authentication.'
flows:
authorizationCode:
authorizationUrl: https://api.sumup.com/authorize
tokenUrl: https://api.sumup.com/token
refreshUrl: https://api.sumup.com/token
scopes:
payments: Make payments by creating and processing checkouts.
transactions.history: View transactions and transaction history.
user.profile_readonly: View user profile details.
user.profile: View and manage your user profile.
user.app-settings: View and manage the SumUp mobile application settings.
payment_instruments: Manage customers and their payment instruments.
user.payout-settings: View and manage your payout settings.
user.subaccounts: View and manage the user profile details of your employees.
clientCredentials:
tokenUrl: https://api.sumup.com/token
scopes:
payments: Make payments by creating and processing checkouts.
transactions.history: View transactions and transaction history.
user.profile_readonly: View user profile details.
user.profile: View and manage your user profile.
user.app-settings: View and manage the SumUp mobile application settings.
payment_instruments: Manage customers and their payment instruments.
user.payout-settings: View and manage your payout settings.
user.subaccounts: View and manage the user profile details of your employee.