-
Notifications
You must be signed in to change notification settings - Fork 3
/
spec.json
1 lines (1 loc) · 283 KB
/
spec.json
1
{"openapi":"3.0.0","info":{"version":"0.9.0","title":"Wikimedia EventStreams","description":"Streaming Wikimedia event data over HTTP SSE / EventSource","termsOfService":"https://wikimediafoundation.org/wiki/Terms_of_Use","license":{"name":"Apache2","url":"http://www.apache.org/licenses/LICENSE-2.0"}},"externalDocs":{"url":"https://wikitech.wikimedia.org/wiki/EventStreams"},"paths":{"/v2/stream/{streams}":{"get":{"x-monitor":false,"tags":["streams"],"summary":"Subscribe to one or multiple streams.","description":"Use this route to subscribe to a comma separated list of configured streams.\n","parameters":[{"name":"streams","in":"path","description":"Comma separated list of stream names to subscribe to.","schema":{"type":"array","items":{"type":"string","enum":["eventgate-main.test.event","mediawiki.page-create","mediawiki.page-delete","mediawiki.page-links-change","mediawiki.page-move","mediawiki.page-properties-change","mediawiki.page-undelete","mediawiki.page_change.v1","mediawiki.recentchange","mediawiki.revision-create","mediawiki.revision-tags-change","mediawiki.revision-visibility-change","page-create","page-delete","page-links-change","page-move","page-properties-change","page-undelete","recentchange","revision-create","test"]}},"required":true},{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}},"text/event-stream":{"schema":{"type":"string"}}}}}}},"/v2/stream/eventgate-main.test.event":{"get":{"x-monitor":false,"tags":["streams"],"summary":"eventgate-main.test.event events","description":"A test event stream. A new event is posted about once a minute.\n\nSchema title: test/event","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"test/event","description":"Schema used for simple tests","type":"object","required":["$schema","meta"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"test":{"type":"string","default":"default value"},"test_map":{"description":"We want to support 'map' types using additionalProperties to specify the value types. (Keys are always strings.)\n","type":"object","additionalProperties":{"type":"string"}}}},"example":{"$schema":"/test/event/1.0.0","meta":{"dt":"2019-01-01T00:00:00Z","stream":"test.event.example"},"test":"specific test value","test_map":{"key1":"val1","key2":"val2"}}},"text/event-stream":{"schema":{"title":"test/event","description":"Schema used for simple tests","type":"object","required":["$schema","meta"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"test":{"type":"string","default":"default value"},"test_map":{"description":"We want to support 'map' types using additionalProperties to specify the value types. (Keys are always strings.)\n","type":"object","additionalProperties":{"type":"string"}}}},"example":{"$schema":"/test/event/1.0.0","meta":{"dt":"2019-01-01T00:00:00Z","stream":"test.event.example"},"test":"specific test value","test_map":{"key1":"val1","key2":"val2"}}}}}}}},"/v2/stream/mediawiki.page-create":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-create events","description":"MediaWiki page create events. This page create stream\nis just the first revision create event for each page.\nAs such, it reuses the mediawiki/revision/create schema.\n\nSchema title: mediawiki/revision/create","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}},"text/event-stream":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}}}}}}},"/v2/stream/mediawiki.page-delete":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-delete events","description":"mediawiki.page-delete events.\n\nSchema title: mediawiki/page/delete","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/delete","description":"Represents a MW Page Delete event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/delete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-delete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/delete","description":"Represents a MW Page Delete event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/delete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-delete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/mediawiki.page-links-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-links-change events","description":"mediawiki.page-links-change events.\n\nSchema title: mediawiki/page/links-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/links-change","description":"Represents a MW Page Links Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_links":{"description":"The new page links. This map would only contain links that were either added or changed, links that were intact would not be present here. If the link was changed, its previous value would be present in the 'removed_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being added","type":"string"}}}},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_links":{"description":"The old page links. This map would only contain the previous values of the links that were either removed or changed by this event. Links that were intact would not be present here. If the link was changed, its new value would be present in the 'added_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being removed","type":"string"}}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/links-change/1.0.0","added_links":[{"external":false,"link":"example_link"}],"database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-links-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/links-change","description":"Represents a MW Page Links Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_links":{"description":"The new page links. This map would only contain links that were either added or changed, links that were intact would not be present here. If the link was changed, its previous value would be present in the 'removed_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being added","type":"string"}}}},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_links":{"description":"The old page links. This map would only contain the previous values of the links that were either removed or changed by this event. Links that were intact would not be present here. If the link was changed, its new value would be present in the 'added_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being removed","type":"string"}}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/links-change/1.0.0","added_links":[{"external":false,"link":"example_link"}],"database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-links-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/mediawiki.page-move":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-move events","description":"mediawiki.page-move events.\n\nSchema title: mediawiki/page/move","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/move","description":"Represents a MW Page Move event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string","minLength":1},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"new_redirect_page":{"description":"Information about the new redirect page auto-created at the old title as a result of this page move. This field is optional and will be absent if no redirect page was created.\n","type":"object","required":["page_id","page_title","page_namespace","rev_id"],"properties":{"page_id":{"description":"The page ID of the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":1},"page_namespace":{"description":"This will be the same as prior_state.page_namespace.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"This will be the same as prior_state.page_title.","type":"string","minLength":1},"rev_id":{"description":"The revision created for the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":0}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event.\n","type":"object","required":["page_title","page_namespace","rev_id"],"properties":{"page_namespace":{"description":"The namespace ID this page belonged to before this event.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of this page before this event.","type":"string","minLength":1},"rev_id":{"description":"The head revision of this page before this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/move/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-move"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_namespace":0,"page_title":"example_old_page_title","rev_id":122},"rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/move","description":"Represents a MW Page Move event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string","minLength":1},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"new_redirect_page":{"description":"Information about the new redirect page auto-created at the old title as a result of this page move. This field is optional and will be absent if no redirect page was created.\n","type":"object","required":["page_id","page_title","page_namespace","rev_id"],"properties":{"page_id":{"description":"The page ID of the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":1},"page_namespace":{"description":"This will be the same as prior_state.page_namespace.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"This will be the same as prior_state.page_title.","type":"string","minLength":1},"rev_id":{"description":"The revision created for the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":0}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event.\n","type":"object","required":["page_title","page_namespace","rev_id"],"properties":{"page_namespace":{"description":"The namespace ID this page belonged to before this event.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of this page before this event.","type":"string","minLength":1},"rev_id":{"description":"The head revision of this page before this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/move/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-move"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_namespace":0,"page_title":"example_old_page_title","rev_id":122},"rev_id":123}}}}}}},"/v2/stream/mediawiki.page-properties-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-properties-change events","description":"mediawiki.page-properties-change events.\n\nSchema title: mediawiki/page/properties-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/properties-change","description":"Represents a MW Page Properties Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_properties":{"description":"The new page properties. This map would only contain properties that were either added or changed, properties that were intact would not be present here. If the property was changed, its previous value would be present in the 'removed_properties' object.\n","type":"object"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_properties":{"description":"The old page properties. This map would only contain the previous values of the properties that were either removed or changed by this event. Properties that were intact would not be present here. If the property was changed, its new value would be present in the 'added_properties' object.\n","type":"object"},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/properties-change/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-properties-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/properties-change","description":"Represents a MW Page Properties Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_properties":{"description":"The new page properties. This map would only contain properties that were either added or changed, properties that were intact would not be present here. If the property was changed, its previous value would be present in the 'removed_properties' object.\n","type":"object"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_properties":{"description":"The old page properties. This map would only contain the previous values of the properties that were either removed or changed by this event. Properties that were intact would not be present here. If the property was changed, its new value would be present in the 'added_properties' object.\n","type":"object"},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/properties-change/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-properties-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/mediawiki.page-undelete":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page-undelete events","description":"mediawiki.page-undelete events.\n\nSchema title: mediawiki/page/undelete","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/undelete","description":"Represents a MW Page Undelete (restore) event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event. If prior_state itself is not present, then this event had no relevant prior state, indicating that it is probably the first time this type has been emitted for this entity. For page undeletes, prior_state will be absent unless the page_id is no longer the same as the page_id it had before it was deleted.\n","type":"object","required":["page_id"],"properties":{"page_id":{"description":"The page ID before this restore as it was in the archive table.","type":"integer","maximum":9007199254740991,"minimum":1}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/undelete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-undelete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_id":123},"rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/undelete","description":"Represents a MW Page Undelete (restore) event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event. If prior_state itself is not present, then this event had no relevant prior state, indicating that it is probably the first time this type has been emitted for this entity. For page undeletes, prior_state will be absent unless the page_id is no longer the same as the page_id it had before it was deleted.\n","type":"object","required":["page_id"],"properties":{"page_id":{"description":"The page ID before this restore as it was in the archive table.","type":"integer","maximum":9007199254740991,"minimum":1}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/undelete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-undelete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_id":123},"rev_id":123}}}}}}},"/v2/stream/mediawiki.page_change.v1":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.page_change.v1 events","description":"mediawiki.page_change.v1 events.\n\nSchema title: mediawiki/page/change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/change","description":"Represents a MediaWiki page state change in a changelog. This event models all state changes to MediaWiki pages. It supersedes the other page and revision based event models. See: https://phabricator.wikimedia.org/T308017\n","type":"object","additionalProperties":false,"required":["$schema","changelog_kind","dt","meta","page","page_change_kind","revision","wiki_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"changelog_kind":{"description":"The kind of this event in a changelog. This is used to map the event to an action in a data store.\n","type":"string","enum":["insert","update","delete"]},"comment":{"description":"The comment left by the user that performed this change. Same as revision.comment on edits.\n","type":"string"},"created_redirect_page":{"title":"fragment/mediawiki/state/entity/page","description":"Page entity that was created at the old title during a page move. This is only set for page move events. Note that the created_redirect_page will also have its own associated page create event.\n","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["page_id","page_title"],"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"revision_count":{"description":"NOTE: revision_count is never set for created_redirect_page. It is present here for backwards compatibility only.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page":{"title":"fragment/mediawiki/state/entity/page","description":"Fields for MediaWiki page entity.","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["page_id","page_title"],"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"redirect_page_link":{"title":"fragment/mediawiki/state/entity/page_link","description":"If this page is currently a redirect, then this field contains information about the target page the redirect links to.\n","$id":"/fragment/mediawiki/state/entity/page_link/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"interwiki_prefix":{"description":"The interwiki prefix (iw_prefix) of this link. The presence of this prefix implies a target outside the local wiki. See https://meta.wikimedia.org/wiki/Help:Interwiki_linking\n","type":"string"},"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1}},"examples":[{"interwiki_prefix":"dolor","is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"revision_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived. This field is likely only set for page delete events, as getting this information on all events is expensive.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"page_change_kind":{"description":"The origin kind of the change to this page as viewed by MediaWiki.\n","type":"string","enum":["create","undelete","edit","move","delete","visibility_change"]},"performer":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki actor that made this change. If this change is an edit, this will be the same as revision.editor.\n","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"prior_state":{"description":"Prior state of this page before this event. Fields are only present if their values have changed.\n","type":"object","properties":{"page":{"title":"fragment/mediawiki/state/entity/page","description":"Fields for MediaWiki page entity.","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"revision_count":{"description":"NOTE: prior_state.page.revision_count is unlikely to be set, as getting the # of revisions previous to this change is difficult. This field is present here for backwards compatibiliy.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"revision":{"title":"fragment/mediawiki/state/entity/revision","description":"Fields for MediaWiki revision entity.","$id":"/fragment/mediawiki/state/entity/revision/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"comment":{"description":"The comment left by the editor when this revision was made.","type":"string"},"content_slots":{"title":"fragment/mediawiki/state/entity/revision_slots","description":"Map type representing MediaWiki's revision content slots. This map is keyed by the slot role name, e.g. 'main'.\n","$id":"/fragment/mediawiki/state/entity/revision_slots/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"title":"fragment/mediawiki/state/entity/content","description":"Fields for representing MediaWiki page revision content.\n","$id":"/fragment/mediawiki/state/entity/content/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"content_body":{"description":"Content body. NOTE: This field is not required, and is often not set in streams as it can make events very large. It is included here for events that do include the content body.\n","type":"string"},"content_format":{"description":"The 'content type' of the content. E.g. wikitext/html. This is similiar to a MIME type.","type":"string"},"content_model":{"description":"MediaWiki's content model of this content. E.g. wikitext, json, etc.","type":"string"},"content_sha1":{"description":"sha1 sum of the content body.","type":"string"},"content_size":{"description":"Byte size of the content body.","type":"integer","maximum":9007199254740991,"minimum":0},"origin_rev_id":{"description":"Revision in which this slot was originally created","type":"integer","maximum":9007199254740991,"minimum":0},"slot_role":{"description":"Slot role name.","type":"string"}},"examples":[{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148}]},"examples":[{"dolorb":{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148,"slot_role":"dolor"}}]},"editor":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki user that made this edit.","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"is_comment_visible":{"description":"Whether the comment of the revision is visible. See RevisionRecord->DELETED_COMMENT.\n","type":"boolean"},"is_content_visible":{"description":"Whether the revision's content body is visible. If this is false, then content should be redacted. See RevisionRecord->DELETED_TEXT\n","type":"boolean"},"is_editor_visible":{"description":"Whether the revision's editor information is visible. Affects editor field. See RevisionRecord->DELETED_USER\n","type":"boolean"},"is_minor_edit":{"description":"True if the editor marked this revision as a minor edit.","type":"boolean"},"rev_dt":{"description":"Time this revision was created. This is rev_timestamp in the MediaWiki database.\n","type":"string","format":"date-time","maxLength":128},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":1},"rev_parent_id":{"description":"This revision's parent rev_id.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"sha1 sum considering all the content slots for this revision.\n","type":"string"},"rev_size":{"description":"Byte size 'sum' of all the content slots for this revision. This 'size' is approximate, but may not be exact, depending on the kind of data that is stored in the content slots.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"comment":"dolor","editor":{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"},"is_comment_visible":false,"is_content_visible":false,"is_editor_visible":false,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":1351079888211149,"rev_parent_id":1351079888211148,"rev_sha1":"dolor","rev_size":1351079888211148}]}}},"revision":{"title":"fragment/mediawiki/state/entity/revision","description":"Fields for MediaWiki revision entity.","$id":"/fragment/mediawiki/state/entity/revision/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_id","rev_dt"],"properties":{"comment":{"description":"The comment left by the editor when this revision was made.","type":"string"},"content_slots":{"title":"fragment/mediawiki/state/entity/revision_slots","description":"Map type representing MediaWiki's revision content slots. This map is keyed by the slot role name, e.g. 'main'.\n","$id":"/fragment/mediawiki/state/entity/revision_slots/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"title":"fragment/mediawiki/state/entity/content","description":"Fields for representing MediaWiki page revision content.\n","$id":"/fragment/mediawiki/state/entity/content/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"content_body":{"description":"Content body. NOTE: This field is not required, and is often not set in streams as it can make events very large. It is included here for events that do include the content body.\n","type":"string"},"content_format":{"description":"The 'content type' of the content. E.g. wikitext/html. This is similiar to a MIME type.","type":"string"},"content_model":{"description":"MediaWiki's content model of this content. E.g. wikitext, json, etc.","type":"string"},"content_sha1":{"description":"sha1 sum of the content body.","type":"string"},"content_size":{"description":"Byte size of the content body.","type":"integer","maximum":9007199254740991,"minimum":0},"origin_rev_id":{"description":"Revision in which this slot was originally created","type":"integer","maximum":9007199254740991,"minimum":0},"slot_role":{"description":"Slot role name.","type":"string"}},"examples":[{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148}]},"examples":[{"dolorb":{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148,"slot_role":"dolor"}}]},"editor":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki user that made this edit.","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"is_comment_visible":{"description":"Whether the comment of the revision is visible. See RevisionRecord->DELETED_COMMENT.\n","type":"boolean"},"is_content_visible":{"description":"Whether the revision's content body is visible. If this is false, then content should be redacted. See RevisionRecord->DELETED_TEXT\n","type":"boolean"},"is_editor_visible":{"description":"Whether the revision's editor information is visible. Affects editor field. See RevisionRecord->DELETED_USER\n","type":"boolean"},"is_minor_edit":{"description":"True if the editor marked this revision as a minor edit.","type":"boolean"},"rev_dt":{"description":"Time this revision was created. This is rev_timestamp in the MediaWiki database.\n","type":"string","format":"date-time","maxLength":128},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":1},"rev_parent_id":{"description":"This revision's parent rev_id.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"sha1 sum considering all the content slots for this revision.\n","type":"string"},"rev_size":{"description":"Byte size 'sum' of all the content slots for this revision. This 'size' is approximate, but may not be exact, depending on the kind of data that is stored in the content slots.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"comment":"dolor","editor":{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"},"is_comment_visible":false,"is_content_visible":false,"is_editor_visible":false,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":1351079888211149,"rev_parent_id":1351079888211148,"rev_sha1":"dolor","rev_size":1351079888211148}]},"wiki_id":{"description":"The wiki ID, which is usually the same as the MediaWiki database name. E.g. enwiki, metawiki, etc.\n","type":"string","minLength":1}},"definitions":{"revision_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived. This field is likely only set for page delete events, as getting this information on all events is expensive.\n","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/change/1.2.0","changelog_kind":"update","comment":"changed a thing","dt":"2021-01-01T00:00:00.0Z","meta":{"domain":"examplewiki","dt":"2021-01-01T00:00:00.0Z","stream":"mediawiki.page_change"},"page":{"is_redirect":true,"namespace_id":1,"page_id":1,"page_title":"example","redirect_page_link":{"is_redirect":false,"namespace_id":1,"page_id":2,"page_title":"Redirect_Target"},"revision_count":1},"page_change_kind":"edit","performer":{"user_id":123,"user_text":"yoohoo"},"revision":{"comment":"changed a thing","content_slots":{"main":{"content_format":"text/x-wiki","content_model":"wikitext","content_sha1":"16619839a55cfb5c61bcf520bf9734e0c67f98cc","content_size":100,"origin_rev_id":2,"slot_role":"main"}},"editor":{"user_id":123,"user_text":"example"},"is_comment_visible":true,"is_content_visible":true,"is_editor_visible":true,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":2,"rev_parent_id":1,"rev_sha1":"16619839a55cfb5c61bcf520bf9734e0c67f98cc","rev_size":100},"wiki_id":"example"}},"text/event-stream":{"schema":{"title":"mediawiki/page/change","description":"Represents a MediaWiki page state change in a changelog. This event models all state changes to MediaWiki pages. It supersedes the other page and revision based event models. See: https://phabricator.wikimedia.org/T308017\n","type":"object","additionalProperties":false,"required":["$schema","changelog_kind","dt","meta","page","page_change_kind","revision","wiki_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"changelog_kind":{"description":"The kind of this event in a changelog. This is used to map the event to an action in a data store.\n","type":"string","enum":["insert","update","delete"]},"comment":{"description":"The comment left by the user that performed this change. Same as revision.comment on edits.\n","type":"string"},"created_redirect_page":{"title":"fragment/mediawiki/state/entity/page","description":"Page entity that was created at the old title during a page move. This is only set for page move events. Note that the created_redirect_page will also have its own associated page create event.\n","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["page_id","page_title"],"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"revision_count":{"description":"NOTE: revision_count is never set for created_redirect_page. It is present here for backwards compatibility only.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page":{"title":"fragment/mediawiki/state/entity/page","description":"Fields for MediaWiki page entity.","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["page_id","page_title"],"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"redirect_page_link":{"title":"fragment/mediawiki/state/entity/page_link","description":"If this page is currently a redirect, then this field contains information about the target page the redirect links to.\n","$id":"/fragment/mediawiki/state/entity/page_link/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"interwiki_prefix":{"description":"The interwiki prefix (iw_prefix) of this link. The presence of this prefix implies a target outside the local wiki. See https://meta.wikimedia.org/wiki/Help:Interwiki_linking\n","type":"string"},"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1}},"examples":[{"interwiki_prefix":"dolor","is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"revision_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived. This field is likely only set for page delete events, as getting this information on all events is expensive.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"page_change_kind":{"description":"The origin kind of the change to this page as viewed by MediaWiki.\n","type":"string","enum":["create","undelete","edit","move","delete","visibility_change"]},"performer":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki actor that made this change. If this change is an edit, this will be the same as revision.editor.\n","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"prior_state":{"description":"Prior state of this page before this event. Fields are only present if their values have changed.\n","type":"object","properties":{"page":{"title":"fragment/mediawiki/state/entity/page","description":"Fields for MediaWiki page entity.","$id":"/fragment/mediawiki/state/entity/page/2.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"is_redirect":{"description":"True if the page is a redirect page at the time of this event.","type":"boolean"},"namespace_id":{"description":"The id of the namespace this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":0},"page_id":{"description":"The (database) page ID of the page.","type":"integer","maximum":9007199254740991,"minimum":0},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"revision_count":{"description":"NOTE: prior_state.page.revision_count is unlikely to be set, as getting the # of revisions previous to this change is difficult. This field is present here for backwards compatibiliy.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"is_redirect":false,"namespace_id":1351079888211148,"page_id":1351079888211148,"page_title":"dolor"}]},"revision":{"title":"fragment/mediawiki/state/entity/revision","description":"Fields for MediaWiki revision entity.","$id":"/fragment/mediawiki/state/entity/revision/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"comment":{"description":"The comment left by the editor when this revision was made.","type":"string"},"content_slots":{"title":"fragment/mediawiki/state/entity/revision_slots","description":"Map type representing MediaWiki's revision content slots. This map is keyed by the slot role name, e.g. 'main'.\n","$id":"/fragment/mediawiki/state/entity/revision_slots/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"title":"fragment/mediawiki/state/entity/content","description":"Fields for representing MediaWiki page revision content.\n","$id":"/fragment/mediawiki/state/entity/content/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"content_body":{"description":"Content body. NOTE: This field is not required, and is often not set in streams as it can make events very large. It is included here for events that do include the content body.\n","type":"string"},"content_format":{"description":"The 'content type' of the content. E.g. wikitext/html. This is similiar to a MIME type.","type":"string"},"content_model":{"description":"MediaWiki's content model of this content. E.g. wikitext, json, etc.","type":"string"},"content_sha1":{"description":"sha1 sum of the content body.","type":"string"},"content_size":{"description":"Byte size of the content body.","type":"integer","maximum":9007199254740991,"minimum":0},"origin_rev_id":{"description":"Revision in which this slot was originally created","type":"integer","maximum":9007199254740991,"minimum":0},"slot_role":{"description":"Slot role name.","type":"string"}},"examples":[{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148}]},"examples":[{"dolorb":{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148,"slot_role":"dolor"}}]},"editor":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki user that made this edit.","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"is_comment_visible":{"description":"Whether the comment of the revision is visible. See RevisionRecord->DELETED_COMMENT.\n","type":"boolean"},"is_content_visible":{"description":"Whether the revision's content body is visible. If this is false, then content should be redacted. See RevisionRecord->DELETED_TEXT\n","type":"boolean"},"is_editor_visible":{"description":"Whether the revision's editor information is visible. Affects editor field. See RevisionRecord->DELETED_USER\n","type":"boolean"},"is_minor_edit":{"description":"True if the editor marked this revision as a minor edit.","type":"boolean"},"rev_dt":{"description":"Time this revision was created. This is rev_timestamp in the MediaWiki database.\n","type":"string","format":"date-time","maxLength":128},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":1},"rev_parent_id":{"description":"This revision's parent rev_id.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"sha1 sum considering all the content slots for this revision.\n","type":"string"},"rev_size":{"description":"Byte size 'sum' of all the content slots for this revision. This 'size' is approximate, but may not be exact, depending on the kind of data that is stored in the content slots.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"comment":"dolor","editor":{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"},"is_comment_visible":false,"is_content_visible":false,"is_editor_visible":false,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":1351079888211149,"rev_parent_id":1351079888211148,"rev_sha1":"dolor","rev_size":1351079888211148}]}}},"revision":{"title":"fragment/mediawiki/state/entity/revision","description":"Fields for MediaWiki revision entity.","$id":"/fragment/mediawiki/state/entity/revision/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_id","rev_dt"],"properties":{"comment":{"description":"The comment left by the editor when this revision was made.","type":"string"},"content_slots":{"title":"fragment/mediawiki/state/entity/revision_slots","description":"Map type representing MediaWiki's revision content slots. This map is keyed by the slot role name, e.g. 'main'.\n","$id":"/fragment/mediawiki/state/entity/revision_slots/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":{"title":"fragment/mediawiki/state/entity/content","description":"Fields for representing MediaWiki page revision content.\n","$id":"/fragment/mediawiki/state/entity/content/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"content_body":{"description":"Content body. NOTE: This field is not required, and is often not set in streams as it can make events very large. It is included here for events that do include the content body.\n","type":"string"},"content_format":{"description":"The 'content type' of the content. E.g. wikitext/html. This is similiar to a MIME type.","type":"string"},"content_model":{"description":"MediaWiki's content model of this content. E.g. wikitext, json, etc.","type":"string"},"content_sha1":{"description":"sha1 sum of the content body.","type":"string"},"content_size":{"description":"Byte size of the content body.","type":"integer","maximum":9007199254740991,"minimum":0},"origin_rev_id":{"description":"Revision in which this slot was originally created","type":"integer","maximum":9007199254740991,"minimum":0},"slot_role":{"description":"Slot role name.","type":"string"}},"examples":[{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148}]},"examples":[{"dolorb":{"content_body":"dolor","content_format":"dolor","content_model":"dolor","content_sha1":"dolor","content_size":1351079888211148,"origin_rev_id":1351079888211148,"slot_role":"dolor"}}]},"editor":{"title":"fragment/mediawiki/state/entity/user","description":"Represents the MediaWiki user that made this edit.","$id":"/fragment/mediawiki/state/entity/user/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"properties":{"edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc. Not present for anonymous users.\n","type":"array","items":{"type":"string","minLength":1}},"is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"is_system":{"description":"True if the user is a MediaWiki 'system' user. These are users that cannot 'authenticate'. These are usually listed in ReservedUsernames.\n","type":"boolean"},"is_temp":{"description":"True if the user is an autocreated temporary MediaWiki user. This is used for IP masking.\n","type":"boolean"},"registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_id":{"description":"The user ID that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_text":{"description":"The user name or text representation of the user that performed this change.\n","type":"string","minLength":1}},"examples":[{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"}]},"is_comment_visible":{"description":"Whether the comment of the revision is visible. See RevisionRecord->DELETED_COMMENT.\n","type":"boolean"},"is_content_visible":{"description":"Whether the revision's content body is visible. If this is false, then content should be redacted. See RevisionRecord->DELETED_TEXT\n","type":"boolean"},"is_editor_visible":{"description":"Whether the revision's editor information is visible. Affects editor field. See RevisionRecord->DELETED_USER\n","type":"boolean"},"is_minor_edit":{"description":"True if the editor marked this revision as a minor edit.","type":"boolean"},"rev_dt":{"description":"Time this revision was created. This is rev_timestamp in the MediaWiki database.\n","type":"string","format":"date-time","maxLength":128},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":1},"rev_parent_id":{"description":"This revision's parent rev_id.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"sha1 sum considering all the content slots for this revision.\n","type":"string"},"rev_size":{"description":"Byte size 'sum' of all the content slots for this revision. This 'size' is approximate, but may not be exact, depending on the kind of data that is stored in the content slots.\n","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"comment":"dolor","editor":{"edit_count":1351079888211148,"groups":["dolor"],"is_bot":false,"is_system":false,"is_temp":false,"registration_dt":"2021-01-01T00:00:00.0Z","user_id":1351079888211148,"user_text":"dolor"},"is_comment_visible":false,"is_content_visible":false,"is_editor_visible":false,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":1351079888211149,"rev_parent_id":1351079888211148,"rev_sha1":"dolor","rev_size":1351079888211148}]},"wiki_id":{"description":"The wiki ID, which is usually the same as the MediaWiki database name. E.g. enwiki, metawiki, etc.\n","type":"string","minLength":1}},"definitions":{"revision_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived. This field is likely only set for page delete events, as getting this information on all events is expensive.\n","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/change/1.2.0","changelog_kind":"update","comment":"changed a thing","dt":"2021-01-01T00:00:00.0Z","meta":{"domain":"examplewiki","dt":"2021-01-01T00:00:00.0Z","stream":"mediawiki.page_change"},"page":{"is_redirect":true,"namespace_id":1,"page_id":1,"page_title":"example","redirect_page_link":{"is_redirect":false,"namespace_id":1,"page_id":2,"page_title":"Redirect_Target"},"revision_count":1},"page_change_kind":"edit","performer":{"user_id":123,"user_text":"yoohoo"},"revision":{"comment":"changed a thing","content_slots":{"main":{"content_format":"text/x-wiki","content_model":"wikitext","content_sha1":"16619839a55cfb5c61bcf520bf9734e0c67f98cc","content_size":100,"origin_rev_id":2,"slot_role":"main"}},"editor":{"user_id":123,"user_text":"example"},"is_comment_visible":true,"is_content_visible":true,"is_editor_visible":true,"is_minor_edit":false,"rev_dt":"2021-01-01T00:00:00.0Z","rev_id":2,"rev_parent_id":1,"rev_sha1":"16619839a55cfb5c61bcf520bf9734e0c67f98cc","rev_size":100},"wiki_id":"example"}}}}}}},"/v2/stream/mediawiki.recentchange":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.recentchange events","description":"mediawiki.recentchange events.\n\nSchema title: mediawiki/recentchange","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/recentchange","description":"Represents a MW RecentChange event. https://www.mediawiki.org/wiki/Manual:RCFeed\n","type":"object","additionalProperties":true,"required":["$schema","meta"],"properties":{"title":{"description":"Full page name, from Title::getPrefixedText.","type":"string"},"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"type":{"description":"Type of recentchange event (rc_type). One of \"edit\", \"new\", \"log\", \"categorize\", or \"external\"; or a number. (See Manual:Recentchanges table#rc_type)\n","type":"string"},"bot":{"description":"(rc_bot)","type":"boolean"},"comment":{"description":"(rc_comment)","type":"string"},"id":{"description":"ID of the recentchange event (rcid).","type":["integer","null"]},"length":{"description":"Length of old and new change","type":"object","properties":{"new":{"description":"(rc_new_len)","type":["integer","null"]},"old":{"description":"(rc_old_len)","type":["integer","null"]}}},"log_action":{"description":"(rc_log_action)","type":"string"},"log_action_comment":{"type":["string","null"]},"log_id":{"description":"(rc_log_id)","type":["integer","null"]},"log_params":{"description":"Property only exists if event has rc_params.","type":["array","object","string"],"additionalProperties":true},"log_type":{"description":"(rc_log_type)","type":["string","null"]},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"minor":{"description":"(rc_minor).","type":"boolean"},"namespace":{"description":"ID of relevant namespace of affected page (rc_namespace, page_namespace). This is -1 (\"Special\") for log events.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"parsedcomment":{"description":"The rc_comment parsed into simple HTML. Optional","type":"string"},"patrolled":{"description":"(rc_patrolled). This property only exists if patrolling is supported for this event (based on $wgUseRCPatrol, $wgUseNPPatrol).\n","type":"boolean"},"revision":{"description":"Old and new revision IDs","type":"object","properties":{"new":{"description":"(rc_last_oldid)","type":["integer","null"]},"old":{"description":"(rc_this_oldid)","type":["integer","null"]}}},"server_name":{"description":"$wgServerName","type":"string"},"server_script_path":{"description":"$wgScriptPath","type":"string"},"server_url":{"description":"$wgCanonicalServer","type":"string"},"timestamp":{"description":"Unix timestamp (derived from rc_timestamp).","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user":{"description":"(rc_user_text)","type":"string"},"wiki":{"description":"wfWikiID ($wgDBprefix, $wgDBname)","type":"string"}}},"example":{"$schema":"/mediawiki/recentchange/1.0.1","meta":{"dt":"2020-07-01T00:00:00Z","stream":"mediawiki.recentchange"}}},"text/event-stream":{"schema":{"title":"mediawiki/recentchange","description":"Represents a MW RecentChange event. https://www.mediawiki.org/wiki/Manual:RCFeed\n","type":"object","additionalProperties":true,"required":["$schema","meta"],"properties":{"title":{"description":"Full page name, from Title::getPrefixedText.","type":"string"},"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"type":{"description":"Type of recentchange event (rc_type). One of \"edit\", \"new\", \"log\", \"categorize\", or \"external\"; or a number. (See Manual:Recentchanges table#rc_type)\n","type":"string"},"bot":{"description":"(rc_bot)","type":"boolean"},"comment":{"description":"(rc_comment)","type":"string"},"id":{"description":"ID of the recentchange event (rcid).","type":["integer","null"]},"length":{"description":"Length of old and new change","type":"object","properties":{"new":{"description":"(rc_new_len)","type":["integer","null"]},"old":{"description":"(rc_old_len)","type":["integer","null"]}}},"log_action":{"description":"(rc_log_action)","type":"string"},"log_action_comment":{"type":["string","null"]},"log_id":{"description":"(rc_log_id)","type":["integer","null"]},"log_params":{"description":"Property only exists if event has rc_params.","type":["array","object","string"],"additionalProperties":true},"log_type":{"description":"(rc_log_type)","type":["string","null"]},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"minor":{"description":"(rc_minor).","type":"boolean"},"namespace":{"description":"ID of relevant namespace of affected page (rc_namespace, page_namespace). This is -1 (\"Special\") for log events.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"parsedcomment":{"description":"The rc_comment parsed into simple HTML. Optional","type":"string"},"patrolled":{"description":"(rc_patrolled). This property only exists if patrolling is supported for this event (based on $wgUseRCPatrol, $wgUseNPPatrol).\n","type":"boolean"},"revision":{"description":"Old and new revision IDs","type":"object","properties":{"new":{"description":"(rc_last_oldid)","type":["integer","null"]},"old":{"description":"(rc_this_oldid)","type":["integer","null"]}}},"server_name":{"description":"$wgServerName","type":"string"},"server_script_path":{"description":"$wgScriptPath","type":"string"},"server_url":{"description":"$wgCanonicalServer","type":"string"},"timestamp":{"description":"Unix timestamp (derived from rc_timestamp).","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user":{"description":"(rc_user_text)","type":"string"},"wiki":{"description":"wfWikiID ($wgDBprefix, $wgDBname)","type":"string"}}},"example":{"$schema":"/mediawiki/recentchange/1.0.1","meta":{"dt":"2020-07-01T00:00:00Z","stream":"mediawiki.recentchange"}}}}}}}},"/v2/stream/mediawiki.revision-create":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.revision-create events","description":"mediawiki.revision-create events.\n\nSchema title: mediawiki/revision/create","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}},"text/event-stream":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}}}}}}},"/v2/stream/mediawiki.revision-tags-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.revision-tags-change events","description":"mediawiki.revision-tags-change events.\n\nSchema title: mediawiki/revision/tags-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/tags-change","description":"Represents a MW revision tags change event","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If the field is not present, the revision has no tags before the event has happened.\n","type":"object","properties":{"tags":{"description":"The list of tags before the event has happened.","type":"array","items":{"type":"string"}}}},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128},"tags":{"description":"The list of tags after the event has happened. If the tags field is not present, the revision has no tags after the event has happened.\n","type":"array","items":{"type":"string"}}}},"example":{"$schema":"/mediawiki/revision/tags-change/1.0.1","database":"examplewiki","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-tags-change","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_timestamp":"2020-06-10T18:57:16Z","tags":["example_tag"]}},"text/event-stream":{"schema":{"title":"mediawiki/revision/tags-change","description":"Represents a MW revision tags change event","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If the field is not present, the revision has no tags before the event has happened.\n","type":"object","properties":{"tags":{"description":"The list of tags before the event has happened.","type":"array","items":{"type":"string"}}}},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128},"tags":{"description":"The list of tags after the event has happened. If the tags field is not present, the revision has no tags after the event has happened.\n","type":"array","items":{"type":"string"}}}},"example":{"$schema":"/mediawiki/revision/tags-change/1.0.1","database":"examplewiki","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-tags-change","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_timestamp":"2020-06-10T18:57:16Z","tags":["example_tag"]}}}}}}},"/v2/stream/mediawiki.revision-visibility-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"mediawiki.revision-visibility-change events","description":"mediawiki.revision-visibility-change events.\n\nSchema title: mediawiki/revision/visibility-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/visibility-change","description":"Represents a MW Revision Visibiilty Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id","rev_timestamp","visibility"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. Revisions always have visibility settings, so this object will always contain the visibility settings for the revision before this event.\n","type":"object","properties":{"visibility":{"description":"The prior visiblity state of this revision.","type":"object","required":["text","user","comment"],"properties":{"comment":{"type":"boolean"},"text":{"type":"boolean"},"user":{"type":"boolean"}}}}},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128},"visibility":{"description":"The visiblity state of this revision.","type":"object","required":["text","user","comment"],"properties":{"comment":{"description":"Whether the comment of the revision is visible.","type":"boolean"},"text":{"description":"Whether the revision's text is visible.","type":"boolean"},"user":{"description":"Whether the author of the revision's text is visible.","type":"boolean"}}}}},"example":{"$schema":"/mediawiki/revision/visibility-change/1.0.1","database":"examplewiki","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-visibility-change","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"prior_state":{"visibility":{"comment":true,"text":true,"user":true}},"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_timestamp":"2020-06-10T18:57:16Z","visibility":{"comment":true,"text":false,"user":true}}},"text/event-stream":{"schema":{"title":"mediawiki/revision/visibility-change","description":"Represents a MW Revision Visibiilty Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id","rev_timestamp","visibility"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. Revisions always have visibility settings, so this object will always contain the visibility settings for the revision before this event.\n","type":"object","properties":{"visibility":{"description":"The prior visiblity state of this revision.","type":"object","required":["text","user","comment"],"properties":{"comment":{"type":"boolean"},"text":{"type":"boolean"},"user":{"type":"boolean"}}}}},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128},"visibility":{"description":"The visiblity state of this revision.","type":"object","required":["text","user","comment"],"properties":{"comment":{"description":"Whether the comment of the revision is visible.","type":"boolean"},"text":{"description":"Whether the revision's text is visible.","type":"boolean"},"user":{"description":"Whether the author of the revision's text is visible.","type":"boolean"}}}}},"example":{"$schema":"/mediawiki/revision/visibility-change/1.0.1","database":"examplewiki","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-visibility-change","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"prior_state":{"visibility":{"comment":true,"text":true,"user":true}},"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_timestamp":"2020-06-10T18:57:16Z","visibility":{"comment":true,"text":false,"user":true}}}}}}}},"/v2/stream/page-create":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-create events","description":"MediaWiki page create events. This page create stream\nis just the first revision create event for each page.\nAs such, it reuses the mediawiki/revision/create schema.\n\n(NOTE: This stream is an alias of mediawiki.page-create)\n\nSchema title: mediawiki/revision/create","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}},"text/event-stream":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}}}}}}},"/v2/stream/page-delete":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-delete events","description":"mediawiki.page-delete events.\n\n(NOTE: This stream is an alias of mediawiki.page-delete)\n\nSchema title: mediawiki/page/delete","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/delete","description":"Represents a MW Page Delete event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/delete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-delete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/delete","description":"Represents a MW Page Delete event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_count":{"description":"The number of revisions of this page at the time of this event. During a delete, this number of revisions will be archived.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/delete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-delete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/page-links-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-links-change events","description":"mediawiki.page-links-change events.\n\n(NOTE: This stream is an alias of mediawiki.page-links-change)\n\nSchema title: mediawiki/page/links-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/links-change","description":"Represents a MW Page Links Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_links":{"description":"The new page links. This map would only contain links that were either added or changed, links that were intact would not be present here. If the link was changed, its previous value would be present in the 'removed_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being added","type":"string"}}}},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_links":{"description":"The old page links. This map would only contain the previous values of the links that were either removed or changed by this event. Links that were intact would not be present here. If the link was changed, its new value would be present in the 'added_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being removed","type":"string"}}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/links-change/1.0.0","added_links":[{"external":false,"link":"example_link"}],"database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-links-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/links-change","description":"Represents a MW Page Links Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_links":{"description":"The new page links. This map would only contain links that were either added or changed, links that were intact would not be present here. If the link was changed, its previous value would be present in the 'removed_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being added","type":"string"}}}},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_links":{"description":"The old page links. This map would only contain the previous values of the links that were either removed or changed by this event. Links that were intact would not be present here. If the link was changed, its new value would be present in the 'added_links' object.\n","type":"array","items":{"type":"object","properties":{"external":{"description":"Whether link is external","type":"boolean"},"link":{"description":"Link being removed","type":"string"}}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/links-change/1.0.0","added_links":[{"external":false,"link":"example_link"}],"database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-links-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/page-move":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-move events","description":"mediawiki.page-move events.\n\n(NOTE: This stream is an alias of mediawiki.page-move)\n\nSchema title: mediawiki/page/move","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/move","description":"Represents a MW Page Move event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string","minLength":1},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"new_redirect_page":{"description":"Information about the new redirect page auto-created at the old title as a result of this page move. This field is optional and will be absent if no redirect page was created.\n","type":"object","required":["page_id","page_title","page_namespace","rev_id"],"properties":{"page_id":{"description":"The page ID of the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":1},"page_namespace":{"description":"This will be the same as prior_state.page_namespace.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"This will be the same as prior_state.page_title.","type":"string","minLength":1},"rev_id":{"description":"The revision created for the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":0}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event.\n","type":"object","required":["page_title","page_namespace","rev_id"],"properties":{"page_namespace":{"description":"The namespace ID this page belonged to before this event.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of this page before this event.","type":"string","minLength":1},"rev_id":{"description":"The head revision of this page before this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/move/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-move"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_namespace":0,"page_title":"example_old_page_title","rev_id":122},"rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/move","description":"Represents a MW Page Move event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","prior_state","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string","minLength":1},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"new_redirect_page":{"description":"Information about the new redirect page auto-created at the old title as a result of this page move. This field is optional and will be absent if no redirect page was created.\n","type":"object","required":["page_id","page_title","page_namespace","rev_id"],"properties":{"page_id":{"description":"The page ID of the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":1},"page_namespace":{"description":"This will be the same as prior_state.page_namespace.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"This will be the same as prior_state.page_title.","type":"string","minLength":1},"rev_id":{"description":"The revision created for the newly created redirect page.","type":"integer","maximum":9007199254740991,"minimum":0}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event.\n","type":"object","required":["page_title","page_namespace","rev_id"],"properties":{"page_namespace":{"description":"The namespace ID this page belonged to before this event.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of this page before this event.","type":"string","minLength":1},"rev_id":{"description":"The head revision of this page before this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/move/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-move"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_namespace":0,"page_title":"example_old_page_title","rev_id":122},"rev_id":123}}}}}}},"/v2/stream/page-properties-change":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-properties-change events","description":"mediawiki.page-properties-change events.\n\n(NOTE: This stream is an alias of mediawiki.page-properties-change)\n\nSchema title: mediawiki/page/properties-change","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/properties-change","description":"Represents a MW Page Properties Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_properties":{"description":"The new page properties. This map would only contain properties that were either added or changed, properties that were intact would not be present here. If the property was changed, its previous value would be present in the 'removed_properties' object.\n","type":"object"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_properties":{"description":"The old page properties. This map would only contain the previous values of the properties that were either removed or changed by this event. Properties that were intact would not be present here. If the property was changed, its new value would be present in the 'added_properties' object.\n","type":"object"},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/properties-change/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-properties-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/properties-change","description":"Represents a MW Page Properties Change event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"added_properties":{"description":"The new page properties. This map would only contain properties that were either added or changed, properties that were intact would not be present here. If the property was changed, its previous value would be present in the 'removed_properties' object.\n","type":"object"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"removed_properties":{"description":"The old page properties. This map would only contain the previous values of the properties that were either removed or changed by this event. Properties that were intact would not be present here. If the property was changed, its new value would be present in the 'added_properties' object.\n","type":"object"},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/properties-change/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-properties-change"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","rev_id":123}}}}}}},"/v2/stream/page-undelete":{"get":{"x-monitor":false,"tags":["streams"],"summary":"page-undelete events","description":"mediawiki.page-undelete events.\n\n(NOTE: This stream is an alias of mediawiki.page-undelete)\n\nSchema title: mediawiki/page/undelete","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/page/undelete","description":"Represents a MW Page Undelete (restore) event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event. If prior_state itself is not present, then this event had no relevant prior state, indicating that it is probably the first time this type has been emitted for this entity. For page undeletes, prior_state will be absent unless the page_id is no longer the same as the page_id it had before it was deleted.\n","type":"object","required":["page_id"],"properties":{"page_id":{"description":"The page ID before this restore as it was in the archive table.","type":"integer","maximum":9007199254740991,"minimum":1}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/undelete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-undelete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_id":123},"rev_id":123}},"text/event-stream":{"schema":{"title":"mediawiki/page/undelete","description":"Represents a MW Page Undelete (restore) event.","type":"object","required":["$schema","database","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The (database) page ID.","type":"integer","maximum":9007199254740991,"minimum":0},"page_is_redirect":{"description":"True if this page is currently a redirect page. This fact is ultimately represented by revision content containing redirect wikitext. If rev_id's content has redirect wikitext, then this page is a redirect. Note that this state is also stored on the Mediawiki page table.\n","type":"boolean"},"page_namespace":{"description":"The namespace ID this page belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","required":["user_text","user_groups","user_is_bot"],"properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"prior_state":{"description":"The prior state of the entity before this event. If a top level entity field is not present in this object, then its value has not changed since the prior event. If prior_state itself is not present, then this event had no relevant prior state, indicating that it is probably the first time this type has been emitted for this entity. For page undeletes, prior_state will be absent unless the page_id is no longer the same as the page_id it had before it was deleted.\n","type":"object","required":["page_id"],"properties":{"page_id":{"description":"The page ID before this restore as it was in the archive table.","type":"integer","maximum":9007199254740991,"minimum":1}}},"rev_id":{"description":"The head revision of the page at the time of this event.","type":"integer","maximum":9007199254740991,"minimum":0}}},"example":{"$schema":"/mediawiki/page/undelete/1.0.0","database":"examplewiki","meta":{"dt":"2020-07-01T00:00:00Z","stream":"medaiwiki.page-undelete"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"example_page_title","prior_state":{"page_id":123},"rev_id":123}}}}}}},"/v2/stream/recentchange":{"get":{"x-monitor":false,"tags":["streams"],"summary":"recentchange events","description":"mediawiki.recentchange events.\n\n(NOTE: This stream is an alias of mediawiki.recentchange)\n\nSchema title: mediawiki/recentchange","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/recentchange","description":"Represents a MW RecentChange event. https://www.mediawiki.org/wiki/Manual:RCFeed\n","type":"object","additionalProperties":true,"required":["$schema","meta"],"properties":{"title":{"description":"Full page name, from Title::getPrefixedText.","type":"string"},"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"type":{"description":"Type of recentchange event (rc_type). One of \"edit\", \"new\", \"log\", \"categorize\", or \"external\"; or a number. (See Manual:Recentchanges table#rc_type)\n","type":"string"},"bot":{"description":"(rc_bot)","type":"boolean"},"comment":{"description":"(rc_comment)","type":"string"},"id":{"description":"ID of the recentchange event (rcid).","type":["integer","null"]},"length":{"description":"Length of old and new change","type":"object","properties":{"new":{"description":"(rc_new_len)","type":["integer","null"]},"old":{"description":"(rc_old_len)","type":["integer","null"]}}},"log_action":{"description":"(rc_log_action)","type":"string"},"log_action_comment":{"type":["string","null"]},"log_id":{"description":"(rc_log_id)","type":["integer","null"]},"log_params":{"description":"Property only exists if event has rc_params.","type":["array","object","string"],"additionalProperties":true},"log_type":{"description":"(rc_log_type)","type":["string","null"]},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"minor":{"description":"(rc_minor).","type":"boolean"},"namespace":{"description":"ID of relevant namespace of affected page (rc_namespace, page_namespace). This is -1 (\"Special\") for log events.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"parsedcomment":{"description":"The rc_comment parsed into simple HTML. Optional","type":"string"},"patrolled":{"description":"(rc_patrolled). This property only exists if patrolling is supported for this event (based on $wgUseRCPatrol, $wgUseNPPatrol).\n","type":"boolean"},"revision":{"description":"Old and new revision IDs","type":"object","properties":{"new":{"description":"(rc_last_oldid)","type":["integer","null"]},"old":{"description":"(rc_this_oldid)","type":["integer","null"]}}},"server_name":{"description":"$wgServerName","type":"string"},"server_script_path":{"description":"$wgScriptPath","type":"string"},"server_url":{"description":"$wgCanonicalServer","type":"string"},"timestamp":{"description":"Unix timestamp (derived from rc_timestamp).","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user":{"description":"(rc_user_text)","type":"string"},"wiki":{"description":"wfWikiID ($wgDBprefix, $wgDBname)","type":"string"}}},"example":{"$schema":"/mediawiki/recentchange/1.0.1","meta":{"dt":"2020-07-01T00:00:00Z","stream":"mediawiki.recentchange"}}},"text/event-stream":{"schema":{"title":"mediawiki/recentchange","description":"Represents a MW RecentChange event. https://www.mediawiki.org/wiki/Manual:RCFeed\n","type":"object","additionalProperties":true,"required":["$schema","meta"],"properties":{"title":{"description":"Full page name, from Title::getPrefixedText.","type":"string"},"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"type":{"description":"Type of recentchange event (rc_type). One of \"edit\", \"new\", \"log\", \"categorize\", or \"external\"; or a number. (See Manual:Recentchanges table#rc_type)\n","type":"string"},"bot":{"description":"(rc_bot)","type":"boolean"},"comment":{"description":"(rc_comment)","type":"string"},"id":{"description":"ID of the recentchange event (rcid).","type":["integer","null"]},"length":{"description":"Length of old and new change","type":"object","properties":{"new":{"description":"(rc_new_len)","type":["integer","null"]},"old":{"description":"(rc_old_len)","type":["integer","null"]}}},"log_action":{"description":"(rc_log_action)","type":"string"},"log_action_comment":{"type":["string","null"]},"log_id":{"description":"(rc_log_id)","type":["integer","null"]},"log_params":{"description":"Property only exists if event has rc_params.","type":["array","object","string"],"additionalProperties":true},"log_type":{"description":"(rc_log_type)","type":["string","null"]},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"minor":{"description":"(rc_minor).","type":"boolean"},"namespace":{"description":"ID of relevant namespace of affected page (rc_namespace, page_namespace). This is -1 (\"Special\") for log events.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"parsedcomment":{"description":"The rc_comment parsed into simple HTML. Optional","type":"string"},"patrolled":{"description":"(rc_patrolled). This property only exists if patrolling is supported for this event (based on $wgUseRCPatrol, $wgUseNPPatrol).\n","type":"boolean"},"revision":{"description":"Old and new revision IDs","type":"object","properties":{"new":{"description":"(rc_last_oldid)","type":["integer","null"]},"old":{"description":"(rc_this_oldid)","type":["integer","null"]}}},"server_name":{"description":"$wgServerName","type":"string"},"server_script_path":{"description":"$wgScriptPath","type":"string"},"server_url":{"description":"$wgCanonicalServer","type":"string"},"timestamp":{"description":"Unix timestamp (derived from rc_timestamp).","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user":{"description":"(rc_user_text)","type":"string"},"wiki":{"description":"wfWikiID ($wgDBprefix, $wgDBname)","type":"string"}}},"example":{"$schema":"/mediawiki/recentchange/1.0.1","meta":{"dt":"2020-07-01T00:00:00Z","stream":"mediawiki.recentchange"}}}}}}}},"/v2/stream/revision-create":{"get":{"x-monitor":false,"tags":["streams"],"summary":"revision-create events","description":"mediawiki.revision-create events.\n\n(NOTE: This stream is an alias of mediawiki.revision-create)\n\nSchema title: mediawiki/revision/create","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}},"text/event-stream":{"schema":{"title":"mediawiki/revision/create","description":"Represents a MW Revision Create event.","type":"object","additionalProperties":false,"required":["$schema","database","dt","meta","page_id","page_is_redirect","page_namespace","page_title","rev_id","rev_timestamp"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"chronology_id":{"description":"Deprecated - no longer populated","type":"string"},"comment":{"description":"The comment left by the user that performed this change.","type":"string"},"database":{"description":"The name of the wiki database this event entity belongs to.","type":"string","minLength":1},"dt":{"description":"ISO-8601 formatted timestamp of when the event occurred/was generated in UTC), AKA 'event time'. This is different than meta.dt, which is used as the time the system received this event.\n","type":"string","format":"date-time","maxLength":128},"meta":{"type":"object","required":["stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"Time the event was received by the system, in UTC ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream (dataset) that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"page_id":{"description":"The page ID of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":1},"page_is_redirect":{"description":"True if this revision is a redirect. This fact is ultimately represented by revision content containing redirect wikitext. If this revision is the head revision of the page, then the page will also be a redirect.\n","type":"boolean"},"page_namespace":{"description":"The namespace of the page this revision belongs to.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"page_title":{"description":"The normalized title of the page this revision belongs to.","type":"string","minLength":1},"parsedcomment":{"description":"The comment left by the user that performed this change parsed into simple HTML. Optional\n","type":"string"},"performer":{"description":"Represents the user that performed this change.","type":"object","properties":{"user_edit_count":{"description":"The number of edits this user has made at the time of this event. Not present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":0},"user_groups":{"description":"A list of the groups this user belongs to. E.g. bot, sysop etc.","type":"array","items":{"type":"string","minLength":1}},"user_id":{"description":"The user id that performed this change. This is optional, and will not be present for anonymous users.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"user_is_bot":{"description":"True if this user is considered to be a bot at the time of this event. This is checked via the $user->isBot() method, which considers both user_groups and user permissions.\n","type":"boolean"},"user_registration_dt":{"description":"The datetime of the user account registration. Not present for anonymous users or if missing in the MW database.\n","type":"string","format":"date-time","maxLength":128},"user_text":{"description":"The text representation of the user that performed this change.","type":"string","minLength":1}}},"rev_content_changed":{"description":"True if the content has changed (rev_sha1 is different than the previous revision one)","type":"boolean"},"rev_content_format":{"description":"The content format of the revision.","type":"string"},"rev_content_model":{"description":"The content model of the revision.","type":"string"},"rev_id":{"description":"The (database) revision ID.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_is_revert":{"description":"Flag indicating whether the edit was a revert.","type":"boolean"},"rev_len":{"description":"The length of the revision text in bytes.","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_minor_edit":{"description":"Flag identifying if the revision is minor.","type":"boolean"},"rev_parent_id":{"description":"The parent revison ID of the revision that this event represents.","type":"integer","maximum":9007199254740991,"minimum":0},"rev_revert_details":{"description":"Details about the revert.","type":"object","required":["rev_revert_method","rev_is_exact_revert","rev_reverted_revs"],"properties":{"rev_is_exact_revert":{"description":"Flag indicating whether the revert was exact, i.e. the contents of the revert revision and restored revision match.\n","type":"boolean"},"rev_original_rev_id":{"description":"The ID of an earlier revision that is being repeated or restored.\n","type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"rev_revert_method":{"description":"The method that was used to perform the revert.","type":"string","enum":["rollback","undo","manual"]},"rev_reverted_revs":{"description":"IDs of revisions that were reverted by this edit, ordered from oldest to newest.\n","type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991}}}},"rev_sha1":{"description":"The sha1 of the revision text.","type":"string"},"rev_slots":{"description":"The revision slots attached to this revision.\n","type":"object","additionalProperties":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]},"required":["main"],"properties":{"main":{"title":"fragment/mediawiki/revision/slot","description":"Schema fields describing a revision slot","$id":"/fragment/mediawiki/revision/slot/1.0.0","$schema":"https://json-schema.org/draft-07/schema#","type":"object","additionalProperties":false,"required":["rev_slot_content_model","rev_slot_sha1","rev_slot_size"],"properties":{"rev_slot_content_model":{"description":"Model of the content (e.g. wikitext, wikibase-mediainfo...)","type":"string"},"rev_slot_origin_rev_id":{"description":"Revision for which this slot was created","type":"integer","maximum":9007199254740991,"minimum":0},"rev_slot_sha1":{"description":"SHA1 of the slot content","type":"string"},"rev_slot_size":{"description":"Size in bytes of the slot content","type":"integer","maximum":9007199254740991,"minimum":0}},"examples":[{"rev_slot_content_model":"dolor","rev_slot_origin_rev_id":1351079888211148,"rev_slot_sha1":"dolor","rev_slot_size":1351079888211148}]}}},"rev_timestamp":{"description":"The revision's creation time in ISO8601 format. This field does not end in '_dt' to better match the field name on the Mediawiki revision table.\n","type":"string","format":"date-time","maxLength":128}}},"example":{"$schema":"/mediawiki/revision/create/2.0.0","database":"examplewiki","dt":"2020-06-10T18:56:00Z","meta":{"domain":"test.wikipedia.org","dt":"2020-06-10T18:57:16Z","stream":"mediawiki.revision-create","uri":"https://examplewiki.wikipedia.org/wiki/TestPage10"},"page_id":123,"page_is_redirect":false,"page_namespace":0,"page_title":"TestPage10","performer":{"user_edit_count":1,"user_groups":["*","user","autoconfirmed"],"user_id":123,"user_is_bot":false,"user_registration_dt":"2016-01-29T21:13:24Z","user_text":"example_user_text"},"rev_content_changed":true,"rev_content_format":"text/x-wiki","rev_content_model":"wikitext","rev_id":123,"rev_is_revert":false,"rev_len":3,"rev_minor_edit":false,"rev_parent_id":122,"rev_sha1":"mr0szy90m5qbn6tek7ch3nebaild3tm","rev_slots":{"main":{"rev_slot_content_model":"wikitext","rev_slot_origin_rev_id":123,"rev_slot_sha1":"2mx9qnkore72az8niqap1s3ycpu1jej","rev_slot_size":20}},"rev_timestamp":"2020-06-10T18:56:00Z"}}}}}}},"/v2/stream/test":{"get":{"x-monitor":false,"tags":["streams"],"summary":"test events","description":"A test event stream. A new event is posted about once a minute.\n\n(NOTE: This stream is an alias of eventgate-main.test.event)\n\nSchema title: test/event","parameters":[{"name":"Last-Event-ID","in":"header","description":"Specifies the Kafka topics, partitions and offsets from which to begin streaming. You may not specify topics that are not configured to be part of this stream endpoint. Example: `[{topic: datacenter1.topic, partition: 0, offset: 12345}, ...]`\n","schema":{"type":"array","items":{"type":"object","properties":{"topic":{"type":"string"},"partition":{"type":"integer"},"offset":{"type":"integer"},"timestamp":{"type":"string"}}}}},{"name":"since","in":"query","description":"If given, this timestamp will be used as the historical starting position in each the requested streams. since should either be an integer UTC milliseconds unix epoch timestamp, or a string timestamp parseable by `Date.parse()`. If the timestamp given does not have any corresponding offsets, it will be ignored, and the data will begin streaming from the latest position in the stream. This parameter is ignored if `Last-Event-ID` is set with offsets (or timestamps) for individual topic partition assignments, e.g. when resuming after a disconnect. NOTE: Historical timestamp assignment is not supported indefinitely. Depending on backend stream configuration, will likely be only one or a few weeks.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"title":"test/event","description":"Schema used for simple tests","type":"object","required":["$schema","meta"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"test":{"type":"string","default":"default value"},"test_map":{"description":"We want to support 'map' types using additionalProperties to specify the value types. (Keys are always strings.)\n","type":"object","additionalProperties":{"type":"string"}}}},"example":{"$schema":"/test/event/1.0.0","meta":{"dt":"2019-01-01T00:00:00Z","stream":"test.event.example"},"test":"specific test value","test_map":{"key1":"val1","key2":"val2"}}},"text/event-stream":{"schema":{"title":"test/event","description":"Schema used for simple tests","type":"object","required":["$schema","meta"],"properties":{"$schema":{"description":"A URI identifying the JSONSchema for this event. This should match an schema's $id in a schema repository. E.g. /schema/title/1.0.0\n","type":"string"},"meta":{"type":"object","required":["dt","stream"],"properties":{"domain":{"description":"Domain the event or entity pertains to","type":"string","minLength":1},"dt":{"description":"UTC event datetime, in ISO-8601 format","type":"string","format":"date-time","maxLength":128},"id":{"description":"Unique ID of this event","type":"string"},"request_id":{"description":"Unique ID of the request that caused the event","type":"string"},"stream":{"description":"Name of the stream/queue/dataset that this event belongs in","type":"string","minLength":1},"uri":{"description":"Unique URI identifying the event or entity","type":"string","format":"uri-reference","maxLength":8192}}},"test":{"type":"string","default":"default value"},"test_map":{"description":"We want to support 'map' types using additionalProperties to specify the value types. (Keys are always strings.)\n","type":"object","additionalProperties":{"type":"string"}}}},"example":{"$schema":"/test/event/1.0.0","meta":{"dt":"2019-01-01T00:00:00Z","stream":"test.event.example"},"test":"specific test value","test_map":{"key1":"val1","key2":"val2"}}}}}}}}}}