Monetate Schema API

Schema related endpoints.

Operations 6

GET /schema/ Get Active Schema
POST /schema/ Create a New Schema
GET /schema/{schema-name}/ Get Schema Details
PATCH /schema/{schema-name}/ Update an Existing Schema
GET /schematype/ List Schema Types
GET /schematype/{schema-type}/ Get Schema Type Details

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/monetate-schema-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 email required.

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

OpenAPI Specification

monetate-schema-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Monetate Data Schema API
  description: The Monetate Data API allows you to create and send data across any channel in real time. This data is leveraged by Monetate's real-time decisioning engine to deliver 1:1 experiences across any channel.
  version: v1
servers:
- url: https://api.monetate.net/api/data/v1/{retailerShortname}/production
security:
- Token Authentication: []
tags:
- name: Schema
  description: Schema related endpoints.
paths:
  /schema/:
    get:
      tags:
      - Schema
      summary: Get Active Schema
      description: Returns a list of active Schema used by Monetate for experience decisioning.
      parameters:
      - name: row_count
        in: query
        description: Adds a field called `row_count` which is an Integer that is the number of available rows for targeting (there may be an hour delay between uploading data and this value updating)
        schema:
          type: boolean
      - name: latest_upload
        in: query
        description: "Adds a field called `last_file_upload` with the format:\n```\n\"last_file_upload\": {\n    \"status\": \"COMPLETE\",\n    \"upload_time\": \"2016-03-24T10:56:52.000000Z\",\n    \"import_start_time\": \"2017-04-04T18:05:34.000000Z\",\n    \"import_end_time\": \"2017-04-04T18:05:35.000000Z\",\n    \"validation_error\": \"\"\n}\n```"
        schema:
          type: boolean
      - name: usable_in_accounts
        in: query
        description: "Adds a field called `usable_in_accounts` which is an object describing the accounts where the dataset can be used for targeting.\n```\n\"usable_in_accounts\": [\n  {\n      \"name\": \"a-b6206def\",\n      \"instance\": \"p\",\n      \"domain\": \"fifthlevelfashion.com\"\n  },\n  {\n      \"name\": \"a-b6206def\",\n      \"instance\": \"p\",\n      \"domain\": \"fifthlevelfashion.us\"\n  }\n]\n```"
        schema:
          type: boolean
      responses:
        '200':
          description: A list of Schema definitions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaListResponse'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
    post:
      tags:
      - Schema
      summary: Create a New Schema
      description: "To send data to Monetate, you must first create a new Schema.\n\n### Schema types\n\nThe API currently accepts the following types of data:\n\n* **Event**: Any data that contains a timestamp for the purposes of understanding when the specific events or interactions occurred in a time series.\n    * **type**: `event`\n    * **Required fields**: `identifier`, `event_time`\n* **Entity**: Any non-time series data\n    * **type**: `attribute`\n    * **Required fields**: `identifier`\n* **Product**: Product catalog data\n    * **type**: `product`\n\n### Fields\n\nA Schema consists of a set of fields defining its structure. You can include up to 40 fields in each Schema.\n\n#### Field Data Types\n\nThe API supports the following field data types:\n\n* `STRING`: Non-empty text without leading or trailing whitespace.\n* `MULTI_STRING`: Comma-separated string. As `STRING`, but allows multiple values separated by commas. See [Product Catalog Specification: Comma Escaping](https://docs.monetate.com/docs/product-catalog-specification#comma-escaping) regarding the necessary escaping rules.\n* `NUMBER`: An integer or decimal number.\n* `DATETIME`: A timestamp conforming to the ISO-8601 standard.\n* `BOOLEAN`: A true or false value.\n\n#### Field Attributes\n\nThe API allows attributes to be set on certain fields:\n\n* `data_type`: String attribute. The type of data allowed in this field (see 'Field Data Types').\n* `required`: Boolean attribute. Defaults to false. Allows certain attributes to be 'required' when submitting records.\n* `identifier`: Boolean attribute. Field used to identify a customer. Exactly one field may be the identifier.\n* `unique_key`: Boolean attribute. Unique identifier for the record which can be used to update the record in the future. Only one field may be the unique_key.\n* `event_time`: Boolean attribute. For events, the time that the event occurred.\n\nOnly identifier and unique key are considered 'required' fields when specified. All other fields are optional and are marked as null if absent."
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Schema'
        required: false
      responses:
        '201':
          description: Schema created. Content is the definition of the created Schema.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaResponse'
            meta:
              example:
                code: 201
            data:
              example:
                name: purchase_event
                named_identifier: valid_named_identifier
                type: event
                fields:
                  purchase_id:
                    data_type: STRING
                    unique_key: true
                  customer_id:
                    data_type: STRING
                    identifier: true
                  purchase_time:
                    data_type: DATETIME
                    event_time: true
                  product_id:
                    data_type: STRING
                  product_category:
                    data_type: STRING
                  product_price:
                    data_type: NUMBER
        '400':
          description: "Validation error. \n\nOne or more values being sent was not in the correct format, or a required value was missing."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
      x-codegen-request-body-name: schema
  /schema/{schema-name}/:
    get:
      tags:
      - Schema
      summary: Get Schema Details
      description: Returns a list of all data types and schemas.
      parameters:
      - name: schema-name
        in: path
        description: The name of the Schema.
        required: true
        schema:
          type: string
      - name: row_count
        in: query
        description: Adds a field called `row_count` which is an Integer that is the number of available rows for targeting (there may be an hour delay between uploading data and this value updating)
        schema:
          type: boolean
      - name: latest_upload
        in: query
        description: "Adds a field called `last_file_upload` with the format:\n```\n\"last_file_upload\": {\n    \"status\": \"COMPLETE\",\n    \"upload_time\": \"2016-03-24T10:56:52.000000Z\",\n    \"import_start_time\": \"2017-04-04T18:05:34.000000Z\",\n    \"import_end_time\": \"2017-04-04T18:05:35.000000Z\",\n    \"validation_error\": \"\"\n}\n```"
        schema:
          type: boolean
      responses:
        '200':
          description: A single Schema definition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaResponse'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '404':
          description: 'Not found.


            The resource you are trying to fetch does not exist, or has been deleted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
    patch:
      tags:
      - Schema
      summary: Update an Existing Schema
      description: 'Update an existing schema by either adding new columns or updating the Identifier Name.


        The request differs based on whether adding new columns or updating Identifier Name

        Must only supply either fields or named_identifier (but not both) in the params body.

        Response will return either fields or named_identifier, depending on which was supplied.'
      parameters:
      - name: schema-name
        in: path
        description: The name of the Schema.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SchemaPatch'
        required: false
      responses:
        '200':
          description: Schema patched. Content is the definition of the modified Schema.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaPatchResponse'
            meta:
              example:
                code: 200
            data:
              example:
                fields:
                  existing_field:
                    data_type: STRING
                    unique_key: true
                  new_field:
                    data_type: STRING
                named_identifier: valid_named_identifier
        '400':
          description: "Validation error. \n\nOne or more values being sent was not in the correct format, or a required value was missing."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
      x-codegen-request-body-name: fields
  /schematype/:
    get:
      tags:
      - Schema
      summary: List Schema Types
      description: Gets a list of the available Schema types and their specifications.
      responses:
        '200':
          description: A list of Schema Types.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaTypeListResponse'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '404':
          description: 'Not found.


            The resource you are trying to fetch does not exist, or has been deleted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
  /schematype/{schema-type}/:
    get:
      tags:
      - Schema
      summary: Get Schema Type Details
      description: Gets details for a Schema Type and its specification.
      parameters:
      - name: schema-type
        in: path
        description: Name of the schema type.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A Schema Type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaTypeResponse'
        '401':
          description: "Unauthorized. \n\nThe request did not include a token, or the token provided was invalid. Please ensure that your token is correct and that the Authorization header is properly formatted."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '403':
          description: 'Forbidden.


            The request included a token that has been revoked. Please contact your account administrator to generate a new token.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '404':
          description: 'Not found.


            The resource you are trying to fetch does not exist, or has been deleted.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '500':
          description: 'Unknown error.


            Please try again or contact your account manager for more information.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
components:
  schemas:
    SchemaPatch:
      required:
      - fields
      type: object
      properties:
        fields:
          minProperties: 1
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Field'
          description: The fields that define the structure of this Schema.
      description: '

        Within a Schema, fields must have unique names.


        Columns passed in the fields property are added to the schema.'
      example:
        name: catalog
        type: event
        fields:
          new_field:
            data_type: STRING
    ResponseMeta:
      required:
      - code
      type: object
      properties:
        code:
          type: integer
          description: The http response code for this response.
          example: 200
        warnings:
          type: array
          description: A list of warnings associated with this response.
          example: []
          items:
            type: object
            additionalProperties: true
        errors:
          type: array
          description: A list of errors associated with this response.
          example: []
          items:
            type: object
            additionalProperties: true
    Field:
      required:
      - data_type
      type: object
      properties:
        data_type:
          type: string
          description: 'The data type for this field.


            Monetate supports five data types: STRING, MULTI_STRING, NUMBER, DATETIME, and BOOLEAN.'
          enum:
          - STRING
          - MULTI_STRING
          - BOOLEAN
          - DATETIME
          - NUMBER
          - GOOGLE_PRODUCT_CATEGORY
        identifier:
          type: boolean
          description: 'Indicates that this field can be linked to a Person ID for testing and targeting.


            The name of this schema.


            Schema names must begin with a letter and contain only letters, numbers, hyphens, and the underscore character.


            `data_type` must be a STRING.


            There must be exactly one Field designated as an identifier in your schema.'
        unique_key:
          type: boolean
          description: 'Indicates that this field is a unique key.


            `data_type` must be a STRING.


            Optionally, one field may be designated as a unique key in your schema.'
        event_time:
          type: boolean
          description: 'Indicates that this field represents the event time, the time which the event occurred.


            Must be data_type DATETIME.


            For schema''s with type==event, there must be exactly 1 field marked as the event time.'
      description: Representation of the properties of a Field within a Schema. Only appears within a Schema object's `fields` property.
    SchemaListResponse:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMetaPagination'
        data:
          type: array
          description: Data payload of this response.
          items:
            $ref: '#/components/schemas/Schema'
    Response:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/ResponseAnyData'
    SchemaType:
      required:
      - fields
      - name
      type: object
      properties:
        name:
          maxLength: 64
          pattern: ^[A-Za-z][A-Za-z0-9_]*$
          type: string
          description: The name of the Schema Type.
        fields:
          minProperties: 0
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Field'
          description: The fields part of the Schema Type specification.
      description: Representation of the type of Schema that can be created.
      example:
        name: product
        fields:
          id:
            data_type: STRING
            identifier: true
            unique_key: true
            event_time: false
            required: true
          title:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: true
          description:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: true
          link:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: true
          image_link:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: true
          additional_image_link:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          mobile_link:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          availability:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          availability_date:
            data_type: DATETIME
            identifier: false
            unique_key: false
            event_time: false
            required: false
          expiration_date:
            data_type: DATETIME
            identifier: false
            unique_key: false
            event_time: false
            required: false
          price:
            data_type: NUMBER
            identifier: false
            unique_key: false
            event_time: false
            required: true
          sale_price:
            data_type: NUMBER
            identifier: false
            unique_key: false
            event_time: false
            required: false
          sale_price_effective_date_begin:
            data_type: DATETIME
            identifier: false
            unique_key: false
            event_time: false
            required: false
          sale_price_effective_date_end:
            data_type: DATETIME
            identifier: false
            unique_key: false
            event_time: false
            required: false
          loyalty_points:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          product_type:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: true
          brand:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          mpn:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          condition:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          adult:
            data_type: BOOLEAN
            identifier: false
            unique_key: false
            event_time: false
            required: false
          multipack:
            data_type: NUMBER
            identifier: false
            unique_key: false
            event_time: false
            required: false
          is_bundle:
            data_type: BOOLEAN
            identifier: false
            unique_key: false
            event_time: false
            required: false
          energy_efficiency_class:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          age_group:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          color:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          gender:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          material:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          pattern:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          quantity:
            data_type: NUMBER
            identifier: false
            unique_key: false
            event_time: false
            required: false
          size:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          size_type:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          item_group_id:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          promotion_id:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping_label:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping_weight:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping_length:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping_height:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          shipping_width:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
          tax:
            data_type: STRING
            identifier: false
            unique_key: false
            event_time: false
            required: false
    SchemaResponse:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/Schema'
    SchemaTypeResponse:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/SchemaType'
    ResponsePagination:
      type: object
      properties:
        count:
          type: integer
          description: The number of items returned in this response.
          example: 1
        next:
          type: string
          description: A URL to the next group of items, if any.
        previous:
          type: string
          description: A URL to the previous group of items, if any.
    Schema:
      required:
      - fields
      - name
      type: object
      properties:
        name:
          maxLength: 64
          pattern: ^[A-Za-z][A-Za-z0-9_]*$
          type: string
          description: 'The name of the Schema.


            Schema names must begin with a letter and contain only letters, numbers, hyphens, and the underscore character.


            Maximum length of 64 characters.'
        type:
          type: string
          description: The type of this schema.
          enum:
          - agil_one
          - attribute
          - behavioral_trigger
          - custom_list
          - customer_data_privacy
          - email_metadata
          - event
          - inventory
          - product
          - product_recommendation
          - purchase
        fields:
          minProperties: 1
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Field'
          description: The fields that define the structure of this Schema.
        created_date:
          type: string
          description: The time the schema was created.
          format: date-time
          readOnly: true
        id:
          type: integer
          description: Monetate internal identifier for this schema.
          readOnly: true
        named_identifier:
          type: string
          description: '

            Identifier Name to associate with the schema.


            Identifier Name must be set for the schema to be used.'
      description: 'Representation of a Schema object.  A schema must have a name, and at least one field.


        Schemata for your account must have unique names.  If you are trying to re-create a Schema that already exists, please delete the old one first.


        Within a Schema, fields must have unique names.


        Exactly one field must be designated as the `identifier`.  This field will be used to link to a Person ID for testing and targeting.


        Optionally, one field may be designated as a `unique_key`.  If a Schema defines a unique key, then only one record can exist in your data for a given value of the unique key.  Successive data updates with the same unique key value will replace earlier data updates.  If no unique key is defined, then all data updates will be considered new data and will never replace earlier data.'
      example:
        name: purchase_event
        named_identifier: valid_named_identifier
        type: event
        fields:
          purchase_id:
            data_type: STRING
            unique_key: true
          customer_id:
            data_type: STRING
            identifier: true
          purchase_time:
            data_type: DATETIME
            event_time: true
          product_id:
            data_type: STRING
          product_category:
            data_type: STRING
          product_price:
            data_type: NUMBER
    ResponseAnyData:
      type: object
      additionalProperties: true
    SchemaTypeListResponse:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMetaPagination'
        data:
          type: array
          description: Data payload of this response.
          items:
            $ref: '#/components/schemas/SchemaType'
    SchemaPatchResponse:
      required:
      - data
      - meta
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/SchemaPatch'
    ResponseMetaPagination:
      allOf:
      - $ref: '#/components/schemas/ResponseMeta'
      - $ref: '#/components/schemas/ResponsePagination'
  securitySchemes:
    Token_Authentication:
      type: apiKey
      description: The Monetate Data API uses Token Authentication, so requests to the Data API must include a valid, active authentication token. Include an `Authorization` header with the value `Token [token_string]` with every request. See [Auth API](https://developer.monetate.com/auth-api) for information on obtaining the *token_string*.
      name: Authorization
      in: header
x-original-swagger-version: '2.0'