CreateIssueRequest
Files a new issue. Creating never deduplicates: search first, and update or record an occurrence on an existing issue instead of filing a second one. The reporter, number and timestamps come from the caller and the server, never from the request.
Properties
| Name | Type | Description |
|---|---|---|
| confidence | string | How sure the reporter is that the problem is real. |
| description | string | The current understanding, in markdown, or null for none. |
| entities | object | The `entity:*` tags it concerns; an unprefixed key is put in the `entity:` namespace. Keys are stored in lower case, and values as given; searches match both in any case. |
| evidence | array | Things a person can open to check the claim. |
| expiresAt | string | When the issue stops applying. |
| fingerprint | string | An optional free-form key for exact-match search. |
| labels | array | Categories; reuse the labels search reports as in use. |
| links | array | Related pipelines, investigations, memories, suggestions and external tickets. |
| nextStep | string | The concrete next action and who it waits on. |
| priority | string | How soon someone should act; agents must set it. A person who leaves it null files at `P2`, unlocked, so triage can set it. |
| revisitAt | string | When someone should check back. |
| state | string | The open state to file it in; null files it in `TRIAGE`. Agents may file only in `TRIAGE`, or `READY` when their handoff mode allows it. |
| teamIds | array | The teams that may see it; people only, from the teams they can edit issues of (any for an organization-wide person). Absent: a team-scoped person's own teams, and none for an organization-wide person |
| title | string | One line naming the problem, not the symptom's timestamp. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/grepr/json-schema/grepr-create-issue-request-schema.json",
"title": "CreateIssueRequest",
"description": "Files a new issue. Creating never deduplicates: search first, and update or record an occurrence on an existing issue instead of filing a second one. The reporter, number and timestamps come from the caller and the server, never from the request.",
"x-generated": "2026-10-29",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/grepr-openapi.json#/components/schemas/CreateIssueRequest",
"properties": {
"confidence": {
"description": "How sure the reporter is that the problem is real.",
"enum": [
"CONFIRMED",
"LIKELY",
"UNVERIFIED"
],
"type": "string"
},
"description": {
"description": "The current understanding, in markdown, or null for none.",
"maxLength": 32768,
"minLength": 0,
"type": "string"
},
"entities": {
"additionalProperties": {
"description": "The `entity:*` tags it concerns; an unprefixed key is put in the `entity:` namespace. Keys are stored in lower case, and values as given; searches match both in any case.",
"type": "string"
},
"description": "The `entity:*` tags it concerns; an unprefixed key is put in the `entity:` namespace. Keys are stored in lower case, and values as given; searches match both in any case.",
"type": "object"
},
"evidence": {
"description": "Things a person can open to check the claim.",
"items": {
"$ref": "#/$defs/IssueEvidence"
},
"maxItems": 50,
"minItems": 0,
"type": "array"
},
"expiresAt": {
"description": "When the issue stops applying.",
"format": "date-time",
"type": "string"
},
"fingerprint": {
"description": "An optional free-form key for exact-match search.",
"maxLength": 256,
"minLength": 0,
"type": "string"
},
"labels": {
"description": "Categories; reuse the labels search reports as in use.",
"items": {
"description": "Categories; reuse the labels search reports as in use.",
"type": "string"
},
"maxItems": 20,
"minItems": 0,
"type": "array"
},
"links": {
"description": "Related pipelines, investigations, memories, suggestions and external tickets.",
"items": {
"$ref": "#/$defs/IssueLink"
},
"maxItems": 50,
"minItems": 0,
"type": "array"
},
"nextStep": {
"description": "The concrete next action and who it waits on.",
"maxLength": 4096,
"minLength": 0,
"type": "string"
},
"priority": {
"description": "How soon someone should act; agents must set it. A person who leaves it null files at `P2`, unlocked, so triage can set it.",
"enum": [
"P0",
"P1",
"P2",
"P3"
],
"type": "string"
},
"revisitAt": {
"description": "When someone should check back.",
"format": "date-time",
"type": "string"
},
"state": {
"description": "The open state to file it in; null files it in `TRIAGE`. Agents may file only in `TRIAGE`, or `READY` when their handoff mode allows it.",
"enum": [
"TRIAGE",
"READY",
"IN_PROGRESS",
"WAITING",
"MONITORING",
"CLOSED"
],
"type": "string"
},
"teamIds": {
"description": "The teams that may see it; people only, from the teams they can edit issues of (any for an organization-wide person). Absent: a team-scoped person's own teams, and none for an organization-wide person, which keeps the issue to organization-wide users.",
"items": {
"description": "The teams that may see it; people only, from the teams they can edit issues of (any for an organization-wide person). Absent: a team-scoped person's own teams, and none for an organization-wide person, which keeps the issue to organization-wide users.",
"type": "string"
},
"maxItems": 50,
"minItems": 0,
"type": "array"
},
"title": {
"description": "One line naming the problem, not the symptom's timestamp.",
"maxLength": 200,
"minLength": 0,
"type": "string"
}
},
"required": [
"confidence",
"title"
],
"type": "object",
"$defs": {
"IssueEvidence": {
"description": "Something a person can open to check an issue's claim.",
"properties": {
"from": {
"description": "Start of a log query's time range, or null.",
"format": "date-time",
"type": "string"
},
"kind": {
"description": "What the evidence points at.",
"enum": [
"LOG_QUERY",
"EVENT",
"URL"
],
"type": "string"
},
"label": {
"description": "A short description of what it shows, or null.",
"maxLength": 200,
"minLength": 0,
"type": "string"
},
"target": {
"description": "The Grepr log query for LOG_QUERY, the event id for EVENT, or an http(s) URL for URL.",
"maxLength": 4096,
"minLength": 0,
"type": "string"
},
"to": {
"description": "End of a log query's time range, or null.",
"format": "date-time",
"type": "string"
}
},
"required": [
"kind",
"target"
],
"type": "object"
},
"IssueLink": {
"description": "A typed reference from an issue to something related. A link grants nothing: the linked page applies its own access checks. A link to an issue the reader can't see comes back with only its kind and `hidden`, so an issue reveals nothing about another team's.",
"properties": {
"hidden": {
"description": "True for a link to an issue the reader can't see. Set only in responses.",
"type": [
"boolean",
"null"
]
},
"kind": {
"description": "What the link points at.",
"enum": [
"PIPELINE",
"INVESTIGATION",
"MEMORY",
"AGENT_SUGGESTION",
"EXTERNAL",
"ISSUE"
],
"type": "string"
},
"label": {
"description": "A short description, or null.",
"maxLength": 200,
"minLength": 0,
"type": "string"
},
"target": {
"description": "Null only for a hidden issue link in a response.",
"maxLength": 4096,
"minLength": 0,
"type": [
"string",
"null"
]
}
},
"required": [
"kind"
],
"type": "object"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/grepr-create-issue-request"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.