{
  "openapi": "3.0.3",
  "info": {
    "title": "RudderStack HTTP API",
    "version": "1.0.0-oas3",
    "description": "The RudderStack HTTP API lets you track your customer event data and route it to your desired destinations.",
    "termsOfService": "https://www.rudderstack.com/master-service-agreement/",
    "contact": {
      "email": "support@rudderstack.com"
    },
    "license": {
      "name": "Elastic License 2.0",
      "url": "https://www.elastic.co/licensing/elastic-license"
    }
  },
  "paths": {
    "/v1/identify": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Identify",
        "description": "The identify call lets you associate a visiting user to their actions and record any associated traits.",
        "operationId": "Identify",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentifyPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/track": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Track",
        "description": "The track call lets you track user actions along with any properties associated with them.",
        "operationId": "Track",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/page": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Page",
        "description": "The page call lets you record your website’s page views with any additional relevant information about the viewed page.",
        "operationId": "Page",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PagePayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/screen": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Screen",
        "description": "The screen call is the mobile equivalent of the page call. It lets you record whenever your user views their mobile screen with any additional relevant information about the screen.",
        "operationId": "Screen",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScreenPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/group": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Group",
        "description": "The group call lets you link an identified user with a group such as a company, organization, or an account. It also lets you record any custom traits associated with that group, like the name of the company, the number of employees, etc.",
        "operationId": "Group",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/alias": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Alias",
        "description": "The alias call lets you merge different identities of a known user.",
        "operationId": "Alias",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AliasPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/v1/batch": {
      "post": {
        "tags": [
          "HTTP API"
        ],
        "summary": "Batch",
        "description": "The batch call enables you to send a batch of events (identify, track, page, group, screen, alias) in a single request.",
        "operationId": "Batch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/internal/v1/extract": {
      "post": {
        "tags": [
          "Internal API"
        ],
        "summary": "Extract",
        "description": "Handles extract requests.",
        "operationId": "Extract",
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/internal/v1/retl": {
      "post": {
        "tags": [
          "Internal API"
        ],
        "summary": "Retl",
        "description": "Handles retl (reverse ETL) requests.",
        "operationId": "Retl",
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "sourceIDAuth": []
          }
        ]
      }
    },
    "/internal/v1/audiencelist": {
      "post": {
        "tags": [
          "Internal API"
        ],
        "summary": "Audience List",
        "description": "Handles audience list requests.",
        "operationId": "AudienceList",
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "writeKeyAuth": []
          }
        ]
      }
    },
    "/internal/v1/replay": {
      "post": {
        "tags": [
          "Internal API"
        ],
        "summary": "Replay",
        "description": "Handles replay requests.",
        "operationId": "Replay",
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          },
          "404": {
            "description": "StatusNotFound",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Source does not accept webhook events"
              }
            }
          },
          "413": {
            "description": "StatusRequestEntityTooLarge",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Request size too large"
              }
            }
          },
          "429": {
            "description": "StatusTooManyRequests",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Too many requests"
              }
            }
          }
        },
        "security": [
          {
            "sourceIDAuth": []
          }
        ]
      }
    },
    "/internal/v1/batch": {
      "post": {
        "tags": [
          "Internal API"
        ],
        "summary": "Batch",
        "description": "Handles internal batch requests.",
        "operationId": "InternalBatch",
        "responses": {
          "200": {
            "description": "StatusOK",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "OK"
              }
            }
          },
          "400": {
            "description": "StatusBadRequest",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid request"
              }
            }
          },
          "401": {
            "description": "StatusUnauthorized",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Authorization Header"
              }
            }
          }
        },
        "security": [
          {
            "sourceIDAuth": []
          }
        ]
      }
    }
  },
  "servers": [
    {
      "url": "/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "writeKeyAuth": {
        "type": "http",
        "scheme": "basic",
        "description": "Write Key Basic Authentication"
      },
      "sourceIDAuth": {
        "type": "http",
        "scheme": "basic",
        "description": "SourceID Basic Authentication"
      }
    },
    "schemas": {
      "IdentifyPayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "anonymousId": {
            "type": "string",
            "description": "Sets the user ID for cases where there is no unique identifier for the user."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "traits": {
                "type": "object",
                "properties": {
                  "trait1": {
                    "type": "string",
                    "description": "New value for trait1."
                  }
                }
              },
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "TrackPayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "anonymousId": {
            "type": "string",
            "description": "Sets the user ID for cases where there is no unique identifier for the user."
          },
          "event": {
            "type": "string",
            "description": "Name of the event being performed by the user."
          },
          "properties": {
            "type": "object",
            "description": "Dictionary of the properties associated with a particular event."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "PagePayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "anonymousId": {
            "type": "string",
            "description": "Sets the user ID for cases where there is no unique identifier for the user."
          },
          "name": {
            "type": "string",
            "description": "Name of the page being viewed."
          },
          "properties": {
            "type": "object",
            "description": "Dictionary of the properties associated with a particular event."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "ScreenPayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "anonymousId": {
            "type": "string",
            "description": "Sets the user ID for cases where there is no unique identifier for the user."
          },
          "name": {
            "type": "string",
            "description": "Name of the screen being viewed."
          },
          "properties": {
            "type": "object",
            "description": "Dictionary of the properties associated with the page being viewed, such as url and referrer."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "GroupPayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "anonymousId": {
            "type": "string",
            "description": "Sets the user ID for cases where there is no unique identifier for the user."
          },
          "groupId": {
            "type": "string",
            "description": "Unique identifier of the group, as present in your database."
          },
          "traits": {
            "type": "object",
            "description": "Dictionary of the traits associated with the group, such as name or email."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "traits": {
                "type": "object",
                "properties": {
                  "trait1": {
                    "type": "string",
                    "description": "New value for trait1."
                  }
                }
              },
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "AliasPayload": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Unique identifier for a particular user in your database."
          },
          "previousId": {
            "type": "string",
            "description": "The previous unique identifier of the user."
          },
          "context": {
            "type": "object",
            "description": "Dictionary of information that provides context about a message.",
            "properties": {
              "traits": {
                "type": "object",
                "properties": {
                  "trait1": {
                    "type": "string",
                    "description": "New value for trait1."
                  }
                }
              },
              "ip": {
                "type": "string",
                "description": "IP address."
              },
              "library": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the library."
                  }
                }
              }
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp of the message’s arrival."
          }
        }
      },
      "BatchPayload": {
        "type": "object",
        "properties": {
          "batch": {
            "type": "array",
            "items": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/components/schemas/IdentifyPayload"
                },
                {
                  "$ref": "#/components/schemas/TrackPayload"
                },
                {
                  "$ref": "#/components/schemas/PagePayload"
                },
                {
                  "$ref": "#/components/schemas/ScreenPayload"
                },
                {
                  "$ref": "#/components/schemas/GroupPayload"
                },
                {
                  "$ref": "#/components/schemas/AliasPayload"
                }
              ],
              "properties": {
                "userId": {
                  "type": "string"
                },
                "anonymousId": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "context": {
                  "type": "object",
                  "properties": {
                    "traits": {
                      "type": "object",
                      "properties": {
                        "trait1": {
                          "type": "string"
                        }
                      }
                    },
                    "ip": {
                      "type": "string"
                    },
                    "library": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "timestamp": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "batch"
        ]
      }
    }
  }
}