Gremlin gamedays API

Create, update and run GameDays

OpenAPI Specification

gremlin-gamedays-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Gremlin agents gamedays API
  description: The API for interacting with the Gremlin Failure-as-a-Service platform
  termsOfService: https://www.gremlin.com/terms_of_service_2017_03_24
  contact:
    name: Gremlin Support
    email: support@gremlin.com
  license:
    name: Gremlin License
    url: https://www.gremlin.com/license_2017_03_24
  version: '1.0'
servers:
- url: https://api.gremlin.com/v1
  description: Gremlin API v1
tags:
- name: gamedays
  description: Create, update and run GameDays
paths:
  /gamedays:
    get:
      tags:
      - gamedays
      summary: Get all GameDays by team.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: getGameDaysForTeam
      parameters:
      - name: pageSize
        in: query
        description: This value determines how many results will be returned per call.
        schema:
          type: integer
          format: int32
        example: None (unlimited)
      - name: pageNumber
        in: query
        description: Get the specific page of GameDays. Only pageNumber or pageToken accepted along with pageSize
        schema:
          type: integer
          format: int32
        example: 1
      - name: pageToken
        in: query
        description: Token corresponding to the last page of GameDays. Pass the pageToken to get the next page of GameDays. Only pageNumber or pageToken accepted along with pageSize
        schema:
          type: string
        example: None (returns first page)
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get all GameDays by team.
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
    post:
      tags:
      - gamedays
      summary: Create new GameDay plan.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: createGameDayPlan
      parameters:
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGameDayPlanRequest'
        required: true
      responses:
        '201':
          description: New GameDay plan created
        '400':
          description: Bad request
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /gamedays/{gameDayId}/summary/images/{imageName}:
    delete:
      tags:
      - gamedays
      summary: Remove an image associated with a gameday
      description: 'Deletes a specific image associated with a gameday.  This does delete the image on the backend so there is *no* recovery

        Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)'
      operationId: delete_1
      parameters:
      - name: imageName
        in: path
        required: true
        schema:
          type: string
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            '*/*': {}
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
    patch:
      tags:
      - gamedays
      summary: Upload an image to a given gameday
      description: "This takes an image as a multipart/form-data (parameter name \"file\") and uploads it to Gremlin's backend and associates it with a given Gameday. \nNOTE: imageNames must be S3 compatible strings ([a-zA-Z0-9!-_'\\(\\)]) with under 1000 characters (including file type)\nRequires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)"
      operationId: put_1
      parameters:
      - name: imageName
        in: path
        required: true
        schema:
          maxLength: 987
          minLength: 0
          pattern: '[a-zA-Z0-9\!\-\_\.\*\''\(\)\ ]+'
          type: string
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  $ref: '#/components/schemas/FormDataContentDisposition'
      responses:
        default:
          description: default response
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/GameDayResponse'
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /gamedays/{gameDayId}/summary/export:
    get:
      tags:
      - gamedays
      summary: Exports GameDay Summary PDF file.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: export
      parameters:
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: GameDay Summary PDF file
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /gamedays/{gameDayId}:
    get:
      tags:
      - gamedays
      summary: Get GameDay details by id.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: getGameDay
      parameters:
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get GameDay details by id
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
    patch:
      tags:
      - gamedays
      summary: Updates a GameDay plan.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: updateGameDay
      parameters:
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGameDayPlanRequest'
        required: true
      responses:
        '200':
          description: Updates a GameDay plan.
        '400':
          description: Bad request
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /gamedays/{gameDayId}/runs/{scenarioId}:
    post:
      tags:
      - gamedays
      summary: Runs specific Scenario associated with GameDay.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: runScenarioForGameDay
      parameters:
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: scenarioId
        in: path
        required: true
        schema:
          type: string
      - name: scenarioVersion
        in: query
        description: Expected version of scenario. If the current version is different this will receive a 418 with the correct version
        schema:
          type: integer
          format: int32
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Runs specific Scenario associated with GameDay
        '404':
          description: Not found
        '409':
          description: Conflicting execution in progress
        '418':
          description: Mismatch of current version of scenario with the one passed
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
  /gamedays/{gameDayId}/summary:
    patch:
      tags:
      - gamedays
      summary: Updates a GameDay summary.
      description: Requires the privilege [`MINIMUM_TEAM_PRIVILEGES`](https://www.gremlin.com/docs/user-management/access-control/#privileges)
      operationId: updateGameDaySummary
      parameters:
      - name: gameDayId
        in: path
        required: true
        schema:
          type: string
      - name: teamId
        in: query
        description: Required when using company session token.
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGameDaySummaryRequest'
        required: true
      responses:
        '200':
          description: Updates a GameDay summary.
        '400':
          description: Bad request
        '404':
          description: Not found
        '403':
          description: 'User requires privilege for target team: MINIMUM_TEAM_PRIVILEGES'
        '401':
          description: Authorization header missing or malformed. Please provide proper credentials in the authorization header.
      security:
      - privilege:
        - MINIMUM_TEAM_PRIVILEGES
components:
  schemas:
    ExternalActionNode:
      type: object
      allOf:
      - $ref: '#/components/schemas/GraphNodeObject'
      - type: object
        properties:
          externalActionRequest:
            $ref: '#/components/schemas/ExternalActionRequest'
          state:
            $ref: '#/components/schemas/State'
          stateDetails:
            $ref: '#/components/schemas/ExternalCallFailedException'
    ResponseBodyEvaluation:
      required:
      - op
      - predicates
      type: object
      properties:
        op:
          type: string
          description: The operation to logically combine predicates into a success or failure
          enum:
          - AND
          - OR
        predicates:
          type: array
          description: The list of predicates to evaluate against the status check response body
          items:
            $ref: '#/components/schemas/PredicateObject'
      description: The configuration for evaluating the success of a response body
    StatusCheckNodeRequest:
      type: object
      properties:
        type:
          type: string
      discriminator:
        propertyName: type
    ScenarioRunResults:
      type: object
      properties:
        status:
          type: string
          enum:
          - Passed
          - Failed
          - Unsure
        incidentDetected:
          type: boolean
        incidentMitigated:
          type: boolean
    GameDayPlan:
      type: object
      properties:
        name:
          type: string
        goal:
          type: string
        type:
          type: string
          enum:
          - Exploratory
          - TrainTeams
          - ValidatePastOutages
          - TuneObservability
          - Other
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedAt:
          type: string
          format: date-time
        participants:
          type: array
          items:
            $ref: '#/components/schemas/Participant'
        scenarios:
          type: array
          items:
            $ref: '#/components/schemas/ScenarioSummary'
        environment:
          type: string
        dashboards:
          type: array
          items:
            type: string
            format: uri
        runbooks:
          type: array
          items:
            type: string
            format: uri
    GameDaySummary:
      type: object
      properties:
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedAt:
          type: string
          format: date-time
        notes:
          type: string
        actions:
          type: string
        gameDayImages:
          type: array
          items:
            type: string
    ScenarioRunResponse:
      type: object
      properties:
        scenarioId:
          type: string
        runNumber:
          type: integer
          format: int64
        orgId:
          type: string
        name:
          type: string
        description:
          type: string
        hypothesis:
          type: string
        stageInfo:
          type: object
          additionalProperties:
            type: object
        createdBy:
          type: string
        createdByFirstName:
          type: string
        createdByLastName:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        createSource:
          type: string
        triggerSource:
          type: string
          enum:
          - MANUAL
          - RUN_ALL
          - SCHEDULED
          - RECURRING_SCHEDULE
        graph:
          $ref: '#/components/schemas/ScenarioRunGraph'
        resultNotes:
          type: string
        resultFlags:
          type: object
          additionalProperties:
            type: boolean
        results:
          $ref: '#/components/schemas/ScenarioRunResults'
        scheduleId:
          type: string
        scenarioEditCounterAtRunTime:
          type: integer
          format: int32
        scenarioRunImages:
          type: array
          items:
            type: string
        gameDayInfo:
          $ref: '#/components/schemas/GameDayInfo'
        passCriteria:
          type: string
          enum:
          - ALL_PASS
          - AT_LEAST_ONE_FAILED
        largeScaleTestId:
          type: string
    HasCompareFunctionObject:
      type: object
    FormDataContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
        name:
          type: string
    EndpointConfiguration:
      required:
      - url
      type: object
      properties:
        url:
          type: string
          description: The URL of the status check
          format: url
        method:
          type: string
          description: The method type of the status check
          enum:
          - GET
          - POST
          - PUT
          - PATCH
        headers:
          type: object
          additionalProperties:
            type: string
            description: Optional request headers to be used when the status check is invoked
          description: Optional request headers to be used when the status check is invoked
        payload:
          type: string
          description: Payload for POST type of request
        headersArn:
          type: string
          description: Optional request headers pulled from a remote AWS resource holding JSON-encoded key-values that make up the headers
    ExternalActionRequest:
      required:
      - type
      type: object
      properties:
        semanticType:
          type: string
        type:
          type: string
      discriminator:
        propertyName: type
    GameDayResponse:
      type: object
      properties:
        guid:
          type: string
        teamId:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        plan:
          $ref: '#/components/schemas/GameDayPlan'
        summary:
          $ref: '#/components/schemas/GameDaySummary'
        execution:
          $ref: '#/components/schemas/GameDayExecution'
    CreateGameDayPlanRequest:
      title: CreateGameDayPlanRequest.Input
      required:
      - name
      type: object
      properties:
        name:
          type: string
        goal:
          type: string
        type:
          type: string
          enum:
          - Exploratory
          - TrainTeams
          - ValidatePastOutages
          - TuneObservability
          - Other
        participants:
          maxItems: 20
          minItems: 0
          type: array
          items:
            $ref: '#/components/schemas/Participant'
        scenarioIds:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
        environment:
          type: string
        dashboards:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
            format: uri
        runbooks:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
            format: uri
      description: Represents a request to create a GameDay plan for a team
    GameDayExecution:
      type: object
      properties:
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
        lastRunAt:
          type: string
          format: date-time
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExecutionResult'
    ExecutionResult:
      type: object
      properties:
        scenario:
          $ref: '#/components/schemas/ScenarioSummary'
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        runs:
          type: array
          items:
            $ref: '#/components/schemas/ScenarioRunResponse'
        lastResult:
          type: string
          enum:
          - Passed
          - Failed
          - Unsure
          - Completed_Input_Results
          - Failed_Input_Results
          - Halted_Input_Results
          - SetupFailed_Input_Results
          - Setup
          - Active
        lastResultAt:
          type: string
          format: date-time
        lastRunAt:
          type: string
          format: date-time
        lastRunVersion:
          type: integer
          format: int32
    StatusCheckNode:
      type: object
      allOf:
      - $ref: '#/components/schemas/GraphNodeObject'
      - type: object
        properties:
          state:
            $ref: '#/components/schemas/State'
          name:
            type: string
          description:
            type: string
          thirdPartyPresets:
            type: string
          category:
            type: string
            enum:
            - ERRORS
            - LATENCY
            - REQUESTS
            - UNKNOWN
          requestConfiguration:
            $ref: '#/components/schemas/StatusCheckNodeRequest'
          endpointConfiguration:
            $ref: '#/components/schemas/EndpointConfiguration'
          rawEndpointConfiguration:
            $ref: '#/components/schemas/EndpointConfiguration'
          evaluationConfiguration:
            $ref: '#/components/schemas/EvaluationConfiguration'
          statusCheckId:
            type: string
          externalIntegrationId:
            type: string
          statusCheckReferenceId:
            type: string
          isPrivateNetwork:
            type: boolean
          isHaltable:
            type: boolean
          payload:
            type: string
          isAutoGenerated:
            type: boolean
          autoGeneratedStatusCheckId:
            type: string
          resourceIdentifier:
            type: string
          statusCheckRequest:
            $ref: '#/components/schemas/StatusCheckNodeRequest'
          intervalSeconds:
            type: integer
            format: int32
          additionalTimeInSecsToRunAfterCompletion:
            type: integer
            format: int32
    RollbackExternalActionNode:
      type: object
      allOf:
      - $ref: '#/components/schemas/GraphNodeObject'
      - type: object
        properties:
          referenceExternalActionId:
            type: string
          state:
            $ref: '#/components/schemas/State'
          stateDetails:
            $ref: '#/components/schemas/ExternalCallFailedException'
          externalActionRequest:
            $ref: '#/components/schemas/ExternalActionRequest'
          externalActionLifecycle:
            type: string
            enum:
            - NotStarted
            - Active
            - HaltRequested
            - Successful
            - Halted
            - Failed
          didExternalActionNoOp:
            type: boolean
    GraphNodeObject:
      type: object
      properties:
        type:
          type: string
          enum:
          - Concurrent
          - ContinuousStatusCheck
          - StatusCheckNode
          - Delay
          - InfraAttack
          - SynchronousStatusCheck
          - Continuous
          - FailureFlag
          - ExternalAction
          - RollbackExternalAction
        id:
          type: string
        state:
          type: object
          readOnly: true
        guid:
          type: string
        next:
          type: string
      discriminator:
        propertyName: type
    UpdateGameDayPlanRequest:
      title: UpdateGameDayPlanRequest.Input
      type: object
      properties:
        name:
          type: string
        goal:
          type: string
        type:
          type: string
          enum:
          - Exploratory
          - TrainTeams
          - ValidatePastOutages
          - TuneObservability
          - Other
        participants:
          maxItems: 20
          minItems: 0
          type: array
          items:
            $ref: '#/components/schemas/Participant'
        scenarioIds:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
        environment:
          type: string
        dashboards:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
            format: uri
        runbooks:
          maxItems: 20
          minItems: 0
          type: array
          items:
            type: string
            format: uri
      description: Represents a request to update a GameDay plan for a team
    UpdateGameDaySummaryRequest:
      title: UpdateGameDaySummaryRequest.Input
      type: object
      properties:
        notes:
          type: string
        actions:
          type: string
      description: Represents a request to update a GameDay summary for a team
    ScenarioRunGraph:
      type: object
      properties:
        nodes:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/GraphNodeObject'
        start_id:
          type: string
          writeOnly: true
        observers:
          type: array
          items:
            $ref: '#/components/schemas/StatusCheckNode'
        current_id:
          type: string
          writeOnly: true
        external_actions:
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/ExternalActionNode'
        external_rollbacks:
          type: array
          writeOnly: true
          items:
            $ref: '#/components/schemas/RollbackExternalActionNode'
        startId:
          type: string
        externalActions:
          type: array
          items:
            $ref: '#/components/schemas/ExternalActionNode'
        externalRollbacks:
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/RollbackExternalActionNode'
        currentId:
          type: string
          readOnly: true
        next:
          $ref: '#/components/schemas/GraphNodeObject'
        nextId:
          type: string
        nodesRecursive:
          type: array
          items:
            $ref: '#/components/schemas/GraphNodeObject'
        expectedLengthWithDelays:
          type: integer
          format: int32
          readOnly: true
        eligibleForServiceCreation:
          type: boolean
        expectedLength:
          type: integer
          format: int32
          readOnly: true
        attackTypeQuantity:
          type: object
          additionalProperties:
            type: integer
            format: int64
            readOnly: true
          readOnly: true
        providersCountForNodes:
          type: object
          additionalProperties:
            type: integer
            format: int32
            readOnly: true
          readOnly: true
    State:
      type: object
      properties:
        lifecycle:
          type: string
          enum:
          - NotStarted
          - Active
          - HaltRequested
          - Successful
          - Halted
          - Failed
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        failedReason:
          type: string
        nodeHaltedByGuid:
          type: string
        nodeHaltedById:
          type: string
      readOnly: true
    EvaluationConfiguration:
      required:
      - okStatusCodes
      type: object
      properties:
        okLatencyMaxMs:
          type: integer
          description: The maximum latency in milliseconds for a successful status check
          format: int32
        okStatusCodes:
          type: array
          description: The list of successful response status codes for a successful status check
          items:
            type: string
            description: The list of successful response status codes for a successful status check
        responseBodyEvaluation:
          $ref: '#/components/schemas/ResponseBodyEvaluation'
      description: The configuration for evaluating the success/failure of a status check
    GameDayInfo:
      type: object
      properties:
        guid:
          type: string
        name:
          type: string
    ScenarioSummary:
      type: object
      properties:
        guid:
          type: string
        name:
          type: string
    Participant:
      title: CreateGameDayPlanRequest.Participant
      required:
      - position
      type: object
      properties:
        position:
          type: string
          enum:
          - Owner
          - Coordinator
          - Observer
          - Reporter
        email:
          type: string
      description: Represents a participant in the GameDay
    ExternalCallFailedException:
      type: object
      properties:
        cause:
          type: object
          properties:
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  methodName:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  className:
                    type: string
                  nativeMethod:
                    type: boolean
            message:
              type: string
            localizedMessage:
              type: string
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              className:
                type: string
              nativeMethod:
                type: boolean
        errorCode:
          type: string
        requestId:
          type: string
        statusCode:
          type: integer
          format: int32
        message:
          type: string
        suppressed:
          type: array
          items:
            type: object
            properties:
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    className:
                      type: string
                    nativeMethod:
                      type: boolean
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: strin

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gremlin/refs/heads/main/openapi/gremlin-gamedays-api-openapi.yml