openapi: 3.1.0 info: title: Optimizely Campaign REST Assets Pages API description: The Optimizely Campaign REST API provides programmatic access to Optimizely's email and omnichannel campaign management capabilities. Developers can use the API to manage campaigns, recipients, mailing lists, smart campaigns, transactional mails, and messaging workflows. The API is hosted at api.campaign.episerver.net and supports automation of marketing campaign operations, enabling integration with external systems and custom marketing workflows. The base URL includes the client ID for multi-tenant access. version: '1.0' contact: name: Optimizely Support url: https://support.optimizely.com termsOfService: https://www.optimizely.com/legal/terms/ servers: - url: https://api.campaign.episerver.net/rest description: Optimizely Campaign Production Server security: - basicAuth: [] tags: - name: Pages description: Manage page definitions that specify which URLs or conditions trigger experiments. paths: /pages: get: operationId: listPages summary: List pages description: Returns a list of pages for the specified project. Pages define URL targeting conditions for experiments. tags: - Pages parameters: - $ref: '#/components/parameters/projectIdQuery' - $ref: '#/components/parameters/perPage' - $ref: '#/components/parameters/page' responses: '200': description: Successfully retrieved the list of pages content: application/json: schema: type: array items: $ref: '#/components/schemas/Page' '401': description: Authentication credentials are missing or invalid post: operationId: createPage summary: Create a page description: Creates a new page definition within the specified project. tags: - Pages requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PageInput' responses: '201': description: Page successfully created content: application/json: schema: $ref: '#/components/schemas/Page' '400': description: Invalid request body '401': description: Authentication credentials are missing or invalid /pages/{page_id}: get: operationId: getPage summary: Get a page description: Retrieves the full details of a specific page by its identifier. tags: - Pages parameters: - $ref: '#/components/parameters/pageId' responses: '200': description: Successfully retrieved the page content: application/json: schema: $ref: '#/components/schemas/Page' '401': description: Authentication credentials are missing or invalid '404': description: Page not found patch: operationId: updatePage summary: Update a page description: Updates the specified page with the provided fields. tags: - Pages parameters: - $ref: '#/components/parameters/pageId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PageInput' responses: '200': description: Page successfully updated content: application/json: schema: $ref: '#/components/schemas/Page' '400': description: Invalid request body '401': description: Authentication credentials are missing or invalid '404': description: Page not found delete: operationId: deletePage summary: Delete a page description: Permanently deletes the specified page. tags: - Pages parameters: - $ref: '#/components/parameters/pageId' responses: '204': description: Page successfully deleted '401': description: Authentication credentials are missing or invalid '404': description: Page not found components: schemas: PageInput: type: object description: Input for creating or updating a page properties: project_id: type: integer format: int64 description: The project this page belongs to name: type: string description: Human-readable name of the page edit_url: type: string format: uri description: URL used in the visual editor for this page conditions: type: string description: JSON-encoded URL targeting conditions activation_type: type: string description: How the page is activated enum: - immediate - polling - callback - manual - dom_changed - url_changed Page: type: object description: A page definition that specifies URL targeting conditions properties: id: type: integer format: int64 description: Unique identifier for the page project_id: type: integer format: int64 description: The project this page belongs to name: type: string description: Human-readable name of the page edit_url: type: string format: uri description: URL used in the visual editor for this page conditions: type: string description: JSON-encoded URL targeting conditions activation_type: type: string description: How the page is activated enum: - immediate - polling - callback - manual - dom_changed - url_changed created: type: string format: date-time description: Timestamp when the page was created last_modified: type: string format: date-time description: Timestamp when the page was last modified parameters: perPage: name: per_page in: query required: false description: Number of results per page schema: type: integer default: 25 minimum: 1 maximum: 100 pageId: name: page_id in: path required: true description: The unique identifier for the page schema: type: integer format: int64 projectIdQuery: name: project_id in: query required: true description: The unique identifier for the project to filter by schema: type: integer format: int64 page: name: page in: query required: false description: Page number for pagination schema: type: integer default: 1 minimum: 1 securitySchemes: basicAuth: type: http scheme: basic description: HTTP Basic authentication using the Optimizely Campaign API credentials. externalDocs: description: Optimizely Campaign REST API Documentation url: https://docs.developers.optimizely.com/optimizely-campaign/docs/rest-api