The Co-operative Bank Experiment API

The Experiment API from The Co-operative Bank — 15 operation(s) for experiment.

Operations 18

POST /api/v1/experiments/{experimentId}/variants Add variant #
PUT /api/v1/experiments/{experimentId}/_archive Archive #
POST /api/v1/experiments/scheduled/{experimentId}/_cancel Cancel #
GET /api/v1/experiments List #
POST /api/v1/experiments Create 2 #
DELETE /api/v1/experiments/{experimentId} Delete 6 #
PATCH /api/v1/experiments/{experimentId} Update 2 #
DELETE /api/v1/experiments/{experimentId}/goals/primary Delete goal #
DELETE /api/v1/experiments/{experimentId}/targetingConditions/{id} Delete targeting condition #
PUT /api/v1/experiments/{experimentId}/variants/{name} Update variant #
DELETE /api/v1/experiments/{experimentId}/variants/{name} Delete variant #
POST /api/v1/experiments/{experimentId}/_end End #
GET /api/v1/experiments/{id} Get 3 #
GET /api/v1/experiments/{id}/results Get result #
GET /api/v1/experiments/health Healthcheck #
POST /api/v1/experiments/isUserIncluded Is user included #
PUT /api/v1/experiments/{experimentId}/variants/{name}/_promote Promote variant #
POST /api/v1/experiments/{experimentId}/_start Start #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/co-operative-bank:co-operative-bank-experiment-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

co-operative-bank-experiment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Experiment API
  version: '3'
servers:
- url: /
  description: dotCMS Server
tags:
- name: Experiment
paths:
  /api/v1/experiments/{experimentId}/variants:
    post:
      tags:
      - Experiment
      operationId: addVariant
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddVariantForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Add variant
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/_archive:
    put:
      tags:
      - Experiment
      operationId: archive
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentView'
      summary: Archive
      x-summary-source: derived
  /api/v1/experiments/scheduled/{experimentId}/_cancel:
    post:
      tags:
      - Experiment
      operationId: cancel
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Cancel
      x-summary-source: derived
  /api/v1/experiments:
    get:
      tags:
      - Experiment
      operationId: list
      parameters:
      - name: pageId
        in: query
        schema:
          type: string
      - name: name
        in: query
        schema:
          type: string
      - name: status
        in: query
        schema:
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
            - RUNNING
            - SCHEDULED
            - ENDED
            - DRAFT
            - ARCHIVED
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentView'
      summary: List
      x-summary-source: derived
    post:
      tags:
      - Experiment
      operationId: create_2
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/ExperimentForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Create 2
      x-summary-source: derived
  /api/v1/experiments/{experimentId}:
    delete:
      tags:
      - Experiment
      operationId: delete_6
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewString'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewString'
      summary: Delete 6
      x-summary-source: derived
    patch:
      tags:
      - Experiment
      operationId: update_2
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/ExperimentForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Update 2
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/goals/primary:
    delete:
      tags:
      - Experiment
      operationId: deleteGoal
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Delete goal
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/targetingConditions/{id}:
    delete:
      tags:
      - Experiment
      operationId: deleteTargetingCondition
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Delete targeting condition
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/variants/{name}:
    put:
      tags:
      - Experiment
      operationId: updateVariant
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperimentVariantForm'
          application/javascript:
            schema:
              $ref: '#/components/schemas/ExperimentVariantForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Update variant
      x-summary-source: derived
    delete:
      tags:
      - Experiment
      operationId: deleteVariant
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Delete variant
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/_end:
    post:
      tags:
      - Experiment
      operationId: end
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: End
      x-summary-source: derived
  /api/v1/experiments/{id}:
    get:
      tags:
      - Experiment
      operationId: get_3
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Get 3
      x-summary-source: derived
  /api/v1/experiments/{id}/results:
    get:
      tags:
      - Experiment
      operationId: getResult
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentResults'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentResults'
      summary: Get result
      x-summary-source: derived
  /api/v1/experiments/health:
    get:
      tags:
      - Experiment
      operationId: healthcheck
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewMapStringHealth'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewMapStringHealth'
      summary: Healthcheck
      x-summary-source: derived
  /api/v1/experiments/isUserIncluded:
    post:
      tags:
      - Experiment
      operationId: isUserIncluded
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExcludedExperimentListForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityExperimentSelectedView'
      summary: Is user included
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/variants/{name}/_promote:
    put:
      tags:
      - Experiment
      operationId: promoteVariant
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      - name: name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperimentVariantForm'
          application/javascript:
            schema:
              $ref: '#/components/schemas/ExperimentVariantForm'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Promote variant
      x-summary-source: derived
  /api/v1/experiments/{experimentId}/_start:
    post:
      tags:
      - Experiment
      operationId: start
      parameters:
      - name: experimentId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntitySingleExperimentView'
      summary: Start
      x-summary-source: derived
components:
  schemas:
    ExperimentVariant:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        weight:
          type: number
          format: float
        url:
          type: string
        promoted:
          type: boolean
    ExperimentView:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        id:
          type: string
        status:
          type: string
          enum:
          - RUNNING
          - SCHEDULED
          - ENDED
          - DRAFT
          - ARCHIVED
        trafficProportion:
          $ref: '#/components/schemas/TrafficProportion'
        scheduling:
          $ref: '#/components/schemas/Scheduling'
        trafficAllocation:
          type: number
          format: float
        creationDate:
          type: string
          format: date-time
        modDate:
          type: string
          format: date-time
        pageId:
          type: string
        createdBy:
          type: string
        lastModifiedBy:
          type: string
        goals:
          $ref: '#/components/schemas/Goals'
        targetingConditions:
          type: array
          items:
            $ref: '#/components/schemas/TargetingCondition'
        lookBackWindowExpireTime:
          type: integer
          format: int64
        runningIds:
          $ref: '#/components/schemas/RunningIds'
        createdByUserName:
          type: string
          description: Display name of the user who created the experiment. Reports "System" for the system user and "unknown" when the user cannot be resolved or has no name set, so the value is never empty.
          example: Admin User
    SelectedExperiment:
      type: object
      properties:
        name:
          type: string
        id:
          type: string
        runningId:
          type: string
        pageUrl:
          type: string
        variant:
          $ref: '#/components/schemas/SelectedVariant'
        lookBackWindow:
          $ref: '#/components/schemas/LookBackWindow'
        regexs:
          type: object
          additionalProperties:
            type: string
    SampleData:
      type: object
      properties:
        x:
          type: number
          format: double
        y:
          type: number
          format: double
    ResponseEntityExperimentView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: array
          items:
            $ref: '#/components/schemas/ExperimentView'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    TrafficProportion:
      type: object
      properties:
        type:
          type: string
          enum:
          - SPLIT_EVENLY
          - CUSTOM_PERCENTAGES
        variants:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/ExperimentVariant'
    ExperimentResults:
      type: object
      properties:
        sessions:
          $ref: '#/components/schemas/TotalSession'
        goals:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/GoalResults'
        bayesianResult:
          $ref: '#/components/schemas/BayesianResult'
    ResponseEntityViewMapStringHealth:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: object
          additionalProperties:
            type: string
            enum:
            - OK
            - NOT_CONFIGURED
            - CONFIGURATION_ERROR
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    CredibilityInterval:
      type: object
      properties:
        lower:
          type: number
          format: double
        upper:
          type: number
          format: double
    ExperimentVariantForm:
      type: object
      properties:
        description:
          type: string
    ErrorEntity:
      type: object
      properties:
        errorCode:
          type: string
        message:
          type: string
        fieldName:
          type: string
    Pagination:
      type: object
      properties:
        currentPage:
          type: integer
          format: int32
        perPage:
          type: integer
          format: int32
        totalEntries:
          type: integer
          format: int64
    TotalSession:
      type: object
      properties:
        total:
          type: integer
          format: int64
        variants:
          type: object
          additionalProperties:
            type: integer
            format: int64
    SampleGroup:
      type: object
      properties:
        samples:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/SampleData'
    UniqueBySessionResume:
      type: object
      properties:
        count:
          type: integer
          format: int64
        conversionRate:
          type: number
          format: float
    ResponseEntitySingleExperimentView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/ExperimentView'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    SelectedVariant:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
    VariantResults:
      type: object
      properties:
        weight:
          type: number
          format: float
        variantName:
          type: string
        variantDescription:
          type: string
        uniqueBySession:
          $ref: '#/components/schemas/UniqueBySessionResume'
        details:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ResultResumeItem'
    Scheduling:
      type: object
      properties:
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
    VariantResult:
      type: object
      properties:
        variant:
          type: string
        conversionRate:
          type: number
          format: double
        probability:
          type: number
          format: double
        expectedLoss:
          type: number
          format: double
        risk:
          type: number
          format: double
        medianGrowth:
          type: number
          format: double
        credibilityInterval:
          $ref: '#/components/schemas/CredibilityInterval'
        isControl:
          type: boolean
    Goals:
      type: object
      properties:
        primary:
          $ref: '#/components/schemas/Goal'
    ResponseEntityViewString:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: string
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    ExcludedExperimentListForm:
      type: object
      properties:
        exclude:
          type: array
          items:
            type: string
    GoalResults:
      type: object
      properties:
        goal:
          $ref: '#/components/schemas/Goal'
        variants:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/VariantResults'
    BayesianResult:
      type: object
      properties:
        value:
          type: number
          format: double
        results:
          type: array
          properties:
            empty:
              type: boolean
            first:
              $ref: '#/components/schemas/VariantResult'
            last:
              $ref: '#/components/schemas/VariantResult'
          items:
            $ref: '#/components/schemas/VariantResult'
        distributionPdfs:
          $ref: '#/components/schemas/SampleGroup'
        differenceData:
          $ref: '#/components/schemas/DifferenceData'
        quantiles:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            $ref: '#/components/schemas/QuantilePair'
        suggestedWinner:
          type: string
    Goal:
      type: object
      properties:
        metric:
          $ref: '#/components/schemas/Metric'
        type:
          type: string
          writeOnly: true
          enum:
          - MINIMIZE
          - MAXIMIZE
    AddVariantForm:
      type: object
      properties:
        description:
          type: string
    ResultResumeItem:
      type: object
      properties:
        uniqueBySession:
          type: integer
          format: int64
        totalSessions:
          type: integer
          format: int64
        conversionRate:
          type: number
          format: float
    MessageEntity:
      type: object
      properties:
        message:
          type: string
    QuantilePair:
      type: object
      properties:
        quantile:
          type: number
          format: double
        formatted:
          type: number
          format: double
    ExperimentForm:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        pageId:
          type: string
        trafficAllocation:
          type: number
          format: float
        trafficProportion:
          $ref: '#/components/schemas/TrafficProportion'
        scheduling:
          $ref: '#/components/schemas/Scheduling'
        goals:
          $ref: '#/components/schemas/Goals'
        targetingConditions:
          type: array
          items:
            $ref: '#/components/schemas/TargetingCondition'
        lookbackWindow:
          type: integer
          format: int32
    Metric:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        category:
          type: string
          enum:
          - DIFFERENTIATING_FEATURES
          - PAID_FEATURES
          - PLATFORM_SPECIFIC_CUSTOMIZATION
          - SOPHISTICATED_CONTENT_ARCHITECTURE
          - POSITIVE_USER_EXPERIENCE
          - PLATFORM_SPECIFIC_DEVELOPMENT
          - RECENT_ACTIVITY
          - HISTORY_LEGACY_DEPRECATED_FEATURES
        feature:
          type: string
          enum:
          - CONTENTLETS
          - LANGUAGES
          - CONTENT_TYPES
          - SITES
          - URL_MAPS
          - WORKFLOW
          - USERS
          - SITE_SEARCH
          - IMAGE_API
          - LAYOUT
          - CONTENT_TYPE_FIELDS
          - AI
          - EXPERIMENTS
    LookBackWindow:
      type: object
      properties:
        value:
          type: string
        expireMillis:
          type: integer
          format: int64
    ResponseEntityExperimentResults:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/ExperimentResults'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    SelectedExperiments:
      type: object
      properties:
        experiments:
          type: array
          items:
            $ref: '#/components/schemas/SelectedExperiment'
        includedExperimentIds:
          type: array
          items:
            type: string
        excludedExperimentIds:
          type: array
          items:
            type: string
        excludedExperimentIdsEnded:
          type: array
          items:
            type: string
    RunningIds:
      type: object
      properties:
        ids:
          type: array
          items:
            $ref: '#/components/schemas/RunningId'
    ResponseEntityExperimentSelectedView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/SelectedExperiments'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    DifferenceData:
      type: object
      properties:
        controlData:
          type: array
          items:
            type: number
            format: double
        testData:
          type: array
          items:
            type: number
            format: double
        differences:
          type: array
          items:
            type: number
            format: double
        relativeDifference:
          type: number
          format: double
    RunningId:
      type: object
      properties:
        id:
          type: string
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
    TargetingCondition:
      type: object
      properties:
        id:
          type: string
        conditionKey:
          type: string
        values:
          type: object
          properties:
            empty:
              type: boolean
          additionalProperties:
            type: string
        operator:
          type: string
          enum:
          - AND
          - OR
x-provenance:
  method: harvested
  publisher: The Co-operative Bank
  source: https://www.developer.co-operativebank.co.uk/api/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)