openapi: 3.0.0 info: title: 'Admin API Reference' version: '2025-06-13' description: > The Zephr Admin API provides RESTful access to all Zephr functionality. It is designed for server-side integrations. All requests must be signed as described in HMAC Request Signing and Key Pairs. The Admin API uses a base URL with the following format: `https://{tenantId}.api.zephr.com` **Note**: If you have multiple tenants, the current tenant ID is shown in a blue box in the top right of the Admin Console. If you have a single site, you can find the tenant ID by navigating to your site domains. To do this, select **Sites** from the **Delivery** menu, select your site, and then click the **Site Domains** button. The tenant ID is the first part of the domain. For example, if the domain is *news-paper.cdn.zephr.com*, the tenant ID is *news*. tags: - name: Account User description: Contains operations on the Account User resource. x-displayName: Account User - name: Admin User description: Contains operations on the Admin User resource. x-displayName: Admin User - name: Bundle description: Contains operations on the Bundle resource. x-displayName: Bundle - name: Cache Configurations description: Contains operations on the Cache Configurations resource. x-displayName: Cache Configurations - name: Cache Management description: Cache Mangement. x-displayName: Cache Management - name: Company description: Actions on resource Company. x-displayName: Company - name: Component Library description: Actions on resource Library Component. x-displayName: Component Library - name: Configuration description: Blaize tenant configuration. x-displayName: Configuration - name: Credit description: Actions on resource Credit. x-displayName: Credit - name: Decision Engine x-displayName: Decision Engine - name: Email Templates description: Actions on email templates. x-displayName: Email Templates - name: Entitlement description: Actions on resource Entitlement. x-displayName: Entitlement - name: Feature Rules description: Actions on resource Feature Rules. x-displayName: Feature Rules - name: Form description: Actions on resource Form. x-displayName: Form - name: Gifts x-displayName: Gifts - name: Grants description: Actions on resource Grant. x-displayName: Grants - name: Meter description: Actions on resource Meter. x-displayName: Meter - name: Products description: Actions on resource Product. x-displayName: Products - name: Request Rules description: Actions on resource Request Rules. x-displayName: Request Rules - name: Session description: Actions on resource Session. x-displayName: Session - name: Static Items description: Actions on resource Static Item. x-displayName: Static Items - name: Third Party Authentication description: Contains operations for the OAuth 2.0 Authorization Code Flow Token Exchange. x-displayName: Third Party Authentication - name: User Export x-displayName: User Export - name: User Schema description: Actions on resource User Schema. x-displayName: User Schema - name: Users description: > Contains operations on the User resource. **Important**: The Attributes object contains the custom-defined attributes for a user. x-displayName: Users - name: V4 Session description: Actions on resource Session. x-displayName: V4 Session - name: Webhook description: Actions on resource Webhook. x-displayName: Webhook - name: Account description: Actions on resource Account. x-displayName: Account - name: Health Check description: Actions on Health checks. x-displayName: Health Check - name: System Resources description: Actions on system resources. x-displayName: System Resources - name: External Template description: External Templates. x-displayName: External Templates servers: - url: https://{tenantId}.api.zephr.com variables: tenantId: default: demo description: Your tenant ID. security: - ZephrHmacHttp: [ ] paths: /v3/accounts/{account_id}/users: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/account-user' examples: response: value: - user_id: 0123456789ABCD account_id: 0123456789ABCD summary: List account users operationId: listAccountUsers description: Retrieves all the account users. tags: - Account User parameters: - name: account_id in: path description: Unique Account identifier. required: true schema: type: string /v3/accounts/{account_id}/users/{user_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/account-user' examples: response: value: user_id: 0123456789ABCD account_id: 0123456789ABCD summary: Retrieve an account user operationId: retrieveAccountUser description: Retrieves an account user. tags: - Account User parameters: - name: account_id in: path description: Unique Account identifier required: true schema: type: string - name: user_id in: path description: Unique User identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete an account user operationId: deleteAccountUser description: Deletes an account user. tags: - Account User parameters: - name: account_id in: path description: Unique Account identifier required: true schema: type: string - name: user_id in: path description: Unique User identifier required: true schema: type: string put: responses: '200': description: OK - User was successfully inserted or updated. headers: {} '201': description: Created - The request has been fulfilled and user was inserted or updated headers: {} '400': description: Bad Request - Cannot find an existing user for the supplied `user_id` and `account_id` headers: {} summary: Save or Create an account user operationId: saveAccountUser description: Saves or Creates an account specified by `account_id` and `user_id`. tags: - Account User parameters: - name: account_id in: path description: Unique Account identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string - name: user_id in: path description: Unique User identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string /v3/admin/users: post: responses: '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-user-response' examples: response: value: user_id: b859f5dd-8184-4d01-8bf9-e3e771f68a62 message: Admin user created successfully uri: >- http://company.com/v3/admin/users/b859f5dd-8184-4d01-8bf9-e3e771f68a62 '400': description: Bad Request headers: {} summary: Create an admin user operationId: createAdminUser description: Creates a new admin user. tags: - Admin User requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string validators: type: object properties: password: type: string use_sso: type: boolean description: >- When this is present there should be no identifiers in the body. The user is identified through a `blaize_session` cookie. required: - identifiers example: identifiers: email_address: joe.blow@company.com validators: password: mysecurepassword123 /v3/admin/login: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-user-login-response' examples: response: value: cookie: blaize_admin_session=... message: Login successful '400': description: Bad Request headers: {} '401': description: Unauthorized headers: {} summary: Log in to an admin user account operationId: logInAdminUserAccount description: Logs in to an admin user account. tags: - Admin User requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string validators: type: object properties: password: type: string use_sso: type: boolean description: >- When this is present there should be no identifiers in the body. The user is identified through a `blaize_session` cookie. required: - identifiers - validators example: identifiers: email_address: joe.blow@company.com validators: password: mysecurepassword123 /v3/admin/logout: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/logout-response' examples: response: value: message: Session deleted summary: Log out of the admin user account operationId: logOutAdminUserAccount description: Logs out of the admin user account. tags: - Admin User parameters: - name: blaize-admin-session in: header description: e.g. (string) required: false example: (string) schema: type: string /v3/admin/users/{user_id}/keypairs: post: responses: '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/issue-keypair-response' examples: response: value: access_key: access key... secret_key: secret key... message: >- Keypair created: you will not be able to recover the secret, so take note of it '404': description: Not Found headers: {} summary: Issue a key pair operationId: issueKeyPair description: Issues a new key pair for the admin user. tags: - Admin User parameters: - name: user_id in: path description: Unique User Identifier required: true schema: type: string get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/get-access-key-response' examples: response: value: - access_key: access key... '404': description: Not Found headers: {} summary: List access keys operationId: listAccessKeys description: Retrieves a list of access keys for the admin user. tags: - Admin User parameters: - name: user_id in: path description: Unique User Identifier required: true schema: type: string /v3/admin/users/{user_id}/keypairs/{access_key}: delete: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/revoke-keypair-response' examples: response: value: message: Keypair revoked '404': description: Not Found headers: {} summary: Revoke a keypair operationId: revokeKeypair description: Revokes a keypair. tags: - Admin User parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string - name: access_key in: path description: Access Key identifier required: true schema: type: string /v3/admin/users/{user_id}/roles: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-roles' examples: response: value: - email: admin@company.com role: role... '404': description: Not Found headers: {} summary: List user roles operationId: listUserRoles description: Retrieves the user roles an admin user is assigned. tags: - Admin User parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string /v3/admin/users/{user_id}/roles/{tenant}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-roles' examples: response: value: - email: admin@company.com role: role... '404': description: Not Found headers: {} summary: List user roles by tenant operationId: listUserTenantRoles description: Retrieves the admin user's roles by tenant. tags: - Admin User parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string - name: tenant in: path description: Tenant identifier required: true schema: type: string /v3/admin/roles: post: responses: '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-role-creation-response' examples: response: value: message: Admin role created successfully '400': description: Bad Request headers: {} summary: Create admin user roles operationId: createAdminRole description: Creates admin user roles. tags: - Admin User requestBody: $ref: '#/components/requestBodies/Create_Admin_RoleBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/list-admin-roles-response' examples: response: value: - role_id: 0123456789ABCD email: admin@company.com role: role... '404': description: Not Found headers: {} summary: List admin user roles operationId: listRoles description: Retrieves the admin user roles by tenant. tags: - Admin User /v3/admin/roles/{role_id}: put: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-role-update-response' examples: response: value: message: Admin role updated successfully '400': description: Bad Request headers: {} summary: Update an admin user role operationId: updateRole description: Updates an admin user role by ID. tags: - Admin User parameters: - name: role_id in: path description: Unique Role identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_Admin_RoleBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/list-admin-role-response' examples: response: value: role_id: 0123456789ABCD email: admin@company.com role: role... '404': description: Not Found headers: {} summary: Retrieve an admin user role operationId: getRole description: Retrieves an admin user role. tags: - Admin User parameters: - name: role_id in: path description: Unique Role identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-role-deleted-response' examples: response: value: message: Admin role deleted successfully '404': description: Not Found headers: {} summary: Delete an admin user role operationId: deleteRole description: Deletes an admin user role. tags: - Admin User parameters: - name: role_id in: path description: Unique Role identifier required: true schema: type: string /v3/admin/sessions/{blaize_admin_session_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/user_identifier' examples: response: value: user_id: 123456789ABCD '404': description: Not Found headers: {} summary: Retrieve an admin user by session ID operationId: getSessionUser description: Retrieves an admin user by session ID. tags: - Admin User parameters: - name: blaize_admin_session_id in: path description: Admin User Session identifier required: true schema: type: string /v3/users/{userId}/foreign-key/update/{key}: put: responses: '200': description: OK - Foreign key was successfully inserted or updated headers: {} '404': description: Not Found - Cannot find a user with the supplied `userId` headers: {} summary: Inserts or updates a foreign key operationId: upsertForeignKey description: Inserts or updates the provided foreign key, if the supplied `userId` and `key` match. tags: - Users parameters: - name: userId in: path description: Unique User identifier required: true example: 3f589a2d-86cd-4b70-a5df-68dca75a3a21 schema: type: string - name: key in: path description: Foreign system key required: true example: foreign_system_key schema: type: string requestBody: content: application/json: schema: type: string example: 65xcb76a3a2f1 /v3/bundles: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/bundles' '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} summary: List Bundles operationId: listBundles description: >- Retrieves a list of bundles wrapped in the element "results". Each bundle contains a list of entitlements, meters, credits, and other bundles. tags: - Bundle put: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create Bundles operationId: createBundles description: Creates Bundles. tags: - Bundle requestBody: $ref: '#/components/requestBodies/Create_BundleBody' /v3/bundles/{id}: put: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a Bundle operationId: createBundle description: Creates a Bundle. tags: - Bundle parameters: - name: id in: path description: Unique Bundle identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_BundleBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/bundle' '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '404': description: Not Found. Returned if the ID is invalid. No bundle found. headers: {} summary: Retrieve a Bundle operationId: getBundle description: >- Retrieves a single bundle. Each bundle contains a list of entitlements, meters, credits, and other bundles. tags: - Bundle parameters: - name: id in: path description: Unique Bundle Identifier. required: true schema: type: string delete: responses: '200': description: OK. Returned if the bundle was successfully deleted. content: application/json: schema: properties: message: type: string examples: response: value: message: Bundle deleted successfully headers: {} '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '404': description: Not Found. Returned if the ID is invalid. No bundle found. headers: {} summary: Delete Bundle operationId: deleteBundle description: Deletes a Bundle. tags: - Bundle parameters: - name: id in: path description: Unique Bundle Identifier. required: true schema: type: string /v3/cache-configurations: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/cache_configurations_objects' examples: response: value: results: - label: Test conditions: url_pattern: ^/forum header_patterns: Content-Type: ^text/html cache: origin: false decision_points: false redirect: on: false target: /some/path status: 301 summary: List cache configurations operationId: listCacheConfigurations description: >- Retrieves a list of cache configurations wrapped in the element "results". tags: - Cache Configurations post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a cache configuration operationId: createCacheConfiguration description: Creates a Cache Configuration. tags: - Cache Configurations requestBody: $ref: '#/components/requestBodies/Create_Cache_ConfigurationBody' /v3/cache-configurations/{id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/cache_configurations_object' examples: response: value: label: Test conditions: url_pattern: ^/forum header_patterns: Content-Type: ^text/html cache: origin: false decision_points: false redirect: on: false target: /some/path status: 301 summary: Retrieve a cache configuration operationId: getCacheConfiguration description: Retrieves a single cache configuration. tags: - Cache Configurations parameters: - name: id in: path description: Unique Cache Configuration identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a cache configuration operationId: deleteCacheConfiguration description: Deletes a cache configuration tags: - Cache Configurations parameters: - name: id in: path description: Unique Cache Configuration identifier required: true schema: type: string put: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} summary: Update a cache configuration operationId: updateCacheConfiguration description: Updates a cache configuration. tags: - Cache Configurations parameters: - name: id in: path description: Unique Cache Configuration identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_Cache_ConfigurationBody' /v3/cache-management/evict-origin: post: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} '500': description: Internal Server Error headers: {} summary: Evict cached origin requests operationId: evictOrigin description: >- Evicts all cached origin requests with path matching the supplied regular expression. tags: - Cache Management requestBody: content: application/json: schema: type: object example: 1 line containing valid Java Regular Expression. /v4/cache-management/evict-origin: post: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} '500': description: Internal Server Error headers: {} summary: Evict cached origin requests (V4) operationId: evictOriginSiteV4 description: >- Evicts all cached origin requests with path matching the supplied regular expression. tags: - Cache Management requestBody: content: application/json: schema: type: object example: 1 line containing valid Java Regular Expression. /v4/cache-management/evict-origin/{site}: post: responses: '200': description: OK. The specified origin cache has successfully been evicted. headers: {} '400': description: Bad Request. Path to delete must be a valid regex headers: {} '403': description: Forbidden. Not permitted for V3 tenant. headers: {} summary: Evict cached origin requests for a given site in V4 operationId: evictOriginV4 description: >- Evicts all of the origin cache matching the path pattern provided in the request body for a given site, evicts all paths if .* is provided as path pattern. tags: - Cache Management parameters: - name: site in: path description: Site Slug required: true schema: type: string requestBody: content: application/json: schema: type: object example: 1 line containing valid Java Regular Expression. /v3/companies: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/companies' examples: response: value: results: - name: Company name description: Company description website: company.com contact: Company contact account_manager: Company account manager summary: List companies operationId: listCompanies description: Retrieves a list of companies wrapped in the element "results". tags: - Company post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a company operationId: createCompany description: Creates a company. tags: - Company requestBody: $ref: '#/components/requestBodies/Create_CompanyBody' /v3/companies/{id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/company' examples: response: value: name: Company name description: Company description website: company.com contact: Company contact account_manager: Company account manager summary: Retrieve a company operationId: getCompany description: Retrieves a single company. tags: - Company parameters: - name: id in: path description: Unique Company identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a company operationId: deleteCompany description: Deletes a company. tags: - Company parameters: - name: id in: path description: Unique Company identifier required: true schema: type: string put: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Update a company operationId: updateCompany description: Updates a company. tags: - Company parameters: - name: id in: path description: Unique Company identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_CompanyBody' /v4/companies: post: responses: '201': description: OK - Company has been created successfully '400': description: Bad Request - Company name is missing from the request summary: Create a company description: Creates a company with the details specified in the request body tags: - Company requestBody: $ref: '#/components/requestBodies/Create_CompanyBody_v4' /v4/companies/{companyId}: get: summary: Retrieve a company description: Retrieves company information for a company specified by the provided identifier (`companyId`) parameters: - name: companyId in: path description: The company's unique identifier required: true example: 1f6841a8-7f3b-4505-856e-4549be433545 schema: type: string responses: '200': description: OK - Company information was successfully retrieved headers: {} content: application/json: schema: $ref: '#/components/schemas/companyv4' example: company_id: 1f6841a8-7f3b-4505-856e-4549be433545 name: My Company description: This is an example company website: https://company.com contact: email@company.com account_manager: Joe Blow tenantId: my-tenant subTenantId: my-tenant '404': description: Not found - No companies were found with the supplied identifier headers: {} tags: - Company /v3/configuration: post: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} summary: Save the tenant configuration operationId: saveConfiguration description: Creates or updates the tenant configuration. tags: - Configuration requestBody: content: application/json: schema: type: object properties: db.tables.extendedProfiles: type: string db.tables.grants: type: string db.tables.forms: type: string db.tables.features: type: string db.tables.requestRules: type: string db.tables.entitlements: type: string db.tables.formFields: type: string db.tables.companies: type: string db.tables.accounts: type: string db.tables.userSchemaFields: type: string db.tables.users: type: string db.tables.userAttributes: type: string db.tables.accountUsers: type: string db.tables.staticItems: type: string db.tables.webhooks: type: string db.tables.adminUserTenantRoles: type: string db.tables.adminUsers: type: string db.tables.adminKeyPairs: type: string oauth.google.apis.host: type: string oauth.linkedin.clientSecret: type: string oauth.linkedin.apis.host: type: string oauth.google.clientSecret: type: string oauth.google.callbackUri: type: string oauth.linkedin.clientId: type: string oauth.linkedin.callbackUri: type: string oauth.google.clientId: type: string oauth.facebook.callbackUri: type: string oauth.facebook.clientSecret: type: string oauth.facebook.apis.host: type: string oauth.facebook.clientId: type: string cdn.origin: type: string redis.port: type: string elasticsearch.url: type: string aws.region: type: string redis.host: type: string email.from: type: string authentication.password.requireEmailVerfication: type: string example: db.tables.extendedProfiles: value db.tables.grants: value db.tables.forms: value db.tables.features: value db.tables.requestRules: value db.tables.entitlements: value db.tables.formFields: value db.tables.companies: value db.tables.accounts: value db.tables.userSchemaFields: value db.tables.users: value db.tables.userAttributes: value db.tables.accountUsers: value db.tables.staticItems: value db.tables.webhooks: value db.tables.adminUserTenantRoles: value db.tables.adminUsers: value db.tables.adminKeyPairs: value oauth.google.apis.host: value oauth.linkedin.clientSecret: value oauth.linkedin.apis.host: value oauth.google.clientSecret: value oauth.google.callbackUri: value oauth.linkedin.clientId: value oauth.linkedin.callbackUri: value oauth.google.clientId: value oauth.facebook.callbackUri: value oauth.facebook.clientSecret: value oauth.facebook.apis.host: value oauth.facebook.clientId: value cdn.origin: value redis.port: value elasticsearch.url: value aws.region: value redis.host: value email.from: value authentication.password.requireEmailVerfication: value get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/configuration' examples: response: value: db.tables.extendedProfiles: value db.tables.grants: value db.tables.forms: value db.tables.features: value db.tables.requestRules: value db.tables.entitlements: value db.tables.formFields: value db.tables.companies: value db.tables.accounts: value db.tables.userSchemaFields: value db.tables.users: value db.tables.userAttributes: value db.tables.accountUsers: value db.tables.staticItems: value db.tables.webhooks: value db.tables.adminUserTenantRoles: value db.tables.adminUsers: value db.tables.adminKeyPairs: value oauth.google.apis.host: value oauth.linkedin.clientSecret: value oauth.linkedin.apis.host: value oauth.google.clientSecret: value oauth.google.callbackUri: value oauth.linkedin.clientId: value oauth.linkedin.callbackUri: value oauth.google.clientId: value oauth.facebook.callbackUri: value oauth.facebook.clientSecret: value oauth.facebook.apis.host: value oauth.facebook.clientId: value cdn.origin: value redis.port: value elasticsearch.url: value aws.region: value redis.host: value email.from: value authentication.password.requireEmailVerfication: value summary: Retrieve the tenant configuration operationId: getConfiguration description: Retrieves the tenant configuration. tags: - Configuration /v3/initialize: post: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} summary: Install a tenant operationId: installTenant description: Installs a tenant in Blaize. tags: - Configuration /v3/certs: post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a cert operationId: createCert description: Creates a cert. tags: - Configuration requestBody: content: application/json: schema: type: object properties: label: type: string private_key: type: string cert: type: string example: label: company.com private_key: private_key... cert: cert... delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a cert operationId: deleteCert description: Deletes a cert. tags: - Configuration /v3/credits: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/credits' examples: response: value: results: - label: Test credit description: This is an credit delivers: - ENTITLEMENT_ID unit: views quantity: 5 auto_assign: none summary: List credits operationId: Credits description: Retrieves a list of credits wrapped in the element "results". tags: - Credit post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create Credit operationId: createCredits description: Create an Credit tags: - Credit requestBody: $ref: '#/components/requestBodies/Create_CreditBody' /v3/credits/{id}: post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a credit operationId: createCredit description: Creates a credit. tags: - Credit parameters: - name: id in: path description: Unique Credit identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_CreditBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/credit' examples: response: value: label: Test credit description: This is an credit delivers: - ENTITLEMENT_ID unit: views quantity: 5 auto_assign: none '404': description: Not Found headers: {} summary: Retrieve a credit operationId: getCredit description: Retrieves a single credit. tags: - Credit parameters: - name: id in: path description: Unique Credit identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a credit operationId: deleteCredit description: Deletes a credit. tags: - Credit parameters: - name: id in: path description: Unique Credit identifier required: true schema: type: string /v4/resources/{resourceId}/content: put: summary: Update system resource description: Update system resource by provided resourceId tags: - System Resources parameters: - name: resourceId in: path description: Unique Resource identifier required: true schema: type: string responses: '200': description: OK headers: {} content: application/json: schema: type: object example: >- { Resource updated successfully resourceID } '404': description: Cannot find system resource with the provided ID headers: {} /v3/decision-engine: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/access-decision-response' examples: response: value: status: '301' body: Redirecting to login page... headers: Location: /login.html '409': description: Conflict headers: {} summary: Invoke the decision engine operationId: invokeDecisionEngine description: >- Invokes the decision engine. The Blaize Decision Engine can be invoked via the Admin API to calculate an HTTP Response based upon Request-Level Rules created in the Admin Console. This functionality is build into the Blaize Dynamic CDN but the API variant is useful for CMS or edge side integrations. tags: - Decision Engine requestBody: content: application/json: schema: type: object properties: path: type: string http_method: type: string session: type: string foreign_keys: type: object properties: {} description: Foreign system and ID used to identify the user request_headers: type: object properties: User-Agent: type: string content_metadata: type: object properties: publishedDate: type: string jwt: type: string btr: type: string description: 'MD5-hex-encoding of: path + "|" + trusted referrer secret' required: - path example: path: /x.html http_method: POST session: xxx-xxx-xxx foreign_keys: {} request_headers: User-Agent: content_metadata: publishedDate: jwt: xxx-xxx-xxx btr: 17e74b9e49e66282e55d4b7ec73de951 /v4/email-templates: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/email-templates' examples: response: value: results: - templateType: template type slug: email template slug label: Name of the email template subject: Email subject content: Email content default: false summary: List email templates operationId: listEmailTemplates description: Retrieves a list of email templates. tags: - Email Templates /v4/email-templates/{slug}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/email-template' examples: response: value: templateType: template type slug: email template slug label: Name of the email template subject: Email subject content: Email content default: false '404': description: Not Found headers: {} summary: Retrieve an email template operationId: getEmailTemplate description: Retrieves a single email template. tags: - Email Templates parameters: - name: slug in: path description: Slug of the Email template required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete an email template operationId: deleteEmailTemplate description: Deletes an email template. tags: - Email Templates parameters: - name: slug in: path description: Slug of the Email template required: true schema: type: string put: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} summary: Save an email template operationId: saveEmailTemplate description: Saves an email template. tags: - Email Templates parameters: - name: slug in: path description: Slug of the Email template required: true schema: type: string requestBody: content: application/json: schema: type: object properties: templateType: type: string label: type: string subject: type: string content: type: string example: templateType: User Password Reset label: my modified default password reset subject: my modified default Password Reset Subject content:

New content

/v3/entitlements: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/entitlements' examples: response: value: results: - label: Test entitlement description: This is an entitlement auto_assign: none summary: List entitlements operationId: listEntitlements description: Retrieves a list of entitlements wrapped in the element "results". tags: - Entitlement post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create entitlements operationId: createEntitlements description: Creates entitlements. tags: - Entitlement requestBody: $ref: '#/components/requestBodies/Create_EntitlementBody' /v3/entitlements/{id}: post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create an entitlement operationId: createEntitlement description: Creates an entitlement. tags: - Entitlement parameters: - name: id in: path description: Unique Entitlement identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_EntitlementBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/entitlement' examples: response: value: label: Test entitlement description: This is an entitlement auto_assign: none '404': description: Not Found headers: {} summary: Retrieve an entitlement operationId: getEntitlement description: Retrieves a single entitlement. tags: - Entitlement parameters: - name: id in: path description: Unique Entitlement identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete an entitlement operationId: deleteEntitlement description: Deletes an entitlement. tags: - Entitlement parameters: - name: id in: path description: Unique Entitlement identifier required: true schema: type: string /v3/feature-rules: get: responses: '200': description: OK - Feature rules have been retrieved successfully headers: {} content: application/json: schema: $ref: '#/components/schemas/feature_rules_response' examples: response: value: - id: featureRuleId version: 1 tags: [] label: Test feature description: Test feature last_updated: '2011-11-11T11:11:11.000' request_type: json target_name: article match_operation: equals target_value: home_button '400': description: Bad Request - Tags size exceeded the limit of 50 headers: {} summary: List feature rules operationId: listFeatureRules description: Retrieves a list of feature rules. parameters: - name: tags in: query description: A comma-separeted list of feature rule tags (Maximum 50 tags allowed) schema: type: string example: tag1,tag2,tag3 tags: - Feature Rules /v3/feature-rules/{featureRuleId}: delete: responses: '200': description: OK headers: {} content: '*/*': schema: $ref: '#/components/schemas/feature_rule_deletion_response' '404': description: Not Found headers: {} summary: Delete a feature rule operationId: deleteFeatureRule description: Deletes a feature rule. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string /v3/feature-rules/{featureRuleId}/versions: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/feature_rules_response' examples: response: value: - id: featureRuleId version: 1 tags: [] label: Test feature description: Test feature last_updated: '2011-11-11T11:11:11.000' summary: List the versions of a feature rule operationId: getFeatureRuleVersions description: Retrieves a lists of all the versions for a single feature rule. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string post: responses: '200': description: OK headers: {} '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/feature_rule_creation_response' examples: response: value: message: Feature Rule created successfully uri: http://host/v3/feature-rules/featureRuleId/versions '400': description: Bad Request headers: {} summary: Create a feature rule version operationId: createFeatureRule description: Creates a feature rule version. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string requestBody: content: application/json: schema: type: object properties: label: type: string description: type: string requirements_script: type: string action_script: type: string script_type: type: string graph_state: type: string editing_mode: type: string example: label: Test feature description: Test feature requirements_script: return [] action_script: return "this is a test" script_type: javascript graph_state: '{"property1": "value1"}' editing_mode: manual /v3/feature-rules/{featureRuleId}/versions/{versionId}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/feature_rule_version_response' examples: response: value: id: featureRuleId version: 1 tags: [] label: Test feature description: Test feature requirements_script: return [] action_script: return "this is a test" script_type: javascript graph_state: '{"property1": "value1"}' editing_mode: manual last_updated: '2011-11-11T11:11:11.000' summary: Retrieve a feature rule version operationId: getFeatureRuleVersion description: Retrieves a version for a single feature rule. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string - name: versionId in: path description: Unique Version identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} content: '*/*': schema: $ref: '#/components/schemas/feature_rule_deletion_response' '404': description: Not Found headers: {} summary: Delete a feature rule version operationId: deleteFeatureRuleVersion description: Deletes a single version of a feature rule. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string - name: versionId in: path description: Unique Version identifier required: true schema: type: string /v3/feature-rules/{featureRuleId}/versions/{versionId}/tags: put: responses: '200': description: OK headers: {} '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/feature_rule_version_tags_update_response' examples: response: value: message: featureRuleId tag/s saved successfully uri: >- http://host/v3/feature-rules/featureRuleId/versions/versionId/tags '400': description: Bad Request headers: {} summary: Save feature rule version tags operationId: saveFeatureRule description: Saves the feature rule version tags. tags: - Feature Rules parameters: - name: featureRuleId in: path description: Unique Feature Rule identifier required: true schema: type: string - name: versionId in: path description: Unique Version identifier required: true schema: type: string requestBody: content: application/json: schema: type: array items: {} /v3/forms: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/forms' examples: response: value: results: - title: Test internal-description: This form is for testing public-description: Please provide some info registration: true fields: - slug: first-name placeholder: First name required: true order: 1 summary: List forms operationId: listForms description: Retrieves a list of forms wrapped in the element "results". tags: - Form /v3/forms/{slug}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/form' examples: response: value: title: Test internal-description: This form is for testing public-description: Please provide some info registration: true fields: - slug: first-name placeholder: First name required: true order: 1 summary: Retrieve Form operationId: getForm description: Retrieves a single form. tags: - Form parameters: - name: slug in: path description: Unique Form identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a form operationId: deleteForm description: Deletes a form. tags: - Form parameters: - name: slug in: path description: Unique Form identifier required: true schema: type: string put: responses: '200': description: OK headers: {} '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Save a form operationId: saveForm description: Saves a form. tags: - Form parameters: - name: slug in: path description: Unique Form identifier required: true schema: type: string requestBody: content: application/json: schema: type: object properties: title: type: string internal-description: type: string public-description: type: string registration: type: boolean fields: type: array items: $ref: '#/components/schemas/field' example: title: Test internal-description: This form is for testing public-description: Please provide some info registration: true fields: - slug: first-name placeholder: First name required: true order: 1 /v4/thumbnails/upload-url: post: summary: Generate Thumbnail Upload URL operationId: generateThumbnailUploadUrl tags: - Component Library description: | Generates a pre-signed URL for securely uploading a thumbnail image. The link expires after *10 minutes*. **Considerations:** - Uploaded images are not optimized by the server; please upload images pre-optimized for web use. - Each uploaded file receives a unique `thumbnailId` for reference within your application, but the file name in the bucket is derived from this ID, ensuring no conflicts with existing files. requestBody: required: true content: application/json: schema: type: object properties: fileName: type: string description: The name of the file. Unique file names are recommended but not enforced; the system generates a unique ID for each upload. contentType: type: string description: The MIME type of the file. Supported MIME types include image/jpeg, image/png, and image/gif. example: fileName: "unique-thumbnail.jpg" contentType: "image/jpeg" responses: '200': description: Successfully generated URL for thumbnail upload. content: application/json: schema: type: object properties: id: type: string description: A unique identifier for the uploaded thumbnail, used for referencing in the application. uploadUrl: type: string description: The pre-signed URL for uploading the thumbnail. examples: application/json: value: id: "4f5c49a5-e433-4ac1-b0ad-d67897988899" uploadUrl: "https://zephr-thumbnails.s3.amazonaws.com/{generated-path}?..." '400': description: The request is invalid. A required attribute is missing or an attribute did not meet the expected criteria. content: application/json: schema: type: object properties: error: type: string examples: missingName: value: { "error": "Please provide name of file to upload" } invalidType: value: { "error": "Unsupported MIME type provided" } '401': description: Authentication credentials were not provided or are invalid. content: application/json: schema: type: object properties: error: type: string examples: missingCredentials: value: { "error": "Authentication credentials are required" } /v3/gift: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/gifts' examples: response: value: - id: 58c3852bb23f3467 created: '2018-04-27T09:15:28Z' uri: /news/local/story summary: List all the unclaimed gifts operationId: listAllUnclaimedGifts description: 'Lists all the unclaimed gifts.' tags: - Gifts post: responses: '200': description: OK headers: {} content: '*/*': schema: type: object properties: gift: type: string description: 'id: 65c7da04b734a15f (string)' summary: Create a gift operationId: createGift description: 'Creates a gift.' tags: - Gifts requestBody: content: application/json: schema: type: object properties: id: type: string description: Gift Id (passed as ?gift parameter in claim link) created: type: string description: UTC timestamp when gift was created claimed: type: string description: UTC timestamp when gift was claimed uri: type: string description: >- 1823.html (string) - Path portion of URL gift will allow access to cross_device_session: type: string description: ID of cross-device session of claiming user (if claimed) example: id: 58c3852bb23f3467 created: '2018-04-27T09:15:28Z' uri: /news/local/story /v3/gift/{giftId}: delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a gift operationId: deleteGift description: 'Deletes a gift.' tags: - Gifts parameters: - name: giftId in: path description: '' required: true example: 469efefbe4c4cae0 schema: type: string /v3/users/{userId}/grants: get: responses: '200': description: Returns a list of grants for the user headers: {} content: application/json: schema: oneOf: - $ref: '#/components/schemas/grants-response' - $ref: '#/components/schemas/active-grants-response' examples: response: value: results: - grant_id: 5700aae1-461d-47d7-9a4c-d84412da7053 user_id: 16b26d63-4ee9-4955-9d8b-f6625300d040 entitlement_type: bundle entitlement_id: cae85210-c942-490f-a24a-614033c51e49 expiry_state: active startTime: '2024-02-01 00:00:00' endTime: '2025-02-01 23:59:59' created_at: '2024-02-01 00:00:00' product_id: gold '401': description: Unauthorized headers: { } summary: List user grants operationId: listUserGrants description: Retrieves a list of user grants. tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true schema: type: string - name: active in: query description: Whether or not to include only active grants required: false example: 'true' schema: type: boolean post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} '409': description: The user does not exist headers: {} '403': description: 'Forbidden. You need one of the following privileges to access this endpoint: Identity Module, Products Module, B2B Module or Journey Module' summary: Create a grant operationId: createGrants description: Creates a user grant. tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_GrantBody' /v3/users/{userId}/grants/{grantId}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/grant' summary: Retrieve a grant operationId: getAccountGrant description: Retrieves a single grant. tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true schema: type: string - name: grantId in: path description: Unique Grant identifier required: true schema: type: string delete: responses: '200': description: OK - The grant was found and successfully deleted headers: {} '404': description: Not Found - Cannot find an existing grant for the supplied `userId` and `grantId` headers: {} summary: Delete a grant operationId: deleteUserGrant description: Deletes a grant specified by the `grantId`. This is for a user that is specified by the `userId` tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string - name: grantId in: path description: Unique Grant identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create an account grant operationId: createGrant description: Creates an account grant. tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true schema: type: string - name: grantId in: path description: Unique Grant identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_GrantBody' /v3/users/{userId}/accessModel: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/access_model' examples: response: value: meters: {} credits: {} delivered_entitlements: - id: 0123456789ABCD direct: true meteredBy: [] creditedBy: [] '404': description: Not Found headers: {} summary: Retrieve a user access model operationId: retrieveUserAccessModel description: Retrieves a user access model. tags: - Grants parameters: - name: userId in: path description: Unique User identifier required: true schema: type: string /v3/accounts/{accountId}/grants: get: responses: '200': description: OK headers: {} content: application/json: schema: type: array items: $ref: '#/components/schemas/grant' summary: List account grants operationId: listAccountGrants description: Retrieves a list of account grants. tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true schema: type: string post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create an account grant operationId: createAccountGrant description: Creates an account grant. tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_GrantBody' /v3/accounts/{accountId}/grants/{grantId}: get: responses: '200': description: OK - Retrieved an account grant headers: {} content: application/json: schema: $ref: '#/components/schemas/grant-response' examples: response: value: grantId: 0123456789ABCD entitlement_type: bundle entitlement_id: 8dfb3e7c-7a9e-4f23-b6c1-e2d8c41fb9a8 startTime: '2022-06-01 00:00:00' endTime: '2022-12-31 23:59:59' product_id: PRD-2024-ABC123 '404': description: NOT FOUND - Cannot find an existing grant information for the supplied `accountId` and `grantId` headers: {} content: {} summary: Retrieve an account grant operationId: getUserGrant description: Retrieves a single account grant information, if the supplied `accountId` and `grantId` match tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string - name: grantId in: path description: Unique Grant identifier required: true example: 0123456789ABCD schema: type: string delete: responses: '200': description: OK - The grant was found and successfully deleted headers: {} '404': description: Not Found - Cannot find an existing grant for the supplied `accountId` and `grantId` headers: {} summary: Delete an account grant operationId: deleteAccountGrantById description: Deletes an account grant specified by the `grantId`. This is for a user that is specified by the `accountId`. tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string - name: grantId in: path description: Unique Grant identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string /v3/meters: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/meters' examples: response: value: results: - label: Test meter description: This is a meter unit: views limit: 5 cycle: calendar period: monthly timezone: '+0:00' auto_assign: none '400': description: Bad Request headers: { } summary: List meters operationId: listMeters description: Retrieves a list of meters wrapped in the element "results". tags: - Meter /v3/meters/{id}: post: responses: '200': description: Created successfully headers: { } '201': description: Updated successfully headers: {} '400': description: Bad Request headers: {} summary: Create a meter operationId: createMeter description: Creates or updates a meter for specified `id`. tags: - Meter parameters: - name: id in: path description: Unique Meter identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_MeterBody' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/meter' examples: response: value: label: Test meter description: This is a meter unit: views limit: 5 cycle: calendar period: monthly timezone: '+0:00' auto_assign: none '404': description: Not Found headers: {} summary: Retrieve a meter operationId: getMeter description: Retrieves a single meter with specified `id`. tags: - Meter parameters: - name: id in: path description: Unique Meter identifier required: true schema: type: string delete: responses: '200': description: OK - meter was deleted successfully headers: {} '404': description: Not Found headers: {} summary: Delete a meter operationId: deleteMeter description: Deletes a meter if the meter with `id` exists. tags: - Meter parameters: - name: id in: path description: Unique Meter identifier required: true example: ad29c8fb-9a4b-428d-98d4-893116ef2afc schema: type: string /v3/products: get: responses: '200': description: OK headers: {} content: application/json: schema: type: object properties: results: type: array items: $ref: '#/components/schemas/products' examples: response: value: results: - id: one label: One month access description: One month access entitlement: id: gold-bundle type: bundle mapping: braintree_one_off: price_points: - id: ten label: Ten Dollars price: 10 sharingLimit: 0 summary: List products operationId: listProducts description: Retrieves all configured products. tags: - Products post: responses: '201': description: Created. The product was created. headers: {} content: application/json: schema: type: object properties: message: type: string example: Product created successfully uri: type: string example: https://company.api.zephr.com/v3/products/63b68935-c996-4e90-b88a-dd6a133a7a3 '400': description: Bad Request. Returned if the request body is invalid. headers: {} '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '409': description: Conflict. Returned when missing a reference to the entitlement. headers: {} summary: Save a product operationId: saveProduct description: >- This endpoint saves a product with the given details specified in the body of the request. The product ID is randomyly generated and provided as part of the URI path parameter response returned on success. tags: - Products requestBody: content: application/json: schema: $ref: '#/components/schemas/product-request' /v3/products/{id}: get: responses: '200': description: OK. Returns the product details. headers: {} content: application/json: schema: $ref: '#/components/schemas/product' '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '404': description: Not Found. The product does not exist. headers: {} summary: Retrieve a product operationId: getProduct description: >- Retrieves a single product. The product is identified by the `id` path parameter. tags: - Products parameters: - name: id in: path description: Unique Product identifier. required: true schema: type: string delete: responses: '200': description: OK. The product was deleted. headers: {} '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '404': description: Not Found. The product does not exist. headers: {} summary: Delete a product operationId: deleteProduct description: >- Deletes a product. The product is identified by the `id` path parameter. tags: - Products parameters: - name: id in: path description: Unique Product identifier. required: true schema: type: string put: responses: '200': description: OK. The product was updated. headers: {} content: application/json: schema: type: object properties: message: type: string example: Product updated successfully uri: type: string example: https://company.api.zephr.com/v3/products/gold '201': description: Created. The product was created. headers: {} content: application/json: schema: type: object properties: message: type: string example: Product created successfully uri: type: string example: https://company.api.zephr.com/v3/products/gold '400': description: Bad Request. Returned if the request body is invalid. headers: {} '401': description: Unauthorized. Returned if no valid authentication was provided. headers: {} '409': description: Conflict. Returned when missing a reference to the entitlement. headers: {} summary: Save a product with the given ID operationId: saveProducts description: >- This endpoint both saves and updates a product. The product is identified by the `id` path parameter. If the product ID does not exist, then a new product with the corresponding ID will be created. Otherwise, the existing product will be modified. tags: - Products parameters: - name: id in: path description: Unique Product identifier. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/product-request' /v3/request-rules: get: responses: '200': description: OK - Request rules have been retrieved successfully headers: {} content: application/json: schema: $ref: '#/components/schemas/request_rules_container_object' examples: response: value: results: - label: Test conditions: url_pattern: ^/forum method: GET requirements_script: return [] action_script: return "this is a test" script_type: javascript graph_state: '{"property1": "value1"}' editing_mode: manual version: 1 description: Test description priority: 1 last_updated: '2011-11-11T11:11:11.000' '400': description: Bad Request - Tags size exceeded the limit of 50 headers: {} summary: List request rules operationId: listRequestRules description: Retrieves a list of request rules wrapped in the element "results". parameters: - name: tags in: query description: A comma-separeted list of request rule tags (Maximum 50 tags allowed) schema: type: string example: tag1,tag2,tag3 tags: - Request Rules put: responses: '200': description: OK headers: {} '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Save a request rule operationId: saveRequestRule description: Saves a request rule. tags: - Request Rules requestBody: content: application/json: schema: type: object properties: label: type: string conditions: type: object properties: url_pattern: type: string method: type: string requirements_script: type: string action_script: type: string script_type: type: string graph_state: type: string editing_mode: type: string example: label: Test conditions: url_pattern: ^/forum method: GET requirements_script: return [] action_script: return "this is a test" script_type: javascript graph_state: '{"property1": "value1"}' editing_mode: manual /v3/request-rules/{id}: delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a request rule operationId: deleteRequestRule description: Deletes a request rule. tags: - Request Rules parameters: - name: id in: path description: Unique Request Rule identifier required: true schema: type: string /v3/request-rules/{id}/versions/{versionId}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/request_rules_object' summary: Retrieve a particular version of a request rule operationId: getRequestRuleVersion description: Retrieves a request rule version. tags: - Request Rules parameters: - name: id in: path description: Unique Request Rule identifier required: true schema: type: string - name: versionId in: path description: Unique Request Rule version number required: true schema: type: integer delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a request rule version operationId: deleteRequestRuleVersion description: Deletes a request rule version. tags: - Request Rules parameters: - name: id in: path description: Unique Request Rule identifier required: true schema: type: string - name: versionId in: path description: Unique Request Rule version identifier required: true schema: type: string /v3/sessions: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/session' examples: response: value: expiryDate: 2018-11-15 14:29 PM UTC startDate: 2017-11-15 14:29 PM UTC authenticated: true session_id: SS0123456789ABCD user_id: UU0123456789ABCD '400': description: Bad Request headers: {} summary: Create a session operationId: createNewSession description: Creates a new session. tags: - Session requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string validators: type: object properties: password: type: string use_sso: type: boolean description: >- When this is present there should be no identifiers in the body. The user is identified through a `blaize_session` cookie. required: - identifiers - validators example: identifiers: email_address: joe.blow@company.com validators: password: mysecurepassword123 /v3/sessions/{id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/session-lookup' examples: response: value: session_variables: {} user_id: UU0123456789ABCD sessions: - expiryDate: 2018-11-15 14:29 PM UTC startDate: 2017-11-15 14:29 PM UTC authenticated: true session_id: SS0123456789ABCD user_id: UU0123456789ABCD summary: Retrieve a session operationId: getSession description: Looks up a session. tags: - Session parameters: - name: id in: path description: Unique Session identifier required: true schema: type: string /v3/static: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/static_items' examples: response: value: results: - id: 123456789ABCD summary: List static items operationId: listStaticItems description: Retrieves a list of static item ids wrapped in the element "results". tags: - Static Items /v3/static/{id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/static_single_item' examples: response: value: id: 123456789ABCD item: Lorem ipsum... summary: Retrieve a static item operationId: getItem description: Retrieves a static item. tags: - Static Items parameters: - name: id in: path description: Unique Static Item identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a static item operationId: Delete_Item description: Deletes a static item. tags: - Static Items parameters: - name: id in: path description: Unique Static Item identifier required: true schema: type: string put: responses: '200': description: OK headers: {} '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Save a static item operationId: saveItem description: Saves a static item. tags: - Static Items parameters: - name: id in: path description: Unique Static Item identifier required: true schema: type: string /zephr/oauth2/token: post: security: [] summary: Token refresh or exchange operationId: refreshOrExchangeToken description: >- Exchanges the OAuth2 authorization code for an access token, or refreshes an existing access token using a refresh token. tags: - Third Party Authentication requestBody: content: application/json: schema: type: object oneOf: - required: [grant_type, refresh_token] properties: grant_type: type: string enum: [refresh_token] refresh token: type: string - required: [grant_type, code, redirect_uri] properties: grant_type: type: string enum: [authorization_code] code: type: string redirect_uri: type: string format: uri examples: RefreshToken: summary: Refresh token request value: grant_type: refresh_token refresh_token: 6kuabo4gug8t9h13x7gt43cm AuthorizationCode: summary: Authorization code request value: grant_type: authorization_code code: 1234567890 redirect_uri: https://someUrl.com/callback responses: '200': description: OK content: application/json: schema: oneOf: - $ref: '#/components/schemas/oauth2-token-exchange-response' - $ref: '#/components/schemas/oauth2-token-refresh-response' /v3/user-export: get: responses: '200': description: OK - The paginated user data has been exported successfully. headers: {} content: application/json: schema: $ref: '#/components/schemas/user-export-paginated-response' summary: Export users operationId: exportUsers description: Export users who match the provided parameters. tags: - User Export parameters: - name: attributes in: query description: Whether or not to include core attributes. required: true example: 'true' schema: type: boolean - name: appIds in: query description: >- Comma-delimited list of appIds to retrieve extended profile data for. If appIds is present and attributes isn't, only users with matching extended profiles will be returned. required: true example: quiz1,survey4 schema: type: string - name: appIdsRestrictive in: query description: Only include users with a matching extended profile required: false example: 'true' schema: type: boolean - name: grants in: query description: Include information about entitlements required: false example: 'true' schema: type: boolean - name: since in: query description: Users who were updated after the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: registeredSince in: query description: Users who have registered after the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: registeredBefore in: query description: Users who have registered before the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: rpp in: query description: Results per page required: false example: 40 schema: type: number default: 500 - name: page in: query description: The requested page of results required: false example: 1 schema: type: number default: 1 /v4/user-export: get: responses: '200': description: OK - User and user event data have been returned successfully headers: {} content: application/json: schema: $ref: '#/components/schemas/user-export-paginated-response' summary: Export users and user events operationId: exportUserAndEventsCSV description: | Downloads all subscribers and subscriber events data in csv format. - To download subscribers data, specify the `attributes` query parameter to `true`, and use the `attr`, `appIds`, `appIdsRestrictive`, `grants`, `since`, `registeredSince`, `registeredBefore`, `foreignKeys` query parameters. - To download subscriber events data, specify the `eventsExport` query parameter to `true`, and use the `from` and `to` query parameters. - For pagination, use the `rpp` and `page` query parameters tags: - User Export parameters: - name: attributes in: query description: Whether or not to include core attributes required: false example: 'true' schema: type: boolean - name: attr in: query description: >- Comma-delimited list of user attribute filters in the following format: `attributeKey.operation.value` or `attributeKey.operation.value1.value2`. required: false example: attr1.contains.a,attr2.equals.3 schema: type: string - name: appIds in: query description: >- Comma-delimited list of appIds to retrieve extended profile data for. If appIds is present and attributes isn't, only users with matching extended profiles will be returned. Use `all` to retrieve all extended profile data. required: false example: quiz1,survey4,all schema: type: string - name: appIdsRestrictive in: query description: Only include users with a matching extended profile required: false example: 'true' schema: type: boolean - name: grants in: query description: Include information about entitlements required: false example: 'true' schema: type: boolean - name: since in: query description: Users who were updated after the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: registeredSince in: query description: Users who have registered after the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: registeredBefore in: query description: Users who have registered before the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: foreignKeys in: query description: Include user foreign keys required: false example: 'true' schema: type: boolean - name: eventsExport in: query description: Indicates to export the subscriber events csv file required: false example: '' schema: type: string - name: from in: query description: Subscriber event after the specified date required: false example: '2020-01-01T00:00:00Z' schema: type: string - name: to in: query description: Subscriber event before the specified date required: false example: '2020-01-02T00:00:00Z' schema: type: string - name: rpp in: query description: Results per page required: false example: 40 schema: type: number default: 500 - name: page in: query description: The requested page of results required: false example: 1 schema: type: number default: 1 /v3/schema/users: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/schemas' examples: response: value: - slug: slug1 label: Test internal-description: This is for testing public-description: Please provide some info required: false decision-point: false validation-expression: test input-type: text select-options: 'null' range-start: 0 range-end: 100 range-step: 5 summary: Retrieve a user schema operationId: retrieveUserSchema description: Retrieves a user Schema. tags: - User Schema /v3/schema/users/{slug}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/schema-field' '404': description: Not Found headers: {} summary: Retrieve a schema slug operationId: getSchemaSlug description: Retrieves a schema slug. tags: - User Schema parameters: - name: slug in: path description: Unique identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} content: '*/*': schema: $ref: '#/components/schemas/schema-field-deletion-response' '404': description: Not Found headers: {} summary: Delete a schema slug operationId: deleteSchemaSlug description: Deletes a schema slug. tags: - User Schema parameters: - name: slug in: path description: Unique identifier required: true schema: type: string put: responses: '200': description: Updated headers: {} '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/schema-field-creation-response' examples: response: value: message: Field added to user schema successfully uri: http://host/v3/schema/users/slug '400': description: Bad Request headers: {} summary: Save a schema slug operationId: saveSchemaSlug description: Saves a schema slug. tags: - User Schema parameters: - name: slug in: path description: Unique identifier required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/schema-field' /v3/users: get: responses: '400': description: Bad Request headers: {} '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/users-response' examples: response: value: results: - user_id: 123456789ABCD identifiers: email_address: joe.blow@company.com attributes: first_name: Joe surname: Blow email_verified: true summary: List users operationId: listUsers description: Retrieves a list of users wrapped in the element "results". tags: - Users parameters: - name: identifiers.email_address in: query description: Email address of the user to search for. required: true example: example@example.com schema: type: string - name: identifiers.username in: query description: Username of the user to search for. required: true example: username schema: type: string - name: foreign_key.xxx in: query description: >- Foreign key of the user to search for. The foreign system is parsed as the remainder of the parameter key name following 'foreign_id.' required: true example: 123abc schema: type: string - name: search in: query description: Performs a general search for the specified value across multiple fields, including attributes. required: true example: abc schema: type: string - name: search_by_attributes in: query description: Several attribute filters can be specified to search for users with particular attributes. It needs to be Base64 and URL encoded. schema: $ref: '#/components/schemas/search_by_attributes' post: responses: '201': description: Created headers: {} content: application/json: schema: $ref: '#/components/schemas/users-response' examples: response: value: data: user_id: 123456789ABCD identifiers: email_address: joe.blow@company.com attributes: first_name: Joe surname: Blow email_verified: true '400': description: Bad Request headers: {} summary: Create a user operationId: createUser description: Creates a new user. tags: - Users requestBody: content: application/json: schema: $ref: '#/components/schemas/user-creation' /v3/users/{user_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/user-response' examples: response: value: user_id: 123456789ABCD identifiers: email_address: joe.blow@company.com attributes: first_name: Joe surname: Blow email_verified: true summary: Retrieve a user operationId: getUser description: Retrieves a user. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a user operationId: deleteUser description: Deletes a user. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string /v3/users/{user_id}/attributes: put: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} '404': description: Not Found headers: {} summary: Update all user attributes operationId: replaceUserAttributes description: >- Replaces a user's attributes. This will replace any existing attributes for the user with the attributes in the payload. To leave existing attributes in place, use PATCH. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Update_User_attributesBody' patch: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} '404': description: Not Found headers: {} summary: Update user attributes operationId: updateUserAttribute description: >- Updates a user's attributes. Any of the user's existing attributes not specified in the payload will be left in-place. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Update_User_attributesBody' /v3/users/{user_id}/profile/{app_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: type: object properties: message: type: string example: User extended profile '400': description: Bad Request. Thrown when app_id starts with _restricted. headers: {} '401': description: Unauthorized. The user is not authorized to fetch the profile. headers: {} '404': description: Not Found. The provided user does not exist. headers: {} summary: Retrieve Extended User Profiles description: >- Extended Profile is used to store additional user information that is not part of the core profile. This endpoint is designed to be used for retrieving the user's Extended Profile. The body can be any valid JSON. tags: - Users parameters: - name: user_id in: path description: Unique User Identifier required: true schema: type: string - name: app_id in: path description: Unique App Identifier required: true schema: type: string /v4/user-updates: post: summary: Update users in bulk operationId: updateBulkUsers description: | Updates user's attributfoes or delete users on a bulk basis. When setting attributes, any of the user's existing attributes not specified in the payload will be left in-place. tags: - Users requestBody: $ref: '#/components/requestBodies/Bulk_User_Update_Request' responses: '202': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Bulk_User_Update_Response' '400': description: The request is invalid. A required attribute is missing or an attribute did not meet the expected criteria. content: application/json: schema: type: object properties: error: type: string examples: missingName: value: { "error": "Please provide name of file to upload" } invalidType: value: { "error": "Unsupported MIME type provided" } '401': description: Authentication credentials were not provided or are invalid. content: application/json: schema: type: object properties: error: type: string examples: missingCredentials: value: { "error": "Authentication credentials are required" } get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Get_Bulk_User_Update_Jobs_Response' '404': description: Not Found headers: {} summary: List all bulk user update jobs operationId: listBulkUserUpdateJobs description: | Lists all bulk user update jobs. tags: - Users /v4/user-updates/{job_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Get_Bulk_User_Update_Job_Response' '404': description: Not Found headers: {} summary: Retrieves a bulk user update job operationId: retrieveBulkUserUpdateJob description: | Retrieves the status of a bulk user update job. tags: - Users parameters: - name: job_id in: path description: Id of the job. required: true schema: type: string /v4/users/segments: post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a user segment operationId: createUserSegment description: >- Creates a new User Segment. tags: - Users requestBody: $ref: '#/components/requestBodies/Create_User_Segment_Body' get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/User_Segments_Response' '404': description: Not Found headers: { } summary: List user segments operationId: listUserSegment description: Lists all user segments available for users. tags: - Users /v4/users/segments/{segmentId}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/User_Segment_Response' summary: Retrieve a user segment operationId: getUserSegment description: >- Retrieves a user segment. tags: - Users parameters: - name: segmentId in: path description: Unique User Segment Identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} summary: Delete a user segment operationId: deleteUserSegment description: >- Deletes a user segment by ID. tags: - Users parameters: - name: segmentId in: path description: Unique User Segment Identifier required: true schema: type: string /v4/users/{userId}/segments: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/User_Segments_Response' '404': description: Not Found headers: { } summary: List user segments for a user operationId: listUserSegmentsforUser description: Lists all user segments for a given `userId`. tags: - Users parameters: - name: userId in: path description: Unique User identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string /v3/users/{user_id}/update-email: post: responses: '201': description: > OK. The process to update email started and is potentially already completed, depending on the Email Verification configuration flag. See endpoint description for more information. headers: {} '400': description: Bad Request headers: {} '404': description: User ID not Found headers: {} '409': description: Email address already in use headers: {} summary: Start an email address update operationId: startEmailAddressUpdate description: > Starts an email address update. If the Require Email Verification configuration flag is set, to update a user's email address, first they need to verify their new address. If the Email Change Override feature flag is enabled, the an email with a link to verify the address will be sent to the new address. Otherwise the email will be sent to the old address. If the Require Email Verification configuration flag is not set, this endpoint sets the new email address immediately. If the user has a username and the provided email address is blank, the email address is deleted. If the user does not have a username and the provided email address is blank, a 400 is returned. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string requestBody: content: application/json: schema: type: object properties: new_identifiers: type: object properties: email_address: type: string pattern: .+@.+\..+ required: - email_address required: - new_identifiers example: new_identifiers: email_address: joe.blow@company.com /v4/users/reset: post: responses: '200': description: OK - The password reset flow has been started successfully headers: {} '400': description: Bad Request - Incorrect payload was submitted headers: {} '404': description: Not Found - Site not found with the supplied `siteSlug`, or user not found with the supplied email address headers: {} summary: Start a password reset operationId: startPasswordReset description: > Starts a password reset. **IMPORTANT**: To reset a user password, first is required to send a POST to request an email to be sent to the user’s email with a link for the user to click on, so as to verify that they requested this password change. tags: - Users requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string example: joe.blow@company.com siteSlug: type: string description: | The slug of the site where the user account is registered. example: my-site required: - identifiers - siteSlug example: identifiers: email_address: joe.blow@company.com siteSlug: my-site /v3/users/token-exchange: post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Start a passwordless authentication operationId: startPasswordlessAuthentication description: > Starts a passwordless authentication. **IMPORTANT**: For passwordless authentication, first is required to send a POST to request an email to be sent to the user’s email with a link for the user to click on to verify his email. tags: - Users requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string delivery: type: object properties: method: type: string destination: type: string action: type: string redirect: type: string required: - identifiers - delivery example: identifiers: email_address: joe.blow@company.com delivery: method: email destination: joe.blow@company.com action: login redirect: / /v3/users/{user_id}/sessions: get: responses: '200': description: OK headers: {} content: application/json: schema: oneOf: - $ref: '#/components/schemas/session-lookup' - $ref: '#/components/schemas/sessions' examples: response: value: session_variables: {} user_id: UU0123456789ABCD sessions: - expiryDate: 2018-11-15 14:29 PM UTC startDate: 2017-11-15 14:29 PM UTC authenticated: true session_id: SS0123456789ABCD user_id: UU0123456789ABCD access_model: meters: [] credits: [] delivered_entitlements: [] '404': description: Not Found headers: {} summary: List user sessions operationId: listUserSessions description: Retrieves a list of the user's sessions. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string /v3/users/{user_id}/accounts: get: responses: '200': description: OK headers: {} content: application/json: schema: type: array items: $ref: '#/components/schemas/account-user' examples: response: value: results: - user_id: 0123456789ABCD account_id: 0123456789ABCD '404': description: Not Found headers: {} summary: List user accounts operationId: listUserAccounts description: Retrieves a list of the user's accounts. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string /v3/users/{user_id}/authorization/refresh: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/access_model' examples: response: value: meters: {} credits: {} delivered_entitlements: - id: 0123456789ABCD direct: true meteredBy: [] creditedBy: [] '404': description: Not Found headers: {} summary: Refresh a access model operationId: refreshAccessModel description: Refreshes the user's access model. tags: - Users parameters: - name: user_id in: path description: Unique User identifier required: true schema: type: string /v3/users/{user_Id}/legacyPassword: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/admin-user-response' examples: response: value: message: >- Legacy Password updated successfully to be used instead of password user_id: '{userId}' uri: http://localhost:8080/v3/users/{userId}/legacyPassword '404': description: Not Found headers: {} summary: Reset a legacy password operationId: resetLegacyPassword description: >- Sets the current password to an empty string, also sets the legacy password to the provided string. tags: - Users parameters: - name: user_Id in: path description: Unique User identifier required: true schema: type: string /v4/sessions/{site}: post: responses: '201': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/session' examples: response: value: expiryDate: 2018-11-15 14:29 PM UTC startDate: 2017-11-15 14:29 PM UTC authenticated: true session_id: SS0123456789ABCD user_id: UU0123456789ABCD '400': description: Bad Request headers: {} '401': description: Unauthorized headers: {} '404': description: Not Found headers: {} summary: Create a new session under a given site operationId: createNewSessionUnderGivenSite description: Creates a new session under a given site. tags: - V4 Session parameters: - name: site in: path description: The site ID required: true schema: type: string requestBody: content: application/json: schema: type: object properties: identifiers: type: object properties: email_address: type: string validators: type: object properties: password: type: string use_sso: type: boolean description: >- When this is present there should be no identifiers in the body. The user is identified through a `blaize_session` cookie. required: - identifiers - validators example: identifiers: email_address: joe.blow@company.com validators: password: mysecurepassword123 /v4/sessions/{site}/{sessionId}: get: responses: '200': description: OK. Returns the session details. headers: {} content: application/json: schema: $ref: '#/components/schemas/session-lookup' '401': description: Unauthorized. No valid authentication was provided. headers: {} '404': description: No session found. The site or the session ID is invalid. headers: {} summary: Look up a session under a given site operationId: lookupSessionUnderGivenSite description: >- This endpoint allows you to access specific session details for a particular site. By providing the unique identifiers for the site and the session, you can retrieve detailed information about that session. This information can include the session's start time, end time, current status, and any associated user data. The exact content of the response will depend on the specific session and site identifiers provided in the request. tags: - V4 Session parameters: - name: site in: path description: The unique site identifier within the tenant. required: true schema: type: string - name: sessionId in: path description: Unique session identifier assigned to each session, enabling precise identification and retrieval of session-related information within the API. required: true schema: type: string delete: responses: '200': description: OK. The session was successfully deleted. headers: {} '401': description: Unauthorized. No valid authentication was provided. headers: {} '404': description: No session found. The site or the session ID is invalid. headers: {} summary: Delete a session under a given site operationId: deleteSessionUnderGivenSite description: This endpoint is used to delete a specific session for a given site. You need to provide the unique identifiers for the site and the session. This operation is useful when you want to manually end a session before it naturally expires. tags: - V4 Session parameters: - name: site in: path description: The unique site identifier within the tenant. required: true schema: type: string - name: sessionId in: path description: Unique session identifier assigned to each session, enabling precise identification and retrieval of session-related information within the API. required: true schema: type: string /v4/accounts/{accountId}/grants: get: responses: '200': description: OK - Users were found for `accountId` headers: { } content: application/json: schema: type: array items: type: object properties: userId: type: string accountId: type: string examples: response: value: - userId: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 accountId: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 '404': description: Not Found - Cannot find users with the supplied `accountId` headers: { } summary: List account users operationId: listAccountUsersV4 description: Retrieves all the account users, if the `accountId` has users. tags: - Account User parameters: - name: accountId in: path description: Unique Account identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string post: responses: '201': description: Created headers: { } '400': description: Bad Request headers: { } summary: Create an account grant operationId: createAccountGrantV4 description: Creates an account grant. This is for an account that is specified by the `accountId` tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true schema: type: string requestBody: $ref: '#/components/requestBodies/Create_GrantBody' /v4/accounts/{accountId}/grants/{grantId}: delete: responses: '200': description: OK - The grant was found and successfully deleted headers: { } content: application/json: examples: response: value: "Account grant revoked" '404': description: Not Found - Cannot find an existing grant for the supplied `accountId` and `grantId` headers: { } summary: Delete an account grant operationId: deleteAccountGrant description: Deletes an account grant specified by the `grantId`. This is for a user that is specified by the `accountId`. tags: - Grants parameters: - name: accountId in: path description: Unique Account identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string - name: grantId in: path description: Unique Grant identifier required: true example: 5fag4a2d-86cd-4bb0-a5df-68dca75a3a21 schema: type: string /v4/accounts/{accountId}/users: post: responses: '202': description: OK - Adding account users to company account `accountId` was successful headers: { } content: application/json: schema: $ref: '#/components/schemas/add-bulk-account-users-by-domains' examples: response: value: "Bulk adding account users for account `accountId`" '409': description: Conflict - Cannot add account users to company account `accountId` headers: { } '500': description: Internal Error - Failed to bulk add account users for account `accountId` headers: { } summary: Post an account grant operationId: postAccountBulking description: Adding account users to company account by email domain. tags: - Accounts parameters: - name: accountId in: path description: Unique Account Company identifier required: true example: 3f589a2d-86ad-4b70-a5df-68dca75a3a21 schema: type: string /v4/anonymous-sessions/{site}: post: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/session' examples: response: value: expiryDate: 2018-11-15 14:29 PM UTC startDate: 2017-11-15 14:29 PM UTC authenticated: true session_id: SS0123456789ABCD user_id: UU0123456789ABCD '401': description: Unauthorized headers: {} summary: Create an anonymous session under a given site operationId: createAnonymousSessionUnderGivenSite description: Creates an anonymous session under a given site. tags: - V4 Session parameters: - name: site in: path description: The site ID required: true schema: type: string /v3/webhooks: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/webhook-responses-container' examples: response: value: results: - webhook_id: 01234567890ABCD label: Test webhook triggers: - user.create - user.delete method: POST target: http://localhost:9999 summary: List webhooks operationId: listWebhooks description: Retrieves a list of webhooks wrapped in the element "results". tags: - Webhook post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create a webhook operationId: createWebhook description: Creates a Webhook. tags: - Webhook requestBody: content: application/json: schema: type: object properties: label: type: string triggers: type: array items: {} method: type: string target: type: string example: label: Test webhook triggers: - user.create - user.delete method: POST target: http://localhost:9999 /v3/webhooks/{id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/webhooks-responses' examples: response: value: webhook_id: 01234567890ABCD label: Test webhook triggers: - user.create - user.delete method: POST target: http://localhost:9999 summary: Retrieve a webhook operationId: getWebhook description: Retrieves a webhook. tags: - Webhook parameters: - name: id in: path description: Unique Webhook identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete a webhook operationId: deleteWebhook description: Deletes a webhook. tags: - Webhook parameters: - name: id in: path description: Unique Webhook identifier required: true schema: type: string put: responses: '200': description: OK headers: {} '400': description: Bad Request headers: {} summary: Update a webhook operationId: updateWebhook description: Updates a webhook. tags: - Webhook parameters: - name: id in: path description: Unique Webhook identifier required: true schema: type: string requestBody: content: application/json: schema: type: object properties: webhook_id: type: string label: type: string triggers: type: array items: {} method: type: string target: type: string example: webhook_id: 01234567890ABCD label: Test webhook triggers: - user.create - user.delete method: POST target: http://localhost:9999 /v3/accounts: get: parameters: - name: rpp in: query description: The number of results per page you want to retrieve. schema: type: number example: 15 default: 10 - name: page in: query description: The page number for which you want to retrieve results. schema: type: number example: 15 default: 10 - name: search in: query description: The search query that searches accounts by their names schema: type: string example: "My account" responses: '200': description: OK - Accounts have been retrieved successfully headers: {} content: application/json: schema: $ref: '#/components/schemas/simple_account_bodies' examples: response: value: results: - account_id: 10549fef-cddb-4b1f-92e4-27ab7cb2e555 name: Account name tenant_id: "my-tenant" number_of_seats: 7 email_address: "company@email.com" total: 20 summary: List accounts operationId: listAccounts description: >- Retrieves a paginated list of accounts in `results` according to the passed in `rpp`, `page` and `search` parameters alongside the total number of items matching the search query (`total`). tags: - Account post: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Create an account operationId: createAccount description: Creates an account. tags: - Account requestBody: description: Description required: true content: application/json: schema: $ref: '#/components/schemas/Create_AccountBody' /v3/accounts/{id}: get: responses: '404': description: Account id not found '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/response_accountbody' examples: response: value: company_id: 123456789ABCD name: Account name number_of_seats: 5 allow_oversubscription: true notify_when_account_oversubscribed: true notify_on_each_registration_when_account_is_oversubscribed: true registration_code: Registration code on_premises_ips: 125.124.143.24 premises_tags: '["gold-tier", "university"]' session_limit: 10 session_limit_behaviour: PREVENT_LOGIN summary: Retrieve an account operationId: getAccount description: Retrieves an account. tags: - Account parameters: - name: id in: path description: Unique Account identifier required: true schema: type: string delete: responses: '200': description: OK headers: {} '404': description: Not Found headers: {} summary: Delete an account operationId: deleteAccount description: Deletes an account. tags: - Account parameters: - name: id in: path description: Unique Account identifier required: true schema: type: string put: responses: '201': description: Created headers: {} '400': description: Bad Request headers: {} summary: Update an account operationId: updateAccount description: Updates an account. tags: - Account parameters: - name: id in: path description: Unique Account identifier required: true schema: type: string requestBody: description: Description required: true content: application/json: schema: $ref: '#/components/schemas/Create_AccountBody' examples: response: value: company_id: 123456789ABCD name: Account name number_of_seats: 5 allow_oversubscription: true notify_when_account_oversubscribed: true notify_on_each_registration_when_account_is_oversubscribed: true registration_code: Registration code on_premises_ips: 125.124.143.24 premises_tags: '["gold-tier", "university"]' session_limit: 10 session_limit_behaviour: PREVENT_LOGIN /v4/accounts/{account_id}: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/response_accountbody' examples: response: value: company_id: 123456789ABCD name: Account name number_of_seats: 5 allow_oversubscription: true notify_when_account_oversubscribed: true notify_on_each_registration_when_account_is_oversubscribed: true registration_code: Registration code on_premises_ips: 125.124.143.24 premises_tags: '["gold-tier", "university"]' session_limit: 10 session_limit_behaviour: PREVENT_LOGIN '404': description: Not Found headers: {} summary: Retrieve an account for V4 operationId: getAccountV4 description: Retrieves an V4 account. tags: - Account parameters: - name: account_id in: path description: Unique Account identifier V4 required: true schema: type: string /v3/healthchecks/origin: get: responses: '200': description: OK - Returned when origin is returning available headers: {} '500': description: Internal Server Error headers: {} '503': description: Service Unavailable - The V3 console doesn't handle a 401 response from this endpoint properly headers: {} summary: Check availability of the origin description: Sends a request to the origin site to verify availability. parameters: - name: tenantId in: cookie required: true schema: type: string tags: - Health Check /v3/request-rules/{id}/versions: post: responses: '200': description: OK headers: {} content: application/json: schema: type: object $ref: '#/components/schemas/request_rules_object' examples: response: value: label: Test conditions: url_pattern: ^/forum method: POST requirements_script: return [] action_script: return "this is a test" script_type: javascript graph_state: '{"property1": "value1"}' editing_mode: manual '400': description: Bad Request headers: {} summary: Create a request rule version operationId: createRequestRuleVersion description: Create a request rule version tags: - Request Rules Version parameters: - name: id in: path description: Unique Request Rule identifier required: true schema: type: string /zephr/public/template-components/v1/template-components/{templateConfigId}: get: responses: '200': description: OK headers: {} content: application/json: schema: type: string examples: response: value: - The template the-value::! '404': description: Not Found headers: {} summary: Fetch external template operationId: fetchExternalTemplate description: Fetch External Template parameters: - name: templateConfigId in: path description: Unique External Template identifier required: true schema: type: string /v4/pages/upload-url: post: responses: '201': description: OK - An upload URL has successfully been generated headers: {} content: application/json: schema: type: object properties: logoId: type: string example: "857945ea-b4e1-4fba-84ce-73755d987243" description: The generated ID for the page logo uploadUrl: type: string example: "https://s3.amazonaws.com/test-bucket/2022/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA3SGQVQG7FGA6KKA6%2F20221104%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221104T140227Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=b228dbec8c1008c80c162e1210e4503dceead1e4d4751b4d9787314fd6da4d55" description: The generated presigned S3 upload URL summary: Generates an S3 upload URL operationId: generatePageUploadURL description: Generates a presigned S3 URL that can be used to upload a logo. tags: - Pages /v4/accounts: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/account_bodies' examples: response: value: results: - company_id: 123456789ABCD name: Account name number_of_seats: 5 allow_oversubscription: true notify_when_account_oversubscribed: true notify_on_each_registration_when_account_is_oversubscribed: true registration_code: Registration code on_premises_ips: 125.124.143.24 premises_tags: '["gold-tier", "university"]' session_limit: 10 session_limit_behaviour: PREVENT_LOGIN summary: List accounts for v4 operationId: listAccountsV4 description: Retrieves a list of accounts for V4. tags: - Account /zephr/integration/promo-codes/v1/redemptions: post: responses: "200": description: OK headers: { } content: application/json: schema: type: object properties: results: type: array items: $ref: "#/components/schemas/promo-code-redemption-result" summary: Process promo code redemptions operationId: processPromoCodeRedemptions description: | Redeem promo codes that are configured from the Zephr console. Responds with a list of redemption results for each promo code. tags: - Dynamic Offer Promo code redemption requestBody: content: application/json: schema: type: object properties: promo_codes: type: array description: A list of promo codes that can be redeemed. items: type: string /blaize/payment/braintree/subscriptions/{externalId}: delete: responses: '200': description: Subscription cancellation processed successfully. headers: { } '403': description: Forbidden - The request was not authorized. headers: { } '409': description: Conflict - There was a conflict processing the request. headers: { } '500': description: Internal Server Error - An error occurred while cancelling the subscription. headers: { } summary: Cancel Subscription operationId: cancelSubscriptionLegacy description: Cancels a subscription using the legacy method. tags: - Subscription parameters: - name: externalId in: path description: External subscription identifier required: true schema: type: string patch: responses: '204': description: No Content - The subscription update was successful. headers: { } '401': description: Unauthorized - Authentication is required. headers: { } '500': description: Internal Server Error - An error occurred while updating the subscription. headers: { } summary: Update Braintree Subscription operationId: orchestrateUpdateBraintreeSubscription description: Updates a Braintree subscription. tags: - Subscription parameters: - name: externalId in: path description: External subscription identifier required: true schema: type: string requestBody: description: Update Subscription Request required: true content: application/json: schema: type: object components: securitySchemes: ZephrHmacHttp: description: >- Requests to this API can be authenticated using an HMAC token signed with keys created in the admin console. For more information on signing requests with HMAC, see: https://developer.zuora.com/zephr-docs/zephr-api/zephr-api-tutorials/hmac-request-signing-and-key-pair/ For more information on generating keys for this, see: https://knowledgecenter.zuora.com/Zephr/Admin_User_Settings/Manage_Key_Pairs The scheme name in the `Authorization` header, `ZEPHR-HMAC-*`, includes the signing algorithm as the final part of the name. For example: `ZEPHR-HMAC-SHA-256`. type: http scheme: ZEPHR-HMAC-* schemas: account-user: type: object properties: user_id: type: string example: 54de866e-dc98-48d6-a2ea-4736a430f273 account_id: type: string example: e196ad75-a6d0-471b-90b3-de3843dd7860 user_type: type: string example: user user_email: type: string example: user@example.com user_name: type: string example: username123 admin-user-response: type: object properties: user_id: type: string example: b859f5dd-8184-4d01-8bf9-e3e771f68a62 message: type: string example: Admin user created successfully uri: type: string example: >- http://company.com/v3/admin/users/b859f5dd-8184-4d01-8bf9-e3e771f68a62 admin-user-login-response: type: object properties: cookie: type: string example: blaize_admin_session=... message: type: string example: Login successful logout-response: type: object properties: message: type: string example: Session deleted access-key: type: object properties: access_key: type: string example: access key... keypair-response: type: object properties: secret_key: type: string example: secret key... message: type: string example: >- Keypair created: you will not be able to recover the secret, so take note of it issue-keypair-response: type: object properties: secret_key: type: string example: secret key... message: type: string example: >- Keypair created: you will not be able to recover the secret, so take note of it access_key: type: string example: access key... get-access-key-response: type: array items: $ref: '#/components/schemas/access-key' revoke-keypair-response: type: object properties: message: type: string example: Keypair revoked admin-role: type: object properties: email: type: string example: admin@company.com role: type: string example: role... admin-roles: type: array items: $ref: '#/components/schemas/admin-role' admin-role-creation-response: type: object properties: message: type: string example: Admin role created successfully list-admin-role-response: type: object properties: email: type: string example: admin@company.com role: type: string example: role... role_id: type: string list-admin-roles-response: type: array items: $ref: '#/components/schemas/list-admin-role-response' admin-role-update-response: type: object properties: message: type: string example: Admin role updated successfully admin-role-deleted-response: type: object properties: message: type: string example: Admin role deleted successfully user_identifier: type: object properties: user_id: type: string example: 123456789ABCD entitlement: type: object properties: label: type: string example: Test entitlement description: type: string example: This is an entitlement auto_assign: type: string example: none includes: type: object properties: entitlements: type: array items: type: string example: [] meters: type: array items: type: string example: [] credits: type: array items: type: string example: [] bundles: type: array items: type: string example: [] bundle: type: object properties: tenantId: type: string example: company subTenantId: type: string example: company|demo type: type: string example: bundle id: type: string example: 1163991e-d671-4695-9ac0-b3d63fecfc20 label: type: string example: Test bundle description: type: string description: Returned if not null example: This is a bundle includes: $ref: '#/components/schemas/includes' auto_assign: enum: - none - all - anonymous - authenticated example: none bundles: type: object properties: results: type: array items: $ref: '#/components/schemas/bundle' cache_configurations_objects: type: object properties: results: type: array items: $ref: '#/components/schemas/cache_configurations_object' cache_configurations_object: type: object properties: label: type: string example: Test conditions: $ref: '#/components/schemas/conditions' cache: $ref: '#/components/schemas/cache' redirect: $ref: '#/components/schemas/redirect' conditions: type: object properties: url_pattern: type: string example: ^/forum header_patterns: $ref: '#/components/schemas/header_patterns' header_patterns: type: object properties: Content-Type: type: string example: ^text/html cache: type: object properties: origin: type: boolean decision_points: type: boolean redirect: type: object properties: on: type: boolean target: type: string example: /some/path status: type: integer example: 301 companies: type: array items: $ref: '#/components/schemas/company' company: type: object properties: name: type: string example: Company name description: type: string example: Company description website: type: string example: company.com contact: type: string example: Company contact account_manager: type: string example: Company account manager companyv4: type: object properties: company_id: type: string example: 1f6841a8-7f3b-4505-856e-4549be433545 description: Company identifier name: type: string description: Company name example: My Company description: type: string description: Company description example: This is an example company website: type: string description: Company website example: https://company.com contact: type: string description: The company's contact information example: email@company.com account_manager: type: string description: Company account manager example: Joe Blow tenantId: type: string description: Tenant identifier example: my-tenant subTenantId: type: string description: Sub-tenant identifier (it will match the tenantId if the company is not part of a super tenant) example: my-tenant configuration: type: object properties: db.tables.extendedProfiles: type: string example: value db.tables.grants: type: string example: value db.tables.forms: type: string example: value db.tables.features: type: string example: value db.tables.requestRules: type: string example: value db.tables.entitlements: type: string example: value db.tables.formFields: type: string example: value db.tables.companies: type: string example: value db.tables.accounts: type: string example: value db.tables.userSchemaFields: type: string example: value db.tables.users: type: string example: value db.tables.userAttributes: type: string example: value db.tables.accountUsers: type: string example: value db.tables.staticItems: type: string example: value db.tables.webhooks: type: string example: value db.tables.adminUserTenantRoles: type: string example: value db.tables.adminUsers: type: string example: value db.tables.adminKeyPairs: type: string example: value oauth.google.apis.host: type: string example: value oauth.linkedin.clientSecret: type: string example: value oauth.linkedin.apis.host: type: string example: value oauth.google.clientSecret: type: string example: value oauth.google.callbackUri: type: string example: value oauth.linkedin.clientId: type: string example: value oauth.linkedin.callbackUri: type: string example: value oauth.google.clientId: type: string example: value oauth.facebook.callbackUri: type: string example: value oauth.facebook.clientSecret: type: string example: value oauth.facebook.apis.host: type: string example: value oauth.facebook.clientId: type: string example: value cdn.origin: type: string example: value redis.port: type: string example: value elasticsearch.url: type: string example: value aws.region: type: string example: value redis.host: type: string example: value email.from: type: string example: value authentication.password.requireEmailVerfication: type: string example: value credits: type: array items: $ref: '#/components/schemas/credit' credit: type: object properties: label: type: string example: Test credit description: type: string example: This is an credit delivers: type: array items: {} unit: type: string example: views quantity: type: number example: 5 auto_assign: type: string example: none access_model_credit: type: object properties: remainingCredits: type: integer example: 5 contentIds: type: array items: type: string example: - 123456789ABCD contentIdTransform: type: string enum: - NONE - PREPEND_RANDOM - STRIP_PARAMS headers: type: object properties: Location: type: string example: /login.html access-decision-response: type: object properties: status: type: string example: '301' body: type: string example: Redirecting to login page... headers: $ref: '#/components/schemas/headers' email-templates: type: array items: $ref: '#/components/schemas/email-template' email-template: type: object properties: templateType: type: string example: template type description: >- The template type. Supported types: User Password Reset, User Email Update, User Email Verification, User Complete Registration, User Passwordless Authentication, User Oversubscription Notification, User 2FA Authentication, User 2FA Password Reset, User Email Update Interstitial, Pages User Email Update, Pages User Password Reset, Admin User 2FA Authentication, Admin User Role, Admin User Password Reset slug: type: string example: email template slug description: >- It can be one of the default email template slugs provided or a custom one. Default email template slugs provided: password-reset-email, user-update-email, verify-email-address, complete-user-registration, passwordless-authentication-email, user-oversubscription-notification, two-factor-authentication-email, password-reset-email-2fa, user-interstitial-update-email, pages-user-email-update-otp-email-template, pages-password-reset-email, admin-user-2fa-email-template, v4-admin-user-role-assigned-email, v4-admin-user-password-reset-email. label: type: string example: Name of the email template description: Name of the email template subject: type: string example: Email subject description: The subject on the email content: type: string example: Email content description: The content of the email default: type: boolean description: Whether is one of the default email templates entitlements: type: array items: $ref: '#/components/schemas/entitlement' feature_rules_response: type: array items: $ref: '#/components/schemas/feature_rule_response' feature_rule_response: type: object properties: id: type: string example: featureRuleId version: type: number example: 1 tags: type: array items: {} label: type: string example: Test feature description: type: string example: Test feature last_updated: type: string example: '2011-11-11T11:11:11.000' request_type: type: string enum: - html - json - graphql example: html target_name: type: string example: article match_operation: type: string enum: - equals - contains example: equals target_value: type: string example: home_bottom css_selector: type: string example: .trial-download-single.trial feature_rule_version_response: type: object properties: id: type: string example: featureRuleId version: type: number example: 1 tags: type: array items: {} label: type: string example: Test feature description: type: string example: Test feature requirements_script: type: string example: return [] action_script: type: string example: return "this is a test" script_type: type: string example: javascript graph_state: type: string example: '{"property1": "value1"}' editing_mode: type: string example: manual last_updated: type: string example: '2011-11-11T11:11:11.000' feature_rule_deletion_response: type: object properties: message: type: string example: featureRuleId deleted successfully feature_rule_creation_response: type: object properties: message: type: string example: Feature Rule created successfully feature_rule_version_tags_update_response: type: object properties: message: type: string example: featureRuleId tag/s saved successfully uri: type: string example: http://host/v3/feature-rules/featureRuleId/versions/versionId/tags forms: type: array items: $ref: '#/components/schemas/form' form: type: object properties: title: type: string example: Test internal-description: type: string example: This form is for testing public-description: type: string example: Please provide some info registration: type: boolean example: true fields: type: array items: $ref: '#/components/schemas/field' field: type: object properties: slug: type: string example: first-name placeholder: type: string example: first-name required: type: boolean example: true order: type: number example: 1 gifts: type: array items: $ref: '#/components/schemas/gift' gift: type: object properties: id: type: string example: 58c3852bb23f3467 description: Gift Id (passed as ?gift parameter in claim link) created: type: string example: '2018-04-27T09:15:28Z' description: UTC timestamp when gift was created claimed: type: string description: UTC timestamp when gift was claimed uri: type: string example: /news/local/story description: 1823.html (string) - Path portion of URL gift will allow access to cross_device_session: type: string description: ID of cross-device session of claiming user (if claimed) grants-response: type: object properties: results: type: array items: $ref: '#/components/schemas/grant-response' active-grants-response: type: array items: $ref: '#/components/schemas/grant-response' grant-response: type: object properties: grantId: type: string example: e196ad75-a6d0-471b-90b3-de3843dd7860 user_id: type: string example: e1812285-2f21-441e-8be4-b08835cd4b2c account_id: type: string example: 14515649-565f-4b1c-8346-eb98301c1d6b expiry_state: type: string enum: [ pending, active, expired ] entitlement_type: type: string enum: - bundle - entitlement - meter - credits description: An enum describing the type of the entitlement. entitlement_id: type: string example: b74df5c4-fded-492c-ad90-07646bded5db startTime: type: string example: '2022-06-01 00:00:00' endTime: type: string example: '2022-12-31 23:59:59' product_id: type: string example: 86abb44a-e6f2-4f9b-ac26-46ae0a13ed31 createdAt: type: string example: '2022-05-31 23:59:59' grant: type: object required: - entitlement_type - entitlement_id - product_id properties: grantId: type: string example: e196ad75-a6d0-471b-90b3-de3843dd7860 user_id: type: string example: e1812285-2f21-441e-8be4-b08835cd4b2c account_id: type: string example: 14515649-565f-4b1c-8346-eb98301c1d6b expiry_state: type: string enum: [ pending, active, expired ] entitlement_type: type: string enum: - bundle - entitlement - meter - credits description: An enum describing the type of the entitlement. entitlement_id: type: string example: b74df5c4-fded-492c-ad90-07646bded5db startTime: type: string example: '2022-06-01 00:00:00' endTime: type: string example: '2022-12-31 23:59:59' product_id: type: string example: 86abb44a-e6f2-4f9b-ac26-46ae0a13ed31 createdAt: type: string example: '2022-05-31 23:59:59' grant-creation-request: type: object properties: grantId: type: string example: 5700aae1-461d-47d7-9a4c-d84412da7053 entitlement_type: type: string enum: - bundle - entitlement - meter - credits description: An enum describing the type of the entitlement. entitlement_id: type: string example: cae85210-c942-490f-a24a-614033c51e49 user_id: type: string example: 16b26d63-4ee9-4955-9d8b-f6625300d040 expiry_state: type: string enum: - active - pending - expired description: Possible states of the grant. When the grant is meant to start in the future, it has the state of `pending`. startTime: type: string example: '2024-02-01 00:00:00' description: Date when grant starts. endTime: type: string example: '2024-03-01 23:59:59' description: Date when grant expires. When not present in the response, it means the grant is indefinite. product_id: type: string example: gold created_at: type: string example: '2024-03-01 00:00:00' description: Date when the grant was created in Zephr. access_model: type: object properties: meters: type: object additionalProperties: $ref: '#/components/schemas/access_model_meter' credits: type: object additionalProperties: $ref: '#/components/schemas/access_model_credit' delivered_entitlements: type: array items: $ref: '#/components/schemas/delivered_entitlement' granted_bundles: type: array items: type: string example: - e10a5ff3-fc63-47fb-af04-75c2ec3fdf1c jwt_bundles: type: array items: items: type: string example: [] user_state: type: string example: registered delivered_entitlement: type: object properties: id: type: string example: 0123456789ABCD direct: type: boolean example: true meteredBy: type: array items: type: string example: [] creditedBy: type: array items: type: string example: [] meters: type: object properties: results: type: array items: $ref: '#/components/schemas/meter' meter: type: object properties: label: type: string example: Test meter description: type: string example: This is a meter unit: type: string example: views limit: type: number example: 5 cycle: type: string example: calendar period: type: string example: monthly timezone: type: string example: '+0:00' auto_assign: type: string example: none access_model_meter: type: object properties: refreshTime: type: string example: '2024-06-01 00:00:00' meterSize: type: integer example: 5 remainingCredits: type: integer example: 5 contentIds: type: array items: type: string example: - 123456789ABCD contentIdTransform: type: string enum: - NONE - PREPEND_RANDOM - STRIP_PARAMS products: type: array items: $ref: '#/components/schemas/product' product-request: type: object required: - label - entitlement - mapping properties: label: type: string example: Gold Subscription description: >- The product label. This is the human-readable name of the product. description: type: string example: The most premium subscription. description: >- The product description. This is a human-readable description of the product. entitlement: $ref: '#/components/schemas/product.entitlement' mapping: $ref: '#/components/schemas/product.mapping' sharingLimit: type: number example: 5 description: >- The number of other users that the purchaser of this product can share the product with. product: type: object properties: tenantId: type: string example: company subTenantId: type: string example: company|demo id: type: string example: gold description: >- The product ID/slug. This is the unique identifier for the product within the tenant. label: type: string example: Gold Subscription description: >- The product label. This is the human-readable name of the product. description: type: string example: The most premium subscription. description: >- The product description. This is a human-readable description of the product. entitlement: $ref: '#/components/schemas/product.entitlement' mapping: $ref: '#/components/schemas/product.mapping' sharingLimit: type: number example: 5 description: >- The number of other users that the purchaser of this product can share the product with. product.entitlement: type: object properties: id: type: string example: gold-bundle description: Entitlement ID/slug. type: type: string example: bundle description: Entitlement type (always "bundle"). entitlementTenant: type: string example: company description: Entitlement tenant ID. product.mapping: type: object properties: braintree_recurring: type: object properties: plan_id: type: string example: gold description: >- The Braintree plan ID. This is the unique identifier for the plan within the Braintree account. archived: type: boolean example: true description: >- Whether the product is archived. If true, the product will not be available for purchase. braintree_one_off: type: object properties: price_points: type: array items: $ref: '#/components/schemas/product.mapping.price_point' stripe_recurring: type: object properties: stripe_plan_id: type: string example: gold description: >- The Stripe plan ID. This is the unique identifier for the plan within the Stripe account. stripe_one_off: type: object properties: price_points: type: array items: $ref: '#/components/schemas/product.mapping.price_point' rate_plans: type: array items: $ref: '#/components/schemas/product.mapping.rate_plan' jwt: $ref: "#/components/schemas/product.mapping.jwt" example: braintree_one_off: price_points: - id: ten label: Ten Dollars price: 10 product.mapping.price_point: type: object required: - id - label - price properties: id: type: string example: ten description: >- The unique identifier for the price point within the product. label: type: string example: Ten Dollars description: >- The human-readable name of the price point. price: type: number example: 10 description: >- The price of the product in the currency of the payment provider account. archived: type: boolean example: true description: >- Whether the price point is archived. If true, the price point will not be available for purchase. product.mapping.rate_plan: type: object required: - payment_provider - rate_plan_id - environment properties: payment_provider: type: string description: >- The payment provider for which the rate plan is configured. rate_plan_id: type: string description: >- The unique identifier for the rate plan within the payment provider account. archived: type: boolean description: >- Whether the rate plan is archived. If true, the rate plan will not be available for purchase. archive_label: type: string description: >- The human-readable name of the rate plan. environment: type: string example: LIVE description: >- The environment for which the rate plan is configured. product.mapping.jwt: type: object properties: privateClaimValue: type: "string" request_rules_container_object: type: object properties: results: type: array items: $ref: '#/components/schemas/request_rules_object' request_rules_object: type: object properties: label: type: string example: Test description: type: string example: This rule tests for authenticated users priority: type: integer example: 1 version: type: number example: 1 last_updated: type: string example: '2011-11-11T11:11:11.000' conditions: $ref: '#/components/schemas/request_rules_conditions' lastUpdatedAt: type: string example: 2022-06-01 00:00:00 requirements_script: type: string example: return [] action_script: type: string example: return "this is a test" script_type: type: string example: javascript graph_state: type: string example: '{"property1": "value1"}' editing_mode: type: string example: manual request_rules_conditions: type: object properties: url_pattern: type: string example: ^/forum method: type: string example: GET session: type: object properties: tenantId: type: string example: company subTenantId: type: string example: company|demo supplied: type: boolean example: false expiryDate: type: string example: 2025-02-08 14:29 PM UTC startDate: type: string example: 2024-02-08 14:29 PM UTC authenticated: type: boolean example: true state: type: string enum: - anonymous - recognised - partially_registered - authenticated example: authenticated device: type: string example: pc browser: type: string example: Chrome os: type: string example: Mac OSX city: type: string example: London geoState: type: string example: London deviceName: type: string example: Apple Macintosh country: type: string description: ISO-3166-2 country code example: GB session_id: type: string example: 26a73b7a-f7d0-48d8-85dd-a04b07313895 user_id: type: string example: UU0123456789ABCD session-lookup: type: object properties: tenantId: type: string example: company subTenantId: type: string example: company|demo authenticated: type: boolean example: true v: type: integer description: version example: 0 session_variables: $ref: '#/components/schemas/session_variables' user_id: type: string example: UU0123456789ABCD sessions: $ref: '#/components/schemas/sessions' access_model: $ref: '#/components/schemas/access_model' last_updated: type: integer description: >- A timestamp indicating the last update of the session, measured in milliseconds since the epoch. example: 1707230240685 test_groups: type: object additionalProperties: type: string second_party_data: type: object additionalProperties: type: string session_variables: type: object properties: {} static_items: type: object properties: results: type: array items: $ref: '#/components/schemas/static_item' static_item: type: object properties: id: type: string example: 123456789ABCD static_single_item: type: object properties: id: type: string example: 123456789ABCD item: type: string example: {} oauth2-token-refresh-response: type: object properties: scope: type: string example: user.account:read user.profile:read user.profile:update description: >- The scope of the access request. Supported scopes: user.account:read, user.profile:read and user.profile:update access_token: type: string example: oa_nj1dfhecrs1jwxi0wd0xk49n description: >- The access token that can be used to obtain account and profile information token_type: type: string example: bearer description: >- Token type to be used in the Authorization header when requesting the resource's owner information expires_in: type: number example: 3600 description: The lifetime in seconds of the access token user_id: type: string example: '1234567890' description: Zephr user identifier oauth2-token-exchange-response: type: object properties: scope: type: string example: user.account:read user.profile:read user.profile:update description: >- The scope of the access request. Supported scopes: user.account:read, user.profile:read and user.profile:update access_token: type: string example: oa_nj1dfhecrs1jwxi0wd0xk49n description: >- The access token that can be used to obtain account and profile information token_type: type: string example: bearer description: >- Token type to be used in the Authorization header when requesting the resource's owner information expires_in: type: number example: 3600 description: The lifetime in seconds of the access token refresh_token: type: string example: 6kuabo4gug8t9h13x7gt43cm user_id: type: string example: '1234567890' description: Zephr user identifier pagination-link: type: object properties: url: type: string description: The link's url example: https://example.com?rpp=10 page: type: number description: The page number the link is pointing to example: 1 user-export-paginated-response: type: object properties: results: type: array items: $ref: '#/components/schemas/user-export-response-items' meta: type: object properties: count: type: number example: 100 rpp: type: number example: 20 paginated: type: boolean example: true links: type: object properties: first: $ref: '#/components/schemas/pagination-link' last: $ref: '#/components/schemas/pagination-link' previous: $ref: '#/components/schemas/pagination-link' next: $ref: '#/components/schemas/pagination-link' user-export-response-items: type: array items: $ref: '#/components/schemas/user-export-response-item' user-export-response-item: type: object required: - user properties: seq-no: type: number example: 1 user: $ref: '#/components/schemas/user-export-user' # TODO extended-profile: grants: $ref: '#/components/schemas/grants-response' user-export-user: type: object required: - identifiers properties: identifiers: $ref: '#/components/schemas/identifiers' attributes: $ref: '#/components/schemas/attributes' user-creation: type: object properties: validators: $ref: '#/components/schemas/legacy-validators' identifiers: $ref: '#/components/schemas/identifiers' attributes: $ref: '#/components/schemas/attributes' accountMembershipCode: type: string email_verified: type: boolean last_login: type: string tracking_id: type: string registered: type: string registration_state: type: object properties: partial: type: string complete: type: string contact: type: string registration_tenant: type: string session_limit: type: integer foreign_keys: type: array items: type: object product_sharing_id: type: string created_at: type: string required: - identifiers example: user_id: 123456789ABCD identifiers: email_address: joe.blow@company.com attributes: first_name: Joe surname: Blow email_verified: true legacy-validators: type: object properties: password: type: string legacy_password: type: string description: >- Legacy Passowrd is used only if the tenant has Login extension active. More information can be found here https://knowledgecenter.zuora.com/Zephr/Settings/Extensions/Login_Extension description: >- Validators are not required for user creation, users created without validators won't be able to sign into Zephr unless they follow a password reset flow, or being mapped as shadow users identified by a JWT. attribute_search_filter: type: object description: An array of these filters can be specified to perform a search by various attributes. properties: slug: type: string description: The user attribute slug example: subscriber-id operator: type: string enum: - is - is_not - contains - does_not_contain - starts_with - ends_with - has_any_value - is_unknown - checked - unchecked description: The operation to apply to search filters for fields that are not of type Number, Range, or Date. example: is value: type: object description: The value assigned to the user attribute. Supported types include string, boolean, integer, and double. example: "123456" from: type: object description: Used with Number, Range, or Date fields to specify the starting value of the search range. example: "2025-01-01" to: type: object description: Used with Number, Range, or Date fields to specify the ending value of the search range. example: "2025-06-01" search_by_attributes: type: array items: $ref: '#/components/schemas/attribute_search_filter' validators: type: object properties: password: type: string identifiers: type: object properties: email_address: type: string example: joe.blow@company.com attributes: type: object properties: first_name: type: string example: Joe surname: type: string example: Blow schema-field: type: object properties: slug: type: string example: slug1 visibility: type: string enum: - PUBLIC example: PUBLIC context: type: string example: slug1 label: type: string example: Test internal-description: type: string example: This is for testing public-description: type: string example: Please provide some info required: type: boolean validation-expression: type: string example: test input-type: type: string example: text enum: - text - color - number - range - time - datetime - date - week - month - email - tel - url - password - select - checkbox - radio - textarea - hidden select-options: type: string example: 'null' range-start: type: number range-end: type: number example: 100 range-step: type: number example: 5 decision-point: type: boolean publicly-writable: type: boolean form-use: type: boolean unit: type: string example: unit unit-position: type: string enum: - leading - trailing value-precision: type: number stat-direction: type: string enum: - ascending - descending schemas: type: array items: $ref: '#/components/schemas/schema-field' schema-field-deletion-response: type: object properties: message: type: string example: Field removed from schema successfully schema-field-creation-response: type: object properties: message: type: string example: Field added to user schema successfully uri: type: string example: http://host/v3/schema/users/slug user-response: type: object properties: user_id: type: string example: 123456789ABCD identifiers: $ref: '#/components/schemas/identifiers' attributes: $ref: '#/components/schemas/attributes' email_verified: type: boolean example: true users-response: type: object properties: results: type: array items: $ref: '#/components/schemas/user-response' sessions: type: array items: $ref: '#/components/schemas/session' webhook-response: type: object properties: webhook_id: type: string example: 01234567890ABCD webhook-request: type: object properties: label: type: string example: Test webhook triggers: type: array items: {} method: type: string example: POST target: type: string example: http://localhost:9999 webhooks-responses: type: object properties: webhook-response: $ref: '#/components/schemas/webhook-response' webhook-request: $ref: '#/components/schemas/webhook-request' webhook-responses-container: type: object properties: results: type: array items: $ref: '#/components/schemas/webhooks-responses' Create_AccountBody: type: object properties: company_id: type: string name: type: string number_of_seats: type: number allow_oversubscription: type: boolean notify_when_account_oversubscribed: type: boolean notify_on_each_registration_when_account_is_oversubscribed: type: boolean registration_code: type: string on_premises_ips: type: string description: >- A list of newline-separated IP addresses or CIDR blocks that identify the premises associated with this account. premises_tags: type: string description: >- (string) A JSON array of strings of 'tags'. Tags can be used to identify and group accounts to drive behaviour in the Zephr decision engine. session_limit: type: number description: >- The maximum number of concurrent sessions that users of this account can have. If unspecified, the system default value is used. If a user belongs to multiple accounts, the highest limit is used. session_limit_behaviour: type: string description: >- One of "PREVENT_LOGIN" or "DELETE_OLDEST_SESSIONS". Specifies the behaviour when a user of this account exceeds the configured limit of concurrent sessions. example: company_id: 123456789ABCD name: Account name number_of_seats: 5 allow_oversubscription: true notify_when_account_oversubscribed: true notify_on_each_registration_when_account_is_oversubscribed: true registration_code: Registration code on_premises_ips: 125.124.143.24 premises_tags: '["gold-tier", "university"]' session_limit: 10 session_limit_behaviour: PREVENT_LOGIN response_simple_accountbody: type: object properties: tenant_id: type: string example: "my-tenant" account_id: type: string example: 10549fef-cddb-4b1f-92e4-27ab7cb2e555 name: type: string example: "My Company" number_of_seats: type: number example: 7 email_address: type: string example: "company@email.com" response_accountbody: type: object properties: company_id: type: string name: type: string number_of_seats: type: number allow_oversubscription: type: boolean notify_when_account_oversubscribed: type: boolean notify_on_each_registration_when_account_is_oversubscribed: type: boolean registration_code: type: string ip_addresses: type: string registration_domains: type: string email_address: type: string on_premises_ips: type: string description: >- A list of newline-separated IP addresses or CIDR blocks that identify the premises associated with this account. premises_tags: type: string description: >- (string) A JSON array of strings of 'tags'. Tags can be used to identify and group accounts to drive behaviour in the Zephr decision engine. session_limit: type: number description: >- The maximum number of concurrent sessions that users of this account can have. If unspecified, the system default value is used. If a user belongs to multiple accounts, the highest limit is used. session_limit_behaviour: type: string description: >- One of "PREVENT_LOGIN" or "DELETE_OLDEST_SESSIONS". Specifies the behaviour when a user of this account exceeds the configured limit of concurrent sessions. branding: type: object properties: logoUrl: type: string urlPath: type: string pageIds: type: array items: type: string openIdConfig: type: object account_bodies: type: object description: A container object holding an array of full account objects. properties: results: type: array description: A list of account objects. items: $ref: '#/components/schemas/response_accountbody' simple_account_bodies: type: object properties: results: type: array items: $ref: '#/components/schemas/response_simple_accountbody' total: type: number example: 30 description: >- The total number of items out of which only a subset was returned in the paginated results. User_Segments_Response: type: object properties: items: type: array items: $ref: '#/components/schemas/User_Segment_Response' User_Segment_Response: type: object properties: id: type: string description: The User Segment id. label: type: string description: The User Segment label. description: type: string description: The User Segment description. active: description: The User Segment active status. type: boolean archived: type: boolean description: The User Segment archive status. Bulk_User_Update_Response: type: object properties: message: type: string description: Returned message indicating the status of the operation. job_id: type: string description: Id of the job. Get_Bulk_User_Update_Job_Response: type: object properties: jobId: type: string status: type: string jobDate: type: string succeeded: type: number errors: type: number total: type: number details: type: object description: | Lists details of each update job, including Id or foreign key, job status, and returned message. Get_Bulk_User_Update_Jobs_Item: type: object properties: jobId: type: string status: type: string jobDate: type: string succeeded: type: number errors: type: number total: type: number Get_Bulk_User_Update_Jobs_Response: type: array items: $ref: '#/components/schemas/Get_Bulk_User_Update_Jobs_Item' bulk_update_object: type: object properties: identifier: type: object description: | Identifier of the user. User either the User ID or Foreign Key. properties: user_id: type: string description: | Unique Id of the user. foreign_key: type: object description: Foreign key object. properties: foreign-system: type: string description: | The foreign key of the user. actions: type: array description: | The actions to be taken for the user. Available actions are attribute update and user deletion. items: $ref: "#/components/schemas/bulk_update_object_action_object" bulk_update_object_action_object: type: object properties: type: type: string description: | The user update action to be taken. enum: - delete-user - set-attribute attribute: type: object description: | Details of the attribute update. properties: field: type: string description: | The slug of the attribute. value: type: string description: | The updated value of the attribute. required: - field - value promo-code-redemption-result: type: object properties: promoCode: type: string description: The promo code of the redemption result. success: type: boolean description: Displays whether the promo code was successfully redeemed. errorMessage: type: string nullable: true description: The reason for redemption failure, if unsuccessful. add-bulk-account-users-by-domains: type: object properties: tenantId: type: string example: test_account_users subTenantId: type: string example: test_account_users user_id: type: string example: 0123456789ABCD account_id: type: string example: 0123456789ABCD user_type: type: string example: user user_email: type: string example: joe$RAND+2@yahoo.com requestBodies: Create_Admin_RoleBody: content: application/json: schema: type: object properties: email: type: string role: type: string required: - email - role example: email: admin@company.com role: role... Create_BundleBody: content: application/json: schema: type: object properties: label: type: string description: type: string includes: type: object properties: entitlements: {} meters: {} credits: {} bundles: {} auto_assign: type: string example: label: Test bundle description: This is a bundle includes: entitlements: [] meters: [] credits: [] bundles: [] auto_assign: none Create_Cache_ConfigurationBody: content: application/json: schema: type: object properties: label: type: string conditions: type: object properties: url_pattern: type: string header_patterns: type: object properties: Content-Type: type: string cache: type: object properties: origin: type: boolean decision_points: type: boolean example: label: Test conditions: url_pattern: ^/forum header_patterns: Content-Type: ^text/html cache: origin: false decision_points: false Create_CompanyBody: content: application/json: schema: type: object properties: name: type: string description: type: string website: type: string contact: type: string account_manager: type: string example: name: Company name description: Company description website: company.com contact: Company contact account_manager: Company account manager Create_CompanyBody_v4: content: application/json: schema: type: object properties: name: type: string description: The name of the company description: type: string description: The description of the company website: type: string description: The website of the company contact: type: string description: Contact information of the company account_manager: type: string description: The name of the company account manager required: - name example: name: Company name description: Company description website: https://company.com contact: company@email.com account_manager: Joe Blow Create_CreditBody: content: application/json: schema: type: object properties: label: type: string description: type: string delivers: type: array items: {} unit: type: string quantity: type: number auto_assign: type: string example: label: Test credit description: This is an credit delivers: - ENTITLEMENT_ID unit: views quantity: 5 auto_assign: none Create_EntitlementBody: content: application/json: schema: type: object properties: label: type: string description: type: string auto_assign: type: string example: label: Test entitlement description: This is an entitlement auto_assign: none Create_GrantBody: content: application/json: schema: type: object properties: entitlement_type: type: string enum: - bundle - entitlement - meter - credits description: An enum describing the type of the entitlement. entitlement_id: type: string example: b3d8007e-6729-4faf-b7a9-46b6900eabd4 startTime: type: string example: '2022-06-01 00:00:00' endTime: type: string example: '2022-12-31 23:59:59' product_id: type: string example: fffd4076-d0cd-45a4-89f3-56ae8aea31f0 required: - entitlement_type - entitlement_id - product_id example: entitlement_type: bundle entitlement_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX startTime: '2022-06-01 00:00:00' endTime: '2022-12-31 23:59:59' product_id: XXXXXXXXXXXXXX Create_MeterBody: content: application/json: schema: type: object properties: label: type: string description: type: string unit: type: string limit: type: number cycle: type: string period: type: string timezone: type: string auto_assign: type: string example: label: Test meter description: This is a meter unit: views limit: 5 cycle: calendar period: monthly timezone: '+0:00' auto_assign: none Update_User_attributesBody: content: application/json: schema: type: object properties: first_name: type: string surname: type: string example: first_name: Joe surname: Blow Create_User_Segment_Body: content: application/json: schema: type: object properties: label: type: string description: The User Segment name. description: type: string description: The User Segment description. required: - label Bulk_User_Update_Request: content: application/json: example: { "updates": [ { "identifier": { "user_id": "string" }, "actions": [ { "type": "set-attribute", "attribute": { "field": "string", "value": "string" } } ] }, { "identifier": { "foreign_key": { "foreign-system": "string" } }, "actions": [ { "type": "delete-user" } ] } ] } schema: type: object properties: updates: type: array description: | Array of combination of identifier and actions. items: $ref: "#/components/schemas/bulk_update_object"