{
  "components": {
    "schemas": {
      "Achievement": {
        "properties": {
          "achievementType": {
            "enum": [
              "Achievement",
              "ApprenticeshipCertificate",
              "Assessment",
              "Assignment",
              "AssociateDegree",
              "Award",
              "BachelorDegree",
              "Badge",
              "Certificate",
              "CertificateOfCompletion",
              "Certification",
              "CommunityService",
              "Competency",
              "Course",
              "CoCurricular",
              "Degree",
              "Diploma",
              "DoctoralDegree",
              "Fieldwork",
              "GeneralEducationDevelopment",
              "JourneymanCertificate",
              "LearningProgram",
              "License",
              "MasterCertificate",
              "MasterDegree",
              "Membership",
              "MicroCredential",
              "ProfessionalDoctorate",
              "QualityAssuranceCredential",
              "ResearchDoctorate",
              "SecondarySchoolDiploma"
            ],
            "nullable": true,
            "type": "string"
          },
          "alignment": {
            "items": {
              "$ref": "#/components/schemas/Alignment"
            },
            "type": "array"
          },
          "creditsAvailable": {
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "criteria": {
            "$ref": "#/components/schemas/Criteria"
          },
          "description": {
            "type": "string"
          },
          "fieldOfStudy": {
            "nullable": true,
            "type": "string"
          },
          "humanCode": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "image": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Image"
              }
            ],
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "specialization": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "alignment",
          "criteria",
          "description",
          "id",
          "name",
          "type"
        ],
        "type": "object"
      },
      "AchievementSubject": {
        "properties": {
          "achievement": {
            "$ref": "#/components/schemas/Achievement"
          },
          "activityEndDate": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "activityStartDate": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "identifier": {
            "items": {
              "$ref": "#/components/schemas/IdentityObject"
            },
            "type": "array"
          },
          "licenseNumber": {
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "nullable": true,
            "type": "string"
          },
          "role": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "achievement",
          "identifier",
          "type"
        ],
        "type": "object"
      },
      "Alignment": {
        "properties": {
          "targetCode": {
            "nullable": true,
            "type": "string"
          },
          "targetDescription": {
            "nullable": true,
            "type": "string"
          },
          "targetFramework": {
            "nullable": true,
            "type": "string"
          },
          "targetName": {
            "type": "string"
          },
          "targetType": {
            "enum": [
              "ceasn:Competency",
              "ceterms:Credential",
              "CFItem",
              "CFRubric",
              "CFRubricCriterion",
              "CFRubricCriterionLevel",
              "CTDL"
            ],
            "nullable": true,
            "type": "string"
          },
          "targetUrl": {
            "type": "string"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "targetName",
          "targetUrl",
          "type"
        ],
        "type": "object"
      },
      "AlignmentObject": {
        "properties": {
          "targetCode": {
            "nullable": true,
            "type": "string"
          },
          "targetDescription": {
            "nullable": true,
            "type": "string"
          },
          "targetFramework": {
            "nullable": true,
            "type": "string"
          },
          "targetName": {
            "type": "string"
          },
          "targetUrl": {
            "type": "string"
          }
        },
        "required": [
          "targetName",
          "targetUrl"
        ],
        "type": "object"
      },
      "ApiAlignment": {
        "description": "List of objects describing objectives or educational standards",
        "properties": {
          "displayAsSkill": {
            "type": "boolean"
          },
          "targetCode": {
            "nullable": true,
            "type": "string"
          },
          "targetDescription": {
            "nullable": true,
            "type": "string"
          },
          "targetFramework": {
            "nullable": true,
            "type": "string"
          },
          "targetName": {
            "type": "string"
          },
          "targetUrl": {
            "type": "string"
          }
        },
        "required": [
          "displayAsSkill",
          "targetName",
          "targetUrl"
        ],
        "type": "object"
      },
      "ApiBadgeSkillLinkingPreferences": {
        "description": "Skill library preferences",
        "properties": {
          "indeedRegion": {
            "description": "Region used if badge skill link mode is set to INDEED",
            "example": "us",
            "nullable": true,
            "type": "string"
          },
          "linkMode": {
            "description": "Linking strategy for skill on the UI",
            "enum": [
              "DEFAULT",
              "INDEED"
            ],
            "type": "string"
          },
          "serverUri": {
            "description": "Uri used in case of OSMT skill library",
            "example": "https://example.com/",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "description": "Type for the badge skill source library",
            "enum": [
              "NONE",
              "FLEXIBLE",
              "OSMT",
              "TALENT_NEURON"
            ],
            "example": "TALENT_NEURON",
            "type": "string"
          }
        },
        "required": [
          "linkMode",
          "type"
        ],
        "type": "object"
      },
      "ApiCustomEntityPropertyChoiceValue": {
        "description": "Choice values for this property",
        "properties": {
          "id": {
            "description": "ID for this choice value",
            "example": "65663ceb977692fcafcea0b9",
            "type": "string"
          },
          "label": {
            "description": "Label for this choice value",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ],
        "type": "object"
      },
      "ApiCustomEntityPropertyDefinition": {
        "description": "Custom entity property definitions for this issuer",
        "properties": {
          "choiceValues": {
            "description": "Choice values for this property",
            "items": {
              "$ref": "#/components/schemas/ApiCustomEntityPropertyChoiceValue"
            },
            "type": "array"
          },
          "label": {
            "description": "Label for this property",
            "example": "Award Type",
            "type": "string"
          },
          "propertyId": {
            "description": "ID for this property",
            "example": "66bf8231d88b51901d49d637",
            "type": "string"
          },
          "propertyType": {
            "description": "Type of the custom entity property",
            "enum": [
              "NUMBER",
              "STRING_CHOICE",
              "STRING_CHOICE_MULTI",
              "STRING_SINGLE_LINE",
              "STRING_MARKDOWN"
            ],
            "example": "STRING_CHOICE",
            "type": "string"
          },
          "public": {
            "description": "Whether this property is public",
            "example": true,
            "type": "boolean"
          },
          "required": {
            "description": "Whether this property is required",
            "example": true,
            "type": "boolean"
          },
          "subLabel": {
            "description": "Sub-label for this property",
            "example": "Type of award",
            "nullable": true,
            "type": "string"
          },
          "targetEntityType": {
            "description": "Target entity type for this property",
            "enum": [
              "BADGE_CLASS"
            ],
            "example": "BADGE_CLASS",
            "type": "string"
          }
        },
        "required": [
          "choiceValues",
          "label",
          "propertyId",
          "propertyType",
          "public",
          "required",
          "targetEntityType"
        ],
        "type": "object"
      },
      "ApiCustomPropertyValue": {
        "description": "Depending on the issuer level property definition, exactly one of stringValue, doubleValue and arrayValue is required.",
        "properties": {
          "arrayValue": {
            "description": "The values for a multi-choice type property.",
            "items": {
              "description": "The values for a multi-choice type property.",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "doubleValue": {
            "description": "The value for a number type property.",
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "propertyId": {
            "description": "ID of the custom property defined at the issuer level.",
            "example": "67b32887e2a7a7d5f7adabf1",
            "type": "string"
          },
          "public": {
            "description": "If true, property will be visible on public pages. Can not be true if the issuer level definition is not public.",
            "type": "boolean"
          },
          "stringValue": {
            "description": "The text value for text-type properties, or the ID of the choice in case of a single choice type property.",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "propertyId",
          "public"
        ],
        "type": "object"
      },
      "ApiIssuerPreferences": {
        "description": "Preferences for this issuer",
        "properties": {
          "customPropertyDefinitions": {
            "description": "Custom entity property definitions for this issuer",
            "items": {
              "$ref": "#/components/schemas/ApiCustomEntityPropertyDefinition"
            },
            "type": "array"
          },
          "defaultPrintCertTemplateId": {
            "description": "Default print certificate template ID",
            "example": "5f4e4e4e2dc038241ad01d83",
            "nullable": true,
            "type": "string"
          },
          "enabledPrintCertTemplateIds": {
            "description": "Enabled print certificate template IDs",
            "example": [
              "5f4e4e4e2dc038241ad01d83",
              "6f4e4e4e2dc038241ad01d83"
            ],
            "items": {
              "description": "Enabled print certificate template IDs",
              "example": "[\"5f4e4e4e2dc038241ad01d83\",\"6f4e4e4e2dc038241ad01d83\"]",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "ob3Enabled": {
            "description": "Whether OB3 is enabled for this issuer",
            "example": false,
            "type": "boolean"
          },
          "showOnOrgPublicPage": {
            "description": "Whether this issuer is shown on the organization's public page",
            "example": true,
            "type": "boolean"
          }
        },
        "required": [
          "customPropertyDefinitions",
          "enabledPrintCertTemplateIds",
          "ob3Enabled",
          "showOnOrgPublicPage"
        ],
        "type": "object"
      },
      "ApiOB3Properties": {
        "properties": {
          "creditHours": {
            "description": "Credit hours associated with this entity, or credit hours possible.",
            "example": 36.0,
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "fieldOfStudy": {
            "description": "Category, subject, area of study, discipline, or general branch of knowledge.",
            "example": "Research",
            "nullable": true,
            "type": "string"
          },
          "humanCode": {
            "description": "The code, generally human readable, associated with an achievement",
            "example": "R1",
            "nullable": true,
            "type": "string"
          },
          "specialization": {
            "description": "Name given to the focus, concentration, or specific area of study defined in the achievement.",
            "example": "Computer Science Research",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiOB3PropertiesForUpdate": {
        "properties": {
          "creditHours": {
            "description": "Credit hours associated with this entity, or credit hours possible.",
            "example": 36.0,
            "format": "float",
            "type": "number"
          },
          "fieldOfStudy": {
            "description": "Category, subject, area of study, discipline, or general branch of knowledge.",
            "example": "Research",
            "type": "string"
          },
          "humanCode": {
            "description": "The code, generally human readable, associated with an achievement",
            "example": "R1",
            "type": "string"
          },
          "specialization": {
            "description": "Name given to the focus, concentration, or specific area of study defined in the achievement.",
            "example": "Computer Science Research",
            "type": "string"
          }
        },
        "required": [
          "creditHours",
          "fieldOfStudy",
          "humanCode",
          "specialization"
        ],
        "type": "object"
      },
      "ApiOb3AwardProperties": {
        "properties": {
          "activityEnd": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "activityStart": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "licenseNumber": {
            "nullable": true,
            "type": "string"
          },
          "role": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ApiOb3AwardPropertiesForUpdating": {
        "properties": {
          "activityEnd": {
            "format": "date-time",
            "type": "string"
          },
          "activityStart": {
            "format": "date-time",
            "type": "string"
          },
          "licenseNumber": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "activityEnd",
          "activityStart",
          "licenseNumber",
          "role"
        ],
        "type": "object"
      },
      "ApiPreferences": {
        "properties": {
          "customPropertyValues": {
            "description": "Values for the custom properties defined on the issuer.",
            "items": {
              "$ref": "#/components/schemas/ApiCustomPropertyValue"
            },
            "type": "array"
          },
          "defaultPrintCertTemplateId": {
            "description": "The ID of the certificate template which should be used by default for printing badge awards. Must be one of the enabled certificates.",
            "example": "61e9d238c5afe622816febb3",
            "nullable": true,
            "type": "string"
          },
          "enabledPrintCertTemplateIds": {
            "description": "The IDs of the certificate templates which are enabled for printing badge awards for recipients. If empty or missing, all issuer level enabled certificates will be enabled.",
            "items": {
              "example": "61e9d238c5afe622816febb3",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "includeOnPublicPages": {
            "description": "Whether the badge class should be included on public pages",
            "example": true,
            "type": "boolean"
          }
        },
        "required": [
          "enabledPrintCertTemplateIds"
        ],
        "type": "object"
      },
      "ApiPreferencesForUpdate": {
        "properties": {
          "customPropertyValues": {
            "description": "Values for the custom properties defined on the issuer.",
            "items": {
              "$ref": "#/components/schemas/ApiCustomPropertyValue"
            },
            "type": "array"
          },
          "defaultPrintCertTemplateId": {
            "description": "The ID of the certificate template which should be used by default for printing badge awards. Must be one of the enabled certificates.",
            "example": "61e9d238c5afe622816febb3",
            "type": "string"
          },
          "enabledPrintCertTemplateIds": {
            "description": "The IDs of the certificate templates which are enabled for printing badge awards for recipients.",
            "items": {
              "example": "61e9d238c5afe622816febb3",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "includeOnPublicPages": {
            "description": "Whether the badge class should be included on public pages",
            "example": true,
            "type": "boolean"
          }
        },
        "required": [
          "enabledPrintCertTemplateIds"
        ],
        "type": "object"
      },
      "AssertionErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "ALREADY_AWARDED",
          "IMAGE_DOWNLOAD_FAILED",
          "IMAGE_TOO_LARGE",
          "IMAGE_VALIDATION_FAILED"
        ],
        "type": "string"
      },
      "AssertionExtension": {
        "properties": {
          "value": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "AuthErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "ACCOUNT_LOCKED",
          "INVALID_CREDENTIALS",
          "LOGIN_THROTTLED",
          "VERIFICATION_TOKEN_INVALID",
          "PASSWORD_RESET_REQUIRED",
          "REAUTHENTICATION_REQUIRED"
        ],
        "type": "string"
      },
      "BCV1BadgeConnectAPI": {
        "properties": {
          "apiBase": {
            "type": "string"
          },
          "authorizationUrl": {
            "type": "string"
          },
          "image": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "privacyPolicyUrl": {
            "type": "string"
          },
          "registrationUrl": {
            "type": "string"
          },
          "scopesOffered": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "termsOfServiceUrl": {
            "type": "string"
          },
          "tokenUrl": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "apiBase",
          "authorizationUrl",
          "image",
          "name",
          "privacyPolicyUrl",
          "registrationUrl",
          "scopesOffered",
          "termsOfServiceUrl",
          "tokenUrl",
          "version"
        ],
        "type": "object"
      },
      "BCV1BadgeConnectManifest": {
        "properties": {
          "@context": {
            "type": "string"
          },
          "badgeConnectAPI": {
            "items": {
              "$ref": "#/components/schemas/BCV1BadgeConnectAPI"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "@context",
          "badgeConnectAPI",
          "id"
        ],
        "type": "object"
      },
      "BCV1BadgeConnectProfile": {
        "properties": {
          "@context": {
            "type": "string"
          },
          "email": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "telephone": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "url": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "@context",
          "type"
        ],
        "type": "object"
      },
      "BadgeApiBadgeClassExpirationInfo": {
        "description": "Optional default expiration period for awards of this BadgeClass",
        "properties": {
          "amount": {
            "description": "The quantity of the expiration.",
            "example": 30,
            "format": "double",
            "nullable": true,
            "type": "number"
          },
          "duration": {
            "description": "The unit of the expiration.",
            "enum": [
              "days",
              "weeks",
              "months",
              "years"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BadgeAssertionEvidence": {
        "description": "List of evidence associated with the achievement",
        "properties": {
          "audience": {
            "nullable": true,
            "type": "string"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "genre": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "nullable": true,
            "type": "string"
          },
          "url": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "BadgeClassErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "ARCHIVED",
          "ARCHIVE_FAILED",
          "UPDATE_FAILED"
        ],
        "type": "string"
      },
      "BadgrApiUser": {
        "description": "Profile of the user",
        "properties": {
          "agreedTermsVersion": {
            "description": "The version of the terms of use that the user has agreed to",
            "example": 4,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "badgrDomain": {
            "description": "The front-end domain of badgr (whitelabel) the user should use",
            "example": "badgrsupportgroup.badgr.com",
            "nullable": true,
            "type": "string"
          },
          "emails": {
            "description": "Emails of the user",
            "items": {
              "$ref": "#/components/schemas/BadgrUserEmail"
            },
            "type": "array"
          },
          "entityId": {
            "description": "Unique identifier for this BadgeUser",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "type": "string"
          },
          "entityType": {
            "example": "BadgeUser",
            "type": "string"
          },
          "firstName": {
            "description": "Given name",
            "example": "Jane",
            "type": "string"
          },
          "hasPasswordSet": {
            "nullable": true,
            "type": "boolean"
          },
          "lastName": {
            "description": "Family name",
            "example": "Doe",
            "type": "string"
          },
          "marketingOptIn": {
            "description": "Indicates if the user has opted in to marketing communications",
            "example": true,
            "nullable": true,
            "type": "boolean"
          },
          "telephone": {
            "description": "List of verified telephone identifiers associated with the user profile",
            "items": {
              "description": "List of verified telephone identifiers associated with the user profile",
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "description": "List of verified URL identifiers associated with the user profile",
            "format": "uri",
            "items": {
              "description": "List of verified URL identifiers associated with the user profile",
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "emails",
          "entityId",
          "entityType",
          "firstName",
          "lastName",
          "telephone",
          "url"
        ],
        "type": "object"
      },
      "BadgrBadgeConnectAssertionsApiResponse": {
        "properties": {
          "assertions": {
            "items": {
              "$ref": "#/components/schemas/OB.Assertion"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrBadgeConnectStatus"
          }
        },
        "required": [
          "assertions",
          "status"
        ],
        "type": "object"
      },
      "BadgrBadgeConnectProfileApiResponse": {
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/BCV1BadgeConnectProfile"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrBadgeConnectStatus"
          }
        },
        "required": [
          "profile",
          "status"
        ],
        "type": "object"
      },
      "BadgrBadgeConnectStatus": {
        "properties": {
          "error": {
            "nullable": true,
            "type": "string"
          },
          "statusCode": {
            "format": "int32",
            "type": "integer"
          },
          "statusText": {
            "type": "string"
          }
        },
        "required": [
          "statusCode",
          "statusText"
        ],
        "type": "object"
      },
      "BadgrBadgeConnectStatusApiResponse": {
        "properties": {
          "status": {
            "$ref": "#/components/schemas/BadgrBadgeConnectStatus"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "BadgrStatus": {
        "properties": {
          "description": {
            "example": "ok",
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "description",
          "success"
        ],
        "type": "object"
      },
      "BadgrUserEmail": {
        "description": "Emails of the user",
        "properties": {
          "email": {
            "description": "Email address",
            "example": "Jane.Doe@example.com",
            "format": "email",
            "type": "string"
          },
          "primary": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "primary",
          "verified"
        ],
        "type": "object"
      },
      "CommonErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "UNAUTHORIZED",
          "FORBIDDEN",
          "SESSION_EXPIRED",
          "ENTITY_NOT_FOUND",
          "REQUEST_BLOCKED",
          "VALIDATION_FAILED"
        ],
        "type": "string"
      },
      "CredentialErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "BULK_AWARD_ISSUER_NOT_FOUND",
          "NOT_FOUND"
        ],
        "type": "string"
      },
      "CredentialSchema": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "CredentialStatus": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "Criteria": {
        "properties": {
          "id": {
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "Email": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RecipientId"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "email"
                ],
                "type": "string"
              },
              "email": {
                "example": "mail@example.com",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "email"
        ],
        "type": "object"
      },
      "ErrorCode": {
        "properties": {
          "defaultMessage": {
            "type": "string"
          },
          "messageKey": {
            "type": "string"
          }
        },
        "required": [
          "defaultMessage",
          "messageKey"
        ],
        "type": "object"
      },
      "ErrorResponse": {
        "properties": {
          "imsx_codeMajor": {
            "type": "string"
          },
          "imsx_description": {
            "type": "string"
          },
          "imsx_severity": {
            "type": "string"
          }
        },
        "required": [
          "imsx_codeMajor",
          "imsx_severity"
        ],
        "type": "object"
      },
      "Evidence": {
        "properties": {
          "audience": {
            "nullable": true,
            "type": "string"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "genre": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "ExperienceOutcomeErrorItem": {
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ExperienceOutcomeErrorType"
          },
          "recipientId": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Email"
              },
              {
                "$ref": "#/components/schemas/Telephone"
              },
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        },
        "required": [
          "error",
          "recipientId"
        ],
        "type": "object"
      },
      "ExperienceOutcomeErrorType": {
        "description": "\nError types that can occur when submitting experience outcomes for a recipient.\n* `NOT_SUBSCRIBED`: The recipient is not a member of any groups subscribed to the pathway\n* `FORBIDDEN_TRANSITION_TO_FAILED`: An already passed outcome can not be changed to failed\n* `UNEXPECTED_ERROR`: An unexpected error occurred during the submission process\n",
        "enum": [
          "NOT_SUBSCRIBED",
          "FORBIDDEN_TRANSITION_TO_FAILED",
          "UNEXPECTED_ERROR"
        ],
        "type": "string"
      },
      "FieldValidationErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "FIELD_BLANK",
          "FIELD_NULL",
          "FIELD_REQUIRED",
          "FIELD_NEGATIVE",
          "FIELD_INVALID_URL",
          "FIELD_INVALID_EMAIL",
          "FIELD_NOT_VALID_CHOICE",
          "FIELD_MAX_LENGTH"
        ],
        "type": "string"
      },
      "FrontendConfigErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "DOMAIN_CONFIG_RETRIEVAL_FAILED",
          "INVALID_IDENTIFIER_FORMAT",
          "LEGACY_DOMAIN_SUFFIX_MISSING",
          "PARENT_CONFIG_NOT_FOUND",
          "PARENT_NOT_LEGACY",
          "PARENT_REQUIRED",
          "REBRANDED_CONFIG_ALREADY_EXISTS",
          "REBRANDED_PARENT_NOT_FOUND"
        ],
        "type": "string"
      },
      "GetCredentialsResponse": {
        "properties": {
          "credential": {
            "items": {
              "$ref": "#/components/schemas/SignedCredential"
            },
            "type": "array"
          }
        },
        "required": [
          "credential"
        ],
        "type": "object"
      },
      "GetProfileResponse": {
        "properties": {
          "@context": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "email": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "phone": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "url": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "@context",
          "type"
        ],
        "type": "object"
      },
      "GlobalAssertionRef": {
        "properties": {
          "assertionUrl": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.io/public/assertions/lY1LJ6K4RqG7ThGLYvWNng",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "assertionUrl"
        ],
        "type": "object"
      },
      "GlobalBadgeRef": {
        "properties": {
          "badgeUrl": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.io/public/badges/iOMWsaF1QbmMCofM54JlUg",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "badgeUrl"
        ],
        "type": "object"
      },
      "GlobalIssuerRef": {
        "properties": {
          "issuerUrl": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.ws/public/issuers/Uu4wd2I1SKmD3vmtMJ19hw",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "issuerUrl"
        ],
        "type": "object"
      },
      "Identity": {
        "properties": {
          "hashed": {
            "type": "boolean"
          },
          "identity": {
            "type": "string"
          },
          "salt": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "hashed",
          "identity",
          "type"
        ],
        "type": "object"
      },
      "IdentityObject": {
        "properties": {
          "hashed": {
            "type": "boolean"
          },
          "identityHash": {
            "type": "string"
          },
          "identityType": {
            "enum": [
              "emailAddress",
              "ext:name"
            ],
            "type": "string"
          },
          "salt": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "hashed",
          "identityHash",
          "identityType",
          "type"
        ],
        "type": "object"
      },
      "Image": {
        "properties": {
          "caption": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "InvitationErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "NOT_FOUND",
          "NOT_ACCEPTABLE"
        ],
        "type": "string"
      },
      "IssuerErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "CANNOT_DELETE_WITH_ACTIVE_BADGES",
          "NOT_FOUND",
          "STAFF_INVALID",
          "STAFF_USER_NOT_FOUND"
        ],
        "type": "string"
      },
      "JsonNode": {
        "description": "OpenBadge JSON of the award to import",
        "properties": {
          "array": {
            "type": "boolean"
          },
          "bigDecimal": {
            "type": "boolean"
          },
          "bigInteger": {
            "type": "boolean"
          },
          "binary": {
            "type": "boolean"
          },
          "boolean": {
            "type": "boolean"
          },
          "container": {
            "type": "boolean"
          },
          "double": {
            "type": "boolean"
          },
          "embeddedValue": {
            "type": "boolean"
          },
          "empty": {
            "type": "boolean"
          },
          "float": {
            "type": "boolean"
          },
          "floatingPointNumber": {
            "type": "boolean"
          },
          "int": {
            "type": "boolean"
          },
          "integralNumber": {
            "type": "boolean"
          },
          "long": {
            "type": "boolean"
          },
          "missingNode": {
            "type": "boolean"
          },
          "nodeType": {
            "enum": [
              "ARRAY",
              "BINARY",
              "BOOLEAN",
              "MISSING",
              "NULL",
              "NUMBER",
              "OBJECT",
              "POJO",
              "STRING"
            ],
            "type": "string"
          },
          "null": {
            "type": "boolean"
          },
          "number": {
            "type": "boolean"
          },
          "object": {
            "type": "boolean"
          },
          "pojo": {
            "type": "boolean"
          },
          "short": {
            "type": "boolean"
          },
          "string": {
            "type": "boolean"
          },
          "textual": {
            "deprecated": true,
            "type": "boolean"
          },
          "valueNode": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "LegacyResponseWrapperUnit": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2Assertion": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2Assertion"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2AssertionCollection": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2AssertionCollection"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2BackpackAward": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2BackpackAward"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2BadgeClass": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2BadgeClass"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2ClaimCode": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2ClaimCode"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2Issuer": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2Issuer"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2IssuerStaff": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2IssuerStaff"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2IssuerStaffInvitation": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2IssuerStaffInvitation"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LegacyResponseWrapperV2User": {
        "properties": {
          "errorCode": {
            "nullable": true,
            "type": "string"
          },
          "fieldErrors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          },
          "latestTermsVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "nonFieldErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "result": {
            "items": {
              "$ref": "#/components/schemas/V2User"
            },
            "type": "array"
          },
          "status": {
            "$ref": "#/components/schemas/BadgrStatus"
          },
          "timestamp": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "validationErrors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "warnings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "fieldErrors",
          "nonFieldErrors",
          "result",
          "status",
          "validationErrors",
          "warnings"
        ],
        "type": "object"
      },
      "LmsAward": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2AwardCreationMethod"
          },
          {
            "properties": {
              "courseUrl": {
                "type": "string"
              },
              "lmsPlatform": {
                "enum": [
                  "CANVAS",
                  "BLACKBOARD"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "courseUrl",
          "lmsPlatform"
        ],
        "type": "object"
      },
      "LtiErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "HOST_MISMATCH",
          "INVALID_OPENID_CONFIG_URL",
          "MISSING_REGISTRATION_ENDPOINT"
        ],
        "type": "string"
      },
      "OB.Assertion": {
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "@context": {
            "type": "string"
          },
          "badge": {
            "description": "Either the badge class OpenBadge URI or the badge class object.",
            "example": "https://example.com/badges/1",
            "nullable": true,
            "oneOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/components/schemas/OB.BadgeClass"
              }
            ],
            "type": "object"
          },
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/OBRefStringEvidence"
            },
            "type": "array"
          },
          "expires": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "type": "string"
          },
          "image": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Image"
              }
            ],
            "nullable": true
          },
          "issuedOn": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "nullable": true,
            "type": "string"
          },
          "recipient": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Identity"
              }
            ],
            "nullable": true
          },
          "revocationReason": {
            "nullable": true,
            "type": "string"
          },
          "revoked": {
            "nullable": true,
            "type": "boolean"
          },
          "type": {
            "type": "string"
          },
          "verification": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Verification"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "@context",
          "evidence",
          "extensions",
          "id",
          "type"
        ],
        "type": "object"
      },
      "OB.BadgeClass": {
        "properties": {
          "@context": {
            "type": "string"
          },
          "@language": {
            "type": "string"
          },
          "achievementType": {
            "enum": [
              "Achievement",
              "ApprenticeshipCertificate",
              "Assessment",
              "Assignment",
              "AssociateDegree",
              "Award",
              "BachelorDegree",
              "Badge",
              "Certificate",
              "CertificateOfCompletion",
              "Certification",
              "CommunityService",
              "Competency",
              "Course",
              "Co-Curricular",
              "Degree",
              "Diploma",
              "DoctoralDegree",
              "Fieldwork",
              "GeneralEducationDevelopment",
              "JourneymanCertificate",
              "LearningProgram",
              "License",
              "MasterCertificate",
              "MasterDegree",
              "Membership",
              "MicroCredential",
              "ProfessionalDoctorate",
              "QualityAssuranceCredential",
              "ResearchDoctorate",
              "SecondarySchoolDiploma"
            ],
            "nullable": true,
            "type": "string"
          },
          "alignment": {
            "items": {
              "$ref": "#/components/schemas/AlignmentObject"
            },
            "nullable": true,
            "type": "array"
          },
          "creditHours": {
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "criteria": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Criteria"
              }
            ],
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "fieldOfStudy": {
            "nullable": true,
            "type": "string"
          },
          "humanCode": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "image": {
            "$ref": "#/components/schemas/Image"
          },
          "imageAltText": {
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Either the issuer OpenBadge URI or the issuer object.",
            "example": "https://example.com/issuers/1",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/components/schemas/OB.Issuer"
              }
            ],
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "specialization": {
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "type": {
            "enum": [
              "Assertion",
              "BadgeClass",
              "Issuer",
              "Unknown"
            ],
            "type": "string"
          }
        },
        "required": [
          "@context",
          "description",
          "extensions",
          "id",
          "image",
          "issuer",
          "name",
          "type"
        ],
        "type": "object"
      },
      "OB.Issuer": {
        "properties": {
          "@context": {
            "type": "string"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "email": {
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "type": "string"
          },
          "image": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "@context",
          "extensions",
          "id",
          "name",
          "url"
        ],
        "type": "object"
      },
      "OBRefStringEvidence": {
        "description": "Either the evidence url or the evidence object.",
        "example": "https://example.com/evidences/1",
        "oneOf": [
          {
            "type": "string"
          },
          {
            "$ref": "#/components/schemas/Evidence"
          }
        ],
        "type": "object"
      },
      "OrganizationErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "ANALYTICS_NO_VALID_IDS",
          "REQUIRED",
          "INVALID_LIFECYCLE_TRANSITION",
          "ALREADY_CONNECTED_TO_PARCHMENT_MEMBER",
          "PARCHMENT_MEMBER_ALREADY_CONNECTED_TO_ORGANIZATION",
          "NONPROD_ORGANIZATION_REQUIRES_TEST_PARCHMENT_MEMBER",
          "PROD_ORGANIZATION_CANNOT_USE_TEST_PARCHMENT_MEMBER",
          "MEMBER_UUID_REQUIRED_FOR_PARCHMENT_ORGANIZATION_BINDING",
          "PARCHMENT_MEMBER_NOT_FOUND",
          "PARCHMENT_MEMBER_UNKNOWN_STATUS",
          "PARCHMENT_MEMBER_INCOMPLETE"
        ],
        "type": "string"
      },
      "OrganizationSkillErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "BADGE_CLASSES_OUTSIDE_ORGANIZATION",
          "SKILL_IDENTIFIER_REQUIRED"
        ],
        "type": "string"
      },
      "OtherAward": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2AwardCreationMethod"
          },
          {
            "properties": {
              "subType": {
                "enum": [
                  "ADMIN_IMPORT",
                  "BACKPACK_VIEW",
                  "BADGEBOOK",
                  "BULK_AWARD",
                  "CLAIM_CODE",
                  "MANUAL_AWARD",
                  "OBJECTIVE",
                  "PATHWAY",
                  "REST_API"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "subType"
        ],
        "type": "object"
      },
      "PathwayErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "CANVAS_DOMAIN_VALIDATION_FAILED",
          "CANVAS_DUPLICATE_ITEMS",
          "CANVAS_NOT_ENABLED_FOR_ISSUER",
          "CANVAS_REQUIREMENTS_VALIDATION_FAILED",
          "CANVAS_VALIDATION_FAILED",
          "COURSE_COMPLETION_TYPE_INVALID",
          "CREATION_ISSUER_NOT_FOUND",
          "CREATION_ISSUER_WITHOUT_ORGANIZATION",
          "DUPLICATE_REQUIREMENTS",
          "ELEMENT_NOT_FOUND",
          "EXPERIENCE_NOT_FOUND_IN_PUBLISHED",
          "GROUP_NOT_SUBSCRIBED",
          "INVALID_ENROLLMENT_GAPS_QUERY",
          "INVALID_PUBLICATION_VERSION",
          "ISSUER_WITHOUT_ORGANIZATION",
          "MAX_POINTS_LESS_THAN_MIN_THRESHOLD",
          "MAX_POINTS_NEGATIVE",
          "MIN_THRESHOLD_NEGATIVE",
          "MIN_THRESHOLD_OUT_OF_RANGE",
          "REQUIRED_COUNT_EXCEEDS_TOTAL",
          "SUBSCRIPTION_VALIDATION_FAILED"
        ],
        "type": "string"
      },
      "PrintCertErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "EMBEDDED_IMAGE_TOO_LARGE",
          "TOO_MANY_EMBEDDED_IMAGES",
          "TEMPLATE_FILE_TOO_LARGE",
          "UNSUPPORTED_PAPER_SIZE",
          "TEMPLATE_PARSE_FAILED",
          "TEMPLATE_RENDER_FAILED",
          "TEMPLATE_VALIDATION_FAILED"
        ],
        "type": "string"
      },
      "Profile": {
        "properties": {
          "description": {
            "nullable": true,
            "type": "string"
          },
          "email": {
            "nullable": true,
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "url"
        ],
        "type": "object"
      },
      "Proof": {
        "properties": {
          "@context": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "created": {
            "type": "string"
          },
          "cryptosuite": {
            "type": "string"
          },
          "proofPurpose": {
            "type": "string"
          },
          "proofValue": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "verificationMethod": {
            "type": "string"
          }
        },
        "required": [
          "@context",
          "created",
          "cryptosuite",
          "proofPurpose",
          "proofValue",
          "type",
          "verificationMethod"
        ],
        "type": "object"
      },
      "Recipient": {
        "properties": {
          "@type": {
            "enum": [
              "recipient"
            ],
            "type": "string"
          },
          "identifier": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Email"
              },
              {
                "$ref": "#/components/schemas/Telephone"
              },
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        },
        "required": [
          "identifier"
        ],
        "type": "object"
      },
      "RecipientForAssertionAwarding": {
        "properties": {
          "hashed": {
            "default": true,
            "description": "If true, the provided identity value will be hashed",
            "nullable": true,
            "type": "boolean"
          },
          "identity": {
            "description": "The plaintext value of the identity",
            "example": "jane.doe@example.com",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "default": "email",
            "description": "Type of identifier used to identify recipient",
            "enum": [
              "email",
              "telephone",
              "url"
            ],
            "type": "string"
          }
        },
        "required": [
          "identity"
        ],
        "type": "object"
      },
      "RecipientGroupAggregate": {
        "properties": {
          "@type": {
            "enum": [
              "groupAggregate"
            ],
            "type": "string"
          },
          "recipientGroupId": {
            "type": "string"
          }
        },
        "required": [
          "recipientGroupId"
        ],
        "type": "object"
      },
      "SignedCredential": {
        "properties": {
          "@context": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credentialSchema": {
            "items": {
              "$ref": "#/components/schemas/CredentialSchema"
            },
            "type": "array"
          },
          "credentialStatus": {
            "$ref": "#/components/schemas/CredentialStatus"
          },
          "credentialSubject": {
            "$ref": "#/components/schemas/AchievementSubject"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/Evidence"
            },
            "type": "array"
          },
          "id": {
            "type": "string"
          },
          "image": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Image"
              }
            ],
            "nullable": true
          },
          "issuer": {
            "$ref": "#/components/schemas/Profile"
          },
          "name": {
            "type": "string"
          },
          "proof": {
            "items": {
              "$ref": "#/components/schemas/Proof"
            },
            "type": "array"
          },
          "type": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "validFrom": {
            "type": "string"
          },
          "validUntil": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "@context",
          "credentialSchema",
          "credentialStatus",
          "credentialSubject",
          "evidence",
          "id",
          "issuer",
          "name",
          "proof",
          "type",
          "validFrom"
        ],
        "type": "object"
      },
      "SubmitExperienceOutcomeRequest": {
        "properties": {
          "passed": {
            "type": "boolean"
          },
          "recipient": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Email"
              },
              {
                "$ref": "#/components/schemas/Telephone"
              },
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        },
        "required": [
          "passed",
          "recipient"
        ],
        "type": "object"
      },
      "SubmitMultipleExperienceOutcomeResponse": {
        "properties": {
          "errors": {
            "items": {
              "$ref": "#/components/schemas/ExperienceOutcomeErrorItem"
            },
            "type": "array"
          },
          "successes": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Email"
                },
                {
                  "$ref": "#/components/schemas/Telephone"
                },
                {
                  "$ref": "#/components/schemas/Url"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "errors",
          "successes"
        ],
        "type": "object"
      },
      "Telephone": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RecipientId"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "telephone"
                ],
                "type": "string"
              },
              "telephone": {
                "example": "+0123456789",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "telephone"
        ],
        "type": "object"
      },
      "Url": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RecipientId"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "url"
                ],
                "type": "string"
              },
              "url": {
                "example": "https://canvas.instructure.com/users/1",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "url"
        ],
        "type": "object"
      },
      "UserErrorCode": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ErrorCode"
          }
        ],
        "enum": [
          "NOT_FOUND",
          "PASSWORD_INSECURE",
          "PASSWORD_TOO_SHORT",
          "PASSWORD_NUMERIC_ONLY",
          "PASSWORD_COMPROMISED",
          "PASSWORD_TOO_WEAK",
          "EMAIL_INVALID",
          "INVALID_VARIANT",
          "RECIPIENT_ID_INVALID_EMAIL",
          "RECIPIENT_ID_INVALID_PHONE",
          "RECIPIENT_ID_INVALID_URL",
          "RECIPIENT_ID_TAKEN",
          "UNSUPPORTED_RECIPIENT_ID_TYPE",
          "PASSWORD_TOO_SHORT_KEYCLOAK",
          "PASSWORD_NO_UPPERCASE",
          "PASSWORD_NO_LOWERCASE",
          "PASSWORD_NO_NUMERIC",
          "PASSWORD_NO_SPECIAL",
          "PASSWORD_NO_WHITESPACE"
        ],
        "type": "string"
      },
      "V2AllButNRequirementCountRule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RequirementCountRule"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "allButN"
                ],
                "type": "string"
              },
              "notRequiredCount": {
                "format": "int32",
                "type": "integer"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "notRequiredCount"
        ],
        "type": "object"
      },
      "V2AllRequirementCountRule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RequirementCountRule"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "all"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "type": "object"
      },
      "V2ApiRevokeAssertion": {
        "properties": {
          "revocation_reason": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "V2ApiRevokeMultipleAssertion": {
        "properties": {
          "code": {
            "description": "Error code if assertion could not be revoked",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "entityId": {
            "description": "Entity ID of the Assertion to revoke",
            "example": "i9CirfwJTuSfiqg0FFUBdQ",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "ID of the Assertion to revoke",
            "example": "62aa04adf5afe00d0a6dac72",
            "nullable": true,
            "type": "string"
          },
          "reason": {
            "description": "Error reason if assertion could not be revoked",
            "nullable": true,
            "readOnly": true,
            "type": "string"
          },
          "revocationReason": {
            "description": "Short description of why the Assertion is being revoked",
            "example": "Course was cancelled",
            "type": "string"
          },
          "revoked": {
            "nullable": true,
            "readOnly": true,
            "type": "boolean"
          }
        },
        "required": [
          "revocationReason"
        ],
        "type": "object"
      },
      "V2Assertion": {
        "properties": {
          "acceptance": {
            "description": "Recipient interaction with Assertion",
            "enum": [
              "Unaccepted",
              "Accepted",
              "Rejected"
            ],
            "nullable": true,
            "type": "string"
          },
          "assertionRef": {
            "$ref": "#/components/schemas/GlobalAssertionRef"
          },
          "badgeRef": {
            "$ref": "#/components/schemas/GlobalBadgeRef"
          },
          "badgeclass": {
            "description": "Entity ID of the BadgeClass of this award, or the OB badgeclass and issuer objects if expand is requested",
            "example": "K829IK8RS6ercwkpeFOn-Q",
            "type": "string"
          },
          "badgeclassOpenBadgeId": {
            "description": "OB URL of the BadgeClass of this award",
            "example": "https://api.badgr.io/public/badges/K829IK8RS6ercwkpeFOn-Q",
            "format": "uri",
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp when the Assertion was created",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdBy": {
            "description": "Entity ID of the user who created this Assertion",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "nullable": true,
            "type": "string"
          },
          "entityId": {
            "description": "Unique identifier for this Assertion",
            "example": "i9CirfwJTuSfiqg0FFUBdQ",
            "type": "string"
          },
          "entityType": {
            "example": "Assertion",
            "type": "string"
          },
          "evidence": {
            "description": "List of evidence associated with the achievement",
            "items": {
              "$ref": "#/components/schemas/V2AssertionEvidence"
            },
            "type": "array"
          },
          "expires": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "example": "6116c84d1ff787222b6c4d15",
            "type": "string"
          },
          "image": {
            "description": "URL to the baked assertion image",
            "example": "https://api.badgr.io/public/assertions/SsCfI7FlTr6hAJe4irXnfQ/image",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "imagePath": {
            "description": "Internal image path",
            "example": "uploads/badges/assertion-lY1LJ6K4RqG7ThGLYvWNng.png",
            "nullable": true,
            "type": "string"
          },
          "issuedOn": {
            "description": "Timestamp when the Assertion was issued",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Entity ID of the awarding issuer",
            "example": "ZvYydoQhRtOKalNzFPZR2A-Q",
            "type": "string"
          },
          "issuerOpenBadgeId": {
            "description": "OB URL of the awarding issuer",
            "example": "https://api.badgr.io/public/issuers/ZvYydoQhRtOKalNzFPZR2A",
            "format": "uri",
            "type": "string"
          },
          "issuerRef": {
            "$ref": "#/components/schemas/GlobalIssuerRef"
          },
          "narrative": {
            "description": "Markdown narrative of the achievement",
            "nullable": true,
            "type": "string"
          },
          "ob3AwardProperties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApiOb3AwardProperties"
              }
            ],
            "nullable": true
          },
          "openBadgeId": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.io/public/assertions/i9CirfwJTuSfiqg0FFUBdQ",
            "format": "uri",
            "type": "string"
          },
          "originalJson": {
            "description": "The original OB JSON if the assertion was exported",
            "example": "{}",
            "nullable": true,
            "type": "string"
          },
          "pending": {
            "nullable": true,
            "type": "boolean"
          },
          "recipient": {
            "$ref": "#/components/schemas/V2AssertionRecipient"
          },
          "revocationReason": {
            "description": "Short description of why the Assertion was revoked",
            "nullable": true,
            "type": "string"
          },
          "revoked": {
            "type": "boolean"
          },
          "source": {
            "description": "The original source of the assertion",
            "example": "local",
            "nullable": true,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The original URL of the assertion if it was imported",
            "example": "https://example.com/assertions/1",
            "format": "uri",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "assertionRef",
          "badgeRef",
          "badgeclassOpenBadgeId",
          "entityId",
          "entityType",
          "evidence",
          "extensions",
          "id",
          "issuerOpenBadgeId",
          "issuerRef",
          "openBadgeId",
          "recipient",
          "revoked"
        ],
        "type": "object"
      },
      "V2AssertionCollection": {
        "properties": {
          "assertions": {
            "items": {
              "description": "The entity IDs of the assertions associated with this Collection",
              "example": "UQbhRmNrQ4qn9_FJ5-eTtA",
              "type": "string"
            },
            "type": "array"
          },
          "credentials": {
            "items": {
              "description": "The entity IDs of the credentials associated with this Collection",
              "example": "UQbhRmNrQ4qn9_FJ5-eTtA",
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "Short description of the Collection",
            "example": "This is a collection of my favorite badges",
            "type": "string"
          },
          "entityId": {
            "description": "Unique identifier for this Collection",
            "example": "dwUFfLWhQ3CutEowC1LB7g",
            "type": "string"
          },
          "entityType": {
            "example": "BackpackCollection",
            "type": "string"
          },
          "id": {
            "example": "6116c84d1ff787222b6c4d15",
            "type": "string"
          },
          "name": {
            "description": "Name of the collection",
            "example": "My Collection",
            "type": "string"
          },
          "owner": {
            "description": "The entity ID of the owning user.",
            "example": "UQbhRmNrQ4qn9_FJ5-eTtA",
            "type": "string"
          },
          "published": {
            "description": "True if the Collection has a public share URL",
            "example": true,
            "type": "boolean"
          },
          "shareHash": {
            "description": "The share hash that allows construction of a public sharing URL.",
            "nullable": true,
            "type": "string"
          },
          "share_url": {
            "description": "A public URL for sharing the Collection",
            "example": "https://example.com/collections/1",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "assertions",
          "credentials",
          "description",
          "entityId",
          "entityType",
          "id",
          "name",
          "owner",
          "published"
        ],
        "type": "object"
      },
      "V2AssertionCollectionForCreate": {
        "properties": {
          "description": {
            "description": "Short description of the Collection",
            "example": "This is a collection of my favorite badges",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the collection",
            "example": "My Collection",
            "type": "string"
          },
          "published": {
            "description": "True if the Collection should have a share url",
            "example": true,
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "published"
        ],
        "type": "object"
      },
      "V2AssertionCollectionForUpdate": {
        "properties": {
          "assertions": {
            "items": {
              "description": "The IDs or entity IDs of the assertions associated with this Collection",
              "example": "UQbhRmNrQ4qn9_FJ5-eTtA",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "credentials": {
            "items": {
              "description": "The IDs or entity IDs of the credentials associated with this Collection",
              "example": "UQbhRmNrQ4qn9_FJ5-eTtA",
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          },
          "description": {
            "description": "Short description of the Collection",
            "example": "This is a collection of my favorite badges",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the collection",
            "example": "My Collection",
            "nullable": true,
            "type": "string"
          },
          "published": {
            "description": "True if the Collection should have a share url",
            "example": true,
            "nullable": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "V2AssertionCreationMethod": {
        "properties": {
          "creationMethod": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LmsAward"
              },
              {
                "$ref": "#/components/schemas/OtherAward"
              }
            ]
          },
          "entityId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        },
        "required": [
          "creationMethod",
          "entityId",
          "id"
        ],
        "type": "object"
      },
      "V2AssertionEvidence": {
        "description": "List of evidence associated with the achievement",
        "properties": {
          "audience": {
            "nullable": true,
            "type": "string"
          },
          "description": {
            "nullable": true,
            "type": "string"
          },
          "genre": {
            "nullable": true,
            "type": "string"
          },
          "name": {
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "description": "Markdown narrative that describes the achievement",
            "nullable": true,
            "type": "string"
          },
          "url": {
            "description": "URL of a webpage presenting evidence of the achievement",
            "format": "uri",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "V2AssertionForAwarding": {
        "description": "Request to award an assertion. When request scope is issuers, one of badgeclass or badgeclassOpenBadgeId must be provided.",
        "properties": {
          "allowDuplicateAwards": {
            "description": "If set to false and the recipient already has this assertion, then the request will fail",
            "type": "boolean"
          },
          "badgeclass": {
            "description": "ID or Entity ID of the badge class to be awarded",
            "example": "K829IK8RS6ercwkpeFOn-Q",
            "nullable": true,
            "type": "string"
          },
          "badgeclassOpenBadgeId": {
            "description": "OB URL of the badge class to be awarded",
            "example": "https://api.badgr.io/public/badges/K829IK8RS6ercwkpeFOn-Q",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "evidence": {
            "description": "List of evidence associated with the achievement",
            "items": {
              "$ref": "#/components/schemas/V2AssertionEvidence"
            },
            "type": "array"
          },
          "expires": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "$ref": "#/components/schemas/AssertionExtension"
          },
          "issuedOn": {
            "description": "Timestamp when the assertion was issued",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "description": "Markdown narrative of the achievement",
            "nullable": true,
            "type": "string"
          },
          "ob3AwardProperties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApiOb3AwardProperties"
              }
            ],
            "nullable": true
          },
          "recipient": {
            "$ref": "#/components/schemas/RecipientForAssertionAwarding"
          }
        },
        "required": [
          "recipient"
        ],
        "type": "object"
      },
      "V2AssertionForUpdating": {
        "properties": {
          "evidence": {
            "description": "List of evidence associated with the achievement",
            "items": {
              "$ref": "#/components/schemas/BadgeAssertionEvidence"
            },
            "nullable": true,
            "type": "array"
          },
          "expires": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssertionExtension"
              }
            ],
            "nullable": true
          },
          "issuedOn": {
            "description": "Timestamp when the assertion was issued",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "narrative": {
            "description": "Markdown narrative of the achievement",
            "nullable": true,
            "type": "string"
          },
          "ob3AwardProperties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApiOb3AwardPropertiesForUpdating"
              }
            ],
            "nullable": true
          }
        },
        "type": "object"
      },
      "V2AssertionImportData": {
        "properties": {
          "assertion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonNode"
              }
            ],
            "nullable": true
          },
          "image": {
            "description": "Image URL or base64 encoded image data of the assertion.",
            "example": "https://example.com/assertions/1/image",
            "nullable": true,
            "type": "string"
          },
          "url": {
            "description": "URL of the badge to import",
            "example": "https://example.com/assertions/1",
            "format": "uri",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "V2AssertionRecipient": {
        "description": "Recipient that was issued the Assertion",
        "properties": {
          "hashed": {
            "type": "boolean"
          },
          "identity": {
            "description": "Either the hash of the identity or the plaintext value",
            "example": "sha256$4c2657856f",
            "type": "string"
          },
          "plaintextIdentity": {
            "example": "jane.doe@example.com",
            "nullable": true,
            "type": "string"
          },
          "salt": {
            "description": "An optional salt used in producing the hashed identity if hashed",
            "example": "jgsu868",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "description": "Type of identifier used to identify recipient",
            "enum": [
              "email",
              "telephone",
              "url"
            ],
            "type": "string"
          }
        },
        "required": [
          "hashed",
          "identity",
          "type"
        ],
        "type": "object"
      },
      "V2AssertionsCreationMethodResponse": {
        "properties": {
          "assertions": {
            "items": {
              "$ref": "#/components/schemas/V2AssertionCreationMethod"
            },
            "type": "array"
          }
        },
        "required": [
          "assertions"
        ],
        "type": "object"
      },
      "V2AtLeastNRequirementCountRule": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2RequirementCountRule"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "atLeastN"
                ],
                "type": "string"
              },
              "requiredCount": {
                "format": "int32",
                "type": "integer"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "requiredCount"
        ],
        "type": "object"
      },
      "V2AwardCreationMethod": {
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "V2BackpackAward": {
        "properties": {
          "acceptance": {
            "description": "Recipient interaction with Assertion",
            "enum": [
              "Unaccepted",
              "Accepted",
              "Rejected"
            ],
            "nullable": true,
            "type": "string"
          },
          "assertionRef": {
            "$ref": "#/components/schemas/GlobalAssertionRef"
          },
          "backpackUrl": {
            "description": "URL of the award in the recipient's backpack",
            "type": "string"
          },
          "badgeRef": {
            "$ref": "#/components/schemas/GlobalBadgeRef"
          },
          "badgeclass": {
            "description": "Entity ID of the BadgeClass of this award, or the OB badgeclass and issuer objects if expand is requested",
            "example": "K829IK8RS6ercwkpeFOn-Q",
            "type": "string"
          },
          "badgeclassOpenBadgeId": {
            "description": "OB URL of the BadgeClass of this award",
            "example": "https://api.badgr.io/public/badges/K829IK8RS6ercwkpeFOn-Q",
            "format": "uri",
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp when the Assertion was created",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdBy": {
            "description": "Entity ID of the user who created this Assertion",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "nullable": true,
            "type": "string"
          },
          "entityId": {
            "description": "Unique identifier for this Assertion",
            "example": "i9CirfwJTuSfiqg0FFUBdQ",
            "type": "string"
          },
          "entityType": {
            "example": "Assertion",
            "type": "string"
          },
          "evidence": {
            "description": "List of evidence associated with the achievement",
            "items": {
              "$ref": "#/components/schemas/V2AssertionEvidence"
            },
            "type": "array"
          },
          "expires": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "example": "6116c84d1ff787222b6c4d15",
            "type": "string"
          },
          "image": {
            "description": "URL to the baked assertion image",
            "example": "https://api.badgr.io/public/assertions/SsCfI7FlTr6hAJe4irXnfQ/image",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "imagePath": {
            "description": "Internal image path",
            "example": "uploads/badges/assertion-lY1LJ6K4RqG7ThGLYvWNng.png",
            "nullable": true,
            "type": "string"
          },
          "issuedOn": {
            "description": "Timestamp when the Assertion was issued",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Entity ID of the awarding issuer",
            "example": "ZvYydoQhRtOKalNzFPZR2A-Q",
            "type": "string"
          },
          "issuerOpenBadgeId": {
            "description": "OB URL of the awarding issuer",
            "example": "https://api.badgr.io/public/issuers/ZvYydoQhRtOKalNzFPZR2A",
            "format": "uri",
            "type": "string"
          },
          "issuerRef": {
            "$ref": "#/components/schemas/GlobalIssuerRef"
          },
          "narrative": {
            "description": "Markdown narrative of the achievement",
            "nullable": true,
            "type": "string"
          },
          "ob3AwardProperties": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApiOb3AwardProperties"
              }
            ],
            "nullable": true
          },
          "openBadgeId": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.io/public/assertions/i9CirfwJTuSfiqg0FFUBdQ",
            "format": "uri",
            "type": "string"
          },
          "organizationId": {
            "description": "Entity ID of the organization that owns the issuer of the award",
            "nullable": true,
            "type": "string"
          },
          "organizationName": {
            "description": "Name of the organization that owns the issuer of the award",
            "nullable": true,
            "type": "string"
          },
          "originalJson": {
            "description": "The original OB JSON if the assertion was exported",
            "example": "{}",
            "nullable": true,
            "type": "string"
          },
          "pending": {
            "nullable": true,
            "type": "boolean"
          },
          "recipient": {
            "$ref": "#/components/schemas/V2AssertionRecipient"
          },
          "revocationReason": {
            "description": "Short description of why the Assertion was revoked",
            "nullable": true,
            "type": "string"
          },
          "revoked": {
            "type": "boolean"
          },
          "source": {
            "description": "The original source of the assertion",
            "example": "local",
            "nullable": true,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The original URL of the assertion if it was imported",
            "example": "https://example.com/assertions/1",
            "format": "uri",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "assertionRef",
          "backpackUrl",
          "badgeRef",
          "badgeclassOpenBadgeId",
          "entityId",
          "entityType",
          "evidence",
          "extensions",
          "id",
          "issuerOpenBadgeId",
          "issuerRef",
          "openBadgeId",
          "recipient",
          "revoked"
        ],
        "type": "object"
      },
      "V2BadgeClass": {
        "properties": {
          "achievementType": {
            "description": "The type of achievement",
            "example": "Course",
            "nullable": true,
            "type": "string"
          },
          "alignments": {
            "description": "List of objects describing objectives or educational standards",
            "items": {
              "$ref": "#/components/schemas/ApiAlignment"
            },
            "type": "array"
          },
          "archivalNote": {
            "nullable": true,
            "type": "string"
          },
          "archived": {
            "nullable": true,
            "type": "boolean"
          },
          "archivedDate": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp when the BadgeClass was created",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdBy": {
            "description": "Entity ID of the user who created this BadgeClass",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "nullable": true,
            "type": "string"
          },
          "criteriaNarrative": {
            "description": "Markdown formatted description of the criteria",
            "nullable": true,
            "type": "string"
          },
          "criteriaUrl": {
            "description": "External URL that describes in a human-readable format the criteria for the BadgeClass",
            "example": "https://example.com/badge-classes/1/criteria",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Short description of the badge class",
            "example": "This badge is awarded to students who have demonstrated mastery of Math.",
            "type": "string"
          },
          "entityId": {
            "description": "Unique identifier for this BadgeClass",
            "example": "iOMWsaF1QbmMCofM54JlUg",
            "type": "string"
          },
          "entityType": {
            "example": "BadgeClass",
            "type": "string"
          },
          "expires": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgeApiBadgeClassExpirationInfo"
              }
            ],
            "nullable": true
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "description": "Internal ID for this BadgeClass",
            "example": "68e9d238c5afe622816febb3",
            "type": "string"
          },
          "image": {
            "description": "Image of the badge class. Most commonly an URL.",
            "example": "https://api.badgr.io/public/badges/iOMWsaF1QbmMCofM54JlUg/image",
            "type": "string"
          },
          "imageAltText": {
            "nullable": true,
            "type": "string"
          },
          "imagePath": {
            "description": "Internal image path",
            "example": "uploads/badges/badgeclass-lY1LJ6K4RqG7ThGLYvWNng.png",
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Entity ID of the issuer",
            "example": "ZvYydoQhRtOKalNzFPZR2A-Q",
            "type": "string"
          },
          "issuerOpenBadgeId": {
            "description": "OB URL of the issuer",
            "example": "https://api.badgr.io/public/issuers/ZvYydoQhRtOKalNzFPZR2A",
            "format": "uri",
            "type": "string"
          },
          "name": {
            "description": "Name of the badge class",
            "example": "Math Expert",
            "type": "string"
          },
          "ob3Properties": {
            "$ref": "#/components/schemas/ApiOB3Properties"
          },
          "openBadgeId": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.io/public/badges/iOMWsaF1QbmMCofM54JlUg",
            "format": "uri",
            "type": "string"
          },
          "originalJson": {
            "description": "The original OB JSON if the badge class was exported",
            "example": "{}",
            "nullable": true,
            "type": "string"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiPreferences"
          },
          "source": {
            "description": "The original source of the BadgeClass",
            "example": "local",
            "nullable": true,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The original URL of the BadgeClass if it was imported",
            "example": "https://example.com/badge-classes/1",
            "nullable": true,
            "type": "string"
          },
          "tags": {
            "description": "List of tags that describe the BadgeClass",
            "items": {
              "description": "List of tags that describe the BadgeClass",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "alignments",
          "description",
          "entityId",
          "entityType",
          "extensions",
          "id",
          "image",
          "issuer",
          "issuerOpenBadgeId",
          "name",
          "ob3Properties",
          "openBadgeId",
          "preferences",
          "tags"
        ],
        "type": "object"
      },
      "V2BadgeClassForCreation": {
        "properties": {
          "achievementType": {
            "description": "The type of achievement",
            "example": "Course",
            "nullable": true,
            "type": "string"
          },
          "alignments": {
            "description": "List of objects describing objectives or educational standards",
            "items": {
              "$ref": "#/components/schemas/ApiAlignment"
            },
            "nullable": true,
            "type": "array"
          },
          "criteriaNarrative": {
            "description": "Markdown formatted description of the criteria",
            "nullable": true,
            "type": "string"
          },
          "criteriaUrl": {
            "description": "External URL that describes in a human-readable format the criteria for the BadgeClass",
            "example": "https://example.com/badge-classes/1/criteria",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Short description of the BadgeClass",
            "example": "This badge is awarded to students who have demonstrated mastery of Math.",
            "maxLength": 16384,
            "nullable": true,
            "type": "string"
          },
          "expires": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgeApiBadgeClassExpirationInfo"
              }
            ],
            "nullable": true
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "image": {
            "description": "Image of the badge class as a base64-encoded data URI. External URLs are not allowed.",
            "example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhQJ/6+gQDQAAAABJRU5ErkJggg==",
            "nullable": true,
            "type": "string"
          },
          "imageAltText": {
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Entity ID of the issuer",
            "example": "ZvYydoQhRtOKalNzFPZR2A-Q",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the BadgeClass",
            "example": "Math Expert",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          },
          "ob3Properties": {
            "$ref": "#/components/schemas/ApiOB3Properties"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiPreferences"
          },
          "tags": {
            "description": "List of tags that describe the BadgeClass",
            "items": {
              "maxLength": 1024,
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "required": [
          "description",
          "image",
          "issuer",
          "name"
        ],
        "type": "object"
      },
      "V2BadgeClassForUpdate": {
        "properties": {
          "achievementType": {
            "description": "The type of achievement",
            "example": "Course",
            "type": "string"
          },
          "alignments": {
            "description": "List of objects describing objectives or educational standards",
            "items": {
              "$ref": "#/components/schemas/ApiAlignment"
            },
            "type": "array"
          },
          "criteriaNarrative": {
            "description": "Markdown formatted description of the criteria",
            "type": "string"
          },
          "criteriaUrl": {
            "description": "External URL that describes in a human-readable format the criteria for the BadgeClass",
            "example": "https://example.com/badge-classes/1/criteria",
            "format": "uri",
            "type": "string"
          },
          "description": {
            "description": "Short description of the BadgeClass",
            "example": "This badge is awarded to students who have demonstrated mastery of Math.",
            "maxLength": 16384,
            "nullable": true,
            "type": "string"
          },
          "expires": {
            "$ref": "#/components/schemas/BadgeApiBadgeClassExpirationInfo"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "image": {
            "description": "Image of the badge class as a base64-encoded data URI. External URLs are not allowed.",
            "example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhQJ/6+gQDQAAAABJRU5ErkJggg==",
            "type": "string"
          },
          "imageAltText": {
            "type": "string"
          },
          "name": {
            "description": "Name of the BadgeClass",
            "example": "Math Expert",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          },
          "ob3Properties": {
            "$ref": "#/components/schemas/ApiOB3PropertiesForUpdate"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiPreferencesForUpdate"
          },
          "tags": {
            "description": "List of tags that describe the BadgeClass",
            "items": {
              "maxLength": 1024,
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "description",
          "image",
          "name"
        ],
        "type": "object"
      },
      "V2BadgeRequirement": {
        "properties": {
          "badgeUrl": {
            "description": "URL of the badge",
            "example": "https://api.badgr.io/public/badges/ngurE1vbQiCAs5EkwEgIBw",
            "type": "string"
          },
          "displayOrder": {
            "default": 0,
            "description": "Display order of the requirement within the element",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "badgeUrl"
        ],
        "type": "object"
      },
      "V2BadgeRequirementsProgress": {
        "properties": {
          "earnedBadges": {
            "items": {
              "example": "https://api.staging.badgr.dev/public/badges/2Lkni4uvRjGqlz8zCg_5uA",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "maxBadgeCount": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "earnedBadges",
          "maxBadgeCount"
        ],
        "type": "object"
      },
      "V2ClaimCode": {
        "properties": {
          "claimCount": {
            "description": "The number of times the claim code has been used",
            "format": "int32",
            "type": "integer"
          },
          "claimUrl": {
            "description": "The URL where the bade can be claimed",
            "type": "string"
          },
          "code": {
            "description": "The generated code of the claim code",
            "example": "5678945",
            "type": "string"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "expirationDate": {
            "description": "The date the claim code expires",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "label": {
            "description": "The label of the claim code",
            "example": "Conference Event",
            "nullable": true,
            "type": "string"
          },
          "limit": {
            "description": "The number of times the claim code can be used",
            "example": 10,
            "format": "int64",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "claimCount",
          "claimUrl",
          "code",
          "createdAt",
          "enabled"
        ],
        "type": "object"
      },
      "V2ClaimCodeForCreateOrUpdate": {
        "properties": {
          "expirationDate": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "label": {
            "description": "The label of the claim code",
            "example": "Conference Event",
            "nullable": true,
            "type": "string"
          },
          "limit": {
            "description": "The number of times the claim code can be used",
            "example": 10,
            "format": "int64",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "V2CompletionRequirement": {
        "required": [
          "@type"
        ],
        "type": "object"
      },
      "V2CourseEvaluation": {
        "properties": {
          "completionRequirement": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2IsCompletedRequirement"
              },
              {
                "$ref": "#/components/schemas/V2NormalizedScoreRequirement"
              },
              {
                "$ref": "#/components/schemas/V2PointScoreRequirement"
              }
            ]
          },
          "courseId": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "evaluatedAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "lms": {
            "enum": [
              "CANVAS"
            ],
            "type": "string"
          }
        },
        "required": [
          "completionRequirement",
          "courseId",
          "domain",
          "lms"
        ],
        "type": "object"
      },
      "V2CourseProgressAggregate": {
        "properties": {
          "byRequirements": {
            "description": "Progress for each course requirement defined on the element.",
            "items": {
              "$ref": "#/components/schemas/V2RequirementProgressAggregateV2CourseRequirementId"
            },
            "type": "array"
          }
        },
        "required": [
          "byRequirements"
        ],
        "type": "object"
      },
      "V2CourseRequirement": {
        "properties": {
          "completionRequirement": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2IsCompletedRequirement"
              },
              {
                "$ref": "#/components/schemas/V2NormalizedScoreRequirement"
              },
              {
                "$ref": "#/components/schemas/V2PointScoreRequirement"
              }
            ]
          },
          "courseId": {
            "example": "123678",
            "type": "string"
          },
          "displayOrder": {
            "default": 0,
            "description": "Display order of the requirement within the element",
            "format": "int32",
            "type": "integer"
          },
          "domain": {
            "example": "canvas.instructure.com",
            "type": "string"
          },
          "lms": {
            "enum": [
              "CANVAS"
            ],
            "type": "string"
          },
          "name": {
            "description": "Name of the course.",
            "example": "Math 101",
            "type": "string"
          },
          "url": {
            "description": "Direct URL to the Canvas course",
            "example": "https://canvas.instructure.com/courses/123678",
            "readOnly": true,
            "type": "string"
          }
        },
        "required": [
          "completionRequirement",
          "courseId",
          "domain",
          "name",
          "url"
        ],
        "type": "object"
      },
      "V2CourseRequirementId": {
        "description": "Unique identifier of the requirement within this element.",
        "properties": {
          "completionRequirement": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2IsCompletedRequirement"
              },
              {
                "$ref": "#/components/schemas/V2NormalizedScoreRequirement"
              },
              {
                "$ref": "#/components/schemas/V2PointScoreRequirement"
              }
            ]
          },
          "courseId": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "lms": {
            "enum": [
              "CANVAS"
            ],
            "type": "string"
          }
        },
        "required": [
          "completionRequirement",
          "courseId",
          "domain",
          "lms"
        ],
        "type": "object"
      },
      "V2CourseRequirementsProgress": {
        "properties": {
          "earnedCriteria": {
            "items": {
              "$ref": "#/components/schemas/V2CourseEvaluation"
            },
            "type": "array",
            "uniqueItems": true
          },
          "inProgressCriteria": {
            "items": {
              "$ref": "#/components/schemas/V2CourseEvaluation"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "earnedCriteria",
          "inProgressCriteria"
        ],
        "type": "object"
      },
      "V2DuplicateBadgeClassRequest": {
        "properties": {
          "newName": {
            "description": "The new name for the duplicate badgeclass",
            "example": "Badgeclass Copy",
            "type": "string"
          }
        },
        "required": [
          "newName"
        ],
        "type": "object"
      },
      "V2Error": {
        "properties": {
          "detail": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2ErrorMessage"
              },
              {
                "$ref": "#/components/schemas/V2FieldError"
              }
            ]
          },
          "errorType": {
            "enum": [
              "CLIENT_ERROR",
              "SERVER_ERROR"
            ],
            "type": "string"
          }
        },
        "required": [
          "errorType"
        ],
        "type": "object"
      },
      "V2ErrorDetail": {
        "type": "object"
      },
      "V2ErrorMessage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2ErrorDetail"
          },
          {
            "properties": {
              "message": {
                "type": "string"
              },
              "messageKey": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AssertionErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/AuthErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/BadgeClassErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/CommonErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/CredentialErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/FieldValidationErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/FrontendConfigErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/InvitationErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/IssuerErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/LtiErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/OrganizationErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/OrganizationSkillErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/PathwayErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/PrintCertErrorCode"
                  },
                  {
                    "$ref": "#/components/schemas/UserErrorCode"
                  }
                ]
              },
              "messageParams": {
                "additionalProperties": {
                  "type": "object"
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "message",
          "messageParams"
        ],
        "type": "object"
      },
      "V2ErrorResponse": {
        "properties": {
          "errors": {
            "items": {
              "$ref": "#/components/schemas/V2Error"
            },
            "type": "array"
          },
          "traceId": {
            "type": "string"
          }
        },
        "required": [
          "errors",
          "traceId"
        ],
        "type": "object"
      },
      "V2ExperienceEvaluation": {
        "properties": {
          "experienceId": {
            "format": "uuid",
            "type": "string"
          },
          "lastEvaluatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "passed": {
            "type": "boolean"
          }
        },
        "required": [
          "experienceId",
          "lastEvaluatedAt",
          "passed"
        ],
        "type": "object"
      },
      "V2ExperienceProgressAggregate": {
        "properties": {
          "experienceIdsWithAllRecipientsFailed": {
            "description": "List of experience IDs where all recipients were evaluated as failed.",
            "items": {
              "description": "List of experience IDs where all recipients were evaluated as failed.",
              "format": "uuid",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "experienceIdsWithFailedRecipients": {
            "description": "List of experience IDs where at least one recipient was evaluated as failed.",
            "items": {
              "description": "List of experience IDs where at least one recipient was evaluated as failed.",
              "format": "uuid",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "experienceIdsWithNotEvaluatedRecipients": {
            "description": "List of experience IDs where at least one recipient was not evaluated yet.",
            "items": {
              "description": "List of experience IDs where at least one recipient was not evaluated yet.",
              "format": "uuid",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "experienceIdsWithAllRecipientsFailed",
          "experienceIdsWithFailedRecipients",
          "experienceIdsWithNotEvaluatedRecipients"
        ],
        "type": "object"
      },
      "V2ExperienceRequirement": {
        "properties": {
          "description": {
            "example": "Attend Instructure Conference 2025",
            "type": "string"
          },
          "displayOrder": {
            "default": 0,
            "description": "Display order of the requirement within the element",
            "format": "int32",
            "type": "integer"
          },
          "id": {
            "description": "Unique identifier of an experience",
            "format": "uuid",
            "type": "string"
          },
          "name": {
            "example": "Conference",
            "type": "string"
          }
        },
        "required": [
          "description",
          "name"
        ],
        "type": "object"
      },
      "V2ExperienceRequirementsProgress": {
        "properties": {
          "evaluations": {
            "items": {
              "$ref": "#/components/schemas/V2ExperienceEvaluation"
            },
            "type": "array"
          }
        },
        "required": [
          "evaluations"
        ],
        "type": "object"
      },
      "V2FieldError": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2ErrorDetail"
          },
          {
            "properties": {
              "field": {
                "type": "string"
              },
              "messageKeys": {
                "items": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AssertionErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/AuthErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/BadgeClassErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/CommonErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/CredentialErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/FieldValidationErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/FrontendConfigErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/InvitationErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/IssuerErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/LtiErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/OrganizationErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/OrganizationSkillErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/PathwayErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/PrintCertErrorCode"
                    },
                    {
                      "$ref": "#/components/schemas/UserErrorCode"
                    }
                  ]
                },
                "nullable": true,
                "type": "array"
              },
              "messageParams": {
                "items": {
                  "additionalProperties": {
                    "type": "object"
                  },
                  "type": "object"
                },
                "nullable": true,
                "type": "array"
              },
              "messages": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "field",
          "messages"
        ],
        "type": "object"
      },
      "V2FractionalProgress": {
        "properties": {
          "completedValue": {
            "description": "Current completed value",
            "example": 1,
            "format": "double",
            "type": "number"
          },
          "failedValue": {
            "description": "Current failed value",
            "example": 1,
            "format": "double",
            "type": "number"
          },
          "maxValue": {
            "description": "Maximum possible value",
            "example": 1,
            "format": "double",
            "type": "number"
          },
          "requiredValue": {
            "description": "Required value for completion",
            "example": 2,
            "format": "double",
            "type": "number"
          }
        },
        "required": [
          "completedValue",
          "failedValue",
          "maxValue",
          "requiredValue"
        ],
        "type": "object"
      },
      "V2FractionalProgressAggregate": {
        "properties": {
          "completedCount": {
            "format": "int32",
            "type": "integer"
          },
          "failedCount": {
            "format": "int32",
            "type": "integer"
          },
          "inProgressCount": {
            "format": "int32",
            "type": "integer"
          },
          "notStartedCount": {
            "format": "int32",
            "type": "integer"
          },
          "progress": {
            "$ref": "#/components/schemas/V2FractionalProgress"
          }
        },
        "required": [
          "completedCount",
          "failedCount",
          "inProgressCount",
          "notStartedCount",
          "progress"
        ],
        "type": "object"
      },
      "V2IsCompletedRequirement": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2CompletionRequirement"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "completed"
                ],
                "type": "string"
              },
              "doNotAwardBefore": {
                "description": "Do not progress this requirement before this date",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "type": "object"
      },
      "V2Issuer": {
        "properties": {
          "badgeSkillLinkingPreferences": {
            "$ref": "#/components/schemas/ApiBadgeSkillLinkingPreferences"
          },
          "badgrDomain": {
            "description": "Organization domain host",
            "example": "badgrsupportgroup.badgr.com",
            "nullable": true,
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp when the Issuer was created",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "createdBy": {
            "description": "Entity ID of the user who created this issuer",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Short description of the Issuer",
            "example": "This is the faculty of the Credentials University.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "Contact email for the Issuer",
            "example": "contact@example.com",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "entityId": {
            "description": "Unique identifier for this Issuer",
            "example": "Uu4wd2I1SKmD3vmtMJ19hw",
            "type": "string"
          },
          "entityType": {
            "example": "Issuer",
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "id": {
            "example": "6016c84d1ff787222b6c4d15",
            "type": "string"
          },
          "image": {
            "description": "Image of the issuer. Most commonly an URL.",
            "example": "https://api.badgr.ws/public/issuers/Uu4wd2I1SKmD3vmtMJ19hw/image",
            "nullable": true,
            "type": "string"
          },
          "imagePath": {
            "description": "Internal image path.",
            "example": "uploads/issuers/issuer-JTdhRmlFQZScIjoUr6x4UQ.png",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the issuer",
            "example": "Credentials Faculty",
            "type": "string"
          },
          "openBadgeId": {
            "description": "URL of the OpenBadge compliant json",
            "example": "https://api.badgr.ws/public/issuers/Uu4wd2I1SKmD3vmtMJ19hw",
            "format": "uri",
            "type": "string"
          },
          "organizationId": {
            "description": "The ID of the organization which this issuer is associated with.",
            "example": "6f4e4e4e2dc038241ad01d83",
            "nullable": true,
            "type": "string"
          },
          "originalJson": {
            "description": "The original OB JSON of the issuer if it was imported",
            "example": "{}",
            "nullable": true,
            "type": "string"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiIssuerPreferences"
          },
          "source": {
            "description": "The original source of the issuer",
            "example": "local",
            "nullable": true,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The original URL of the issuer if it was imported",
            "example": "https://example.com/issuers/1",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "staff": {
            "description": "Staff members of this issuer.",
            "items": {
              "$ref": "#/components/schemas/V2IssuerStaff"
            },
            "nullable": true,
            "type": "array"
          },
          "url": {
            "description": "Homepage or website associated with the Issuer",
            "example": "https://example.com",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "badgeSkillLinkingPreferences",
          "entityId",
          "entityType",
          "extensions",
          "id",
          "name",
          "openBadgeId",
          "url"
        ],
        "type": "object"
      },
      "V2IssuerBadgeClassForCreation": {
        "properties": {
          "achievementType": {
            "description": "The type of achievement",
            "example": "Course",
            "nullable": true,
            "type": "string"
          },
          "alignments": {
            "description": "List of objects describing objectives or educational standards",
            "items": {
              "$ref": "#/components/schemas/ApiAlignment"
            },
            "nullable": true,
            "type": "array"
          },
          "criteriaNarrative": {
            "description": "Markdown formatted description of the criteria",
            "nullable": true,
            "type": "string"
          },
          "criteriaUrl": {
            "description": "External URL that describes in a human-readable format the criteria for the BadgeClass",
            "example": "https://example.com/badge-classes/1/criteria",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Short description of the BadgeClass",
            "example": "This badge is awarded to students who have demonstrated mastery of Math.",
            "maxLength": 16384,
            "nullable": true,
            "type": "string"
          },
          "expires": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgeApiBadgeClassExpirationInfo"
              }
            ],
            "nullable": true
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "image": {
            "description": "Image of the badge class as a base64-encoded data URI. External URLs are not allowed.",
            "example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhQJ/6+gQDQAAAABJRU5ErkJggg==",
            "nullable": true,
            "type": "string"
          },
          "imageAltText": {
            "nullable": true,
            "type": "string"
          },
          "issuer": {
            "description": "Entity ID of the issuer",
            "example": "ZvYydoQhRtOKalNzFPZR2A-Q",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the BadgeClass",
            "example": "Math Expert",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          },
          "ob3Properties": {
            "$ref": "#/components/schemas/ApiOB3Properties"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiPreferences"
          },
          "tags": {
            "description": "List of tags that describe the BadgeClass",
            "items": {
              "maxLength": 1024,
              "type": "string"
            },
            "nullable": true,
            "type": "array"
          }
        },
        "required": [
          "description",
          "image",
          "name"
        ],
        "type": "object"
      },
      "V2IssuerForCreation": {
        "properties": {
          "badgrDomain": {
            "description": "Organization domain host",
            "example": "badgrsupportgroup.badgr.com",
            "nullable": true,
            "type": "string"
          },
          "createdBy": {
            "description": "User who created this issuer",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "description": "Short description of the Issuer",
            "example": "This is the faculty of the Credentials University.",
            "maxLength": 16384,
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "Contact email for the Issuer",
            "example": "contact@example.com",
            "format": "email",
            "maxLength": 255,
            "nullable": true,
            "type": "string"
          },
          "image": {
            "description": "Image of the issuer as a base64-encoded data URI. External URLs are not allowed.",
            "example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhQJ/6+gQDQAAAABJRU5ErkJggg==",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "description": "Name of the issuer",
            "example": "Credentials Faculty",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          },
          "organizationId": {
            "description": "The ID of the organization which this issuer should be associated with. Requires organization write access.",
            "example": "6f4e4e4e2dc038241ad01d83",
            "nullable": true,
            "type": "string"
          },
          "originalJson": {
            "description": "The original OB JSON of the issuer if it was imported",
            "example": "{}",
            "maxLength": 2000000,
            "nullable": true,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The original URL of the issuer if it was imported",
            "example": "https://example.com/issuers/1",
            "format": "uri",
            "nullable": true,
            "type": "string"
          },
          "staff": {
            "description": "Staff members of this issuer.",
            "items": {
              "$ref": "#/components/schemas/V2IssuerStaffForCreation"
            },
            "nullable": true,
            "type": "array"
          },
          "url": {
            "description": "Homepage or website associated with the Issuer",
            "example": "https://example.com",
            "format": "uri",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "url"
        ],
        "type": "object"
      },
      "V2IssuerForUpdate": {
        "properties": {
          "badgrDomain": {
            "type": "string"
          },
          "description": {
            "description": "Short description of the Issuer",
            "example": "This is the faculty of the Credentials University.",
            "maxLength": 16384,
            "type": "string"
          },
          "email": {
            "description": "Contact email for the Issuer",
            "example": "contact@example.com",
            "format": "email",
            "maxLength": 255,
            "nullable": true,
            "type": "string"
          },
          "extensions": {
            "additionalProperties": {
              "type": "object"
            },
            "type": "object"
          },
          "image": {
            "description": "Image of the issuer as a base64-encoded data URI. External URLs are not allowed.",
            "example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhQJ/6+gQDQAAAABJRU5ErkJggg==",
            "type": "string"
          },
          "name": {
            "description": "Name of the issuer",
            "example": "Credentials Faculty",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          },
          "preferences": {
            "$ref": "#/components/schemas/ApiIssuerPreferences"
          },
          "staff": {
            "items": {
              "$ref": "#/components/schemas/V2IssuerStaffForCreation"
            },
            "type": "array"
          },
          "url": {
            "description": "Homepage or website associated with the Issuer",
            "example": "https://example.com",
            "format": "uri",
            "maxLength": 1024,
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "description",
          "email",
          "name",
          "staff",
          "url"
        ],
        "type": "object"
      },
      "V2IssuerStaff": {
        "properties": {
          "orgRole": {
            "description": "Organization-level staff role, if the user is an admin of the parent organization.",
            "enum": [
              "BillingAdmin",
              "ContentAdmin",
              "GeneralAdmin"
            ],
            "nullable": true,
            "type": "string"
          },
          "role": {
            "enum": [
              "staff",
              "editor",
              "owner"
            ],
            "type": "string"
          },
          "user": {
            "description": "Unique ID of the user.",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "type": "string"
          },
          "userProfile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgrApiUser"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "V2IssuerStaffForCreateOrUpdate": {
        "properties": {
          "email": {
            "description": "Email address associated with the staff member",
            "example": "jane.doe@example.com",
            "format": "email",
            "nullable": true,
            "type": "string"
          },
          "role": {
            "description": "Role of the user in the issuer.",
            "enum": [
              "owner",
              "editor",
              "staff"
            ],
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email",
          "role"
        ],
        "type": "object"
      },
      "V2IssuerStaffForCreation": {
        "properties": {
          "role": {
            "description": "Role of the user in the issuer.",
            "enum": [
              "owner",
              "editor",
              "staff"
            ],
            "nullable": true,
            "type": "string"
          },
          "user": {
            "description": "Unique ID of the user.",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "type": "string"
          }
        },
        "required": [
          "role",
          "user"
        ],
        "type": "object"
      },
      "V2IssuerStaffForRemoval": {
        "properties": {
          "email": {
            "description": "Email address of the staff member to remove",
            "example": "jane.doe@example.com",
            "format": "email",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "V2IssuerStaffInvitation": {
        "properties": {
          "email": {
            "description": "Email address associated with the staff member",
            "example": "jane.doe@example.com",
            "type": "string"
          },
          "role": {
            "description": "Role of the user in the issuer.",
            "enum": [
              "owner",
              "editor",
              "staff"
            ],
            "type": "string"
          },
          "status": {
            "description": "Status of the invitation",
            "enum": [
              "PENDING",
              "READ",
              "ACCEPTED",
              "REJECTED",
              "RESCINDED",
              "INVALIDATED"
            ],
            "type": "string"
          }
        },
        "required": [
          "email",
          "role",
          "status"
        ],
        "type": "object"
      },
      "V2NormalizedScoreRequirement": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2CompletionRequirement"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "normalizedScore"
                ],
                "type": "string"
              },
              "doNotAwardBefore": {
                "description": "Do not progress this requirement before this date",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "minThreshold": {
                "description": "Minimum percentage required for completion as a decimal between 0 and 1. For example, 0.81 means 81% minimum completion required.",
                "example": 0.81,
                "format": "double",
                "maximum": 1.0,
                "minimum": 0.0,
                "type": "number"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "minThreshold"
        ],
        "type": "object"
      },
      "V2Organization": {
        "properties": {
          "frontendDomain": {
            "description": "The frontend domain for this organization",
            "example": "university.badges.example.com",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "example": "67ae3efe2ee1d96b56fc1957",
            "type": "string"
          },
          "name": {
            "example": "University of Credentials",
            "type": "string"
          },
          "ob3Enabled": {
            "description": "Whether OB3 is enabled at the organization level",
            "example": false,
            "type": "boolean"
          },
          "profile": {
            "$ref": "#/components/schemas/V2OrganizationProfile"
          }
        },
        "required": [
          "id",
          "name",
          "ob3Enabled",
          "profile"
        ],
        "type": "object"
      },
      "V2OrganizationList": {
        "properties": {
          "organizations": {
            "items": {
              "$ref": "#/components/schemas/V2Organization"
            },
            "type": "array"
          }
        },
        "required": [
          "organizations"
        ],
        "type": "object"
      },
      "V2OrganizationProfile": {
        "properties": {
          "description": {
            "example": "A university that issues credentials.",
            "nullable": true,
            "type": "string"
          },
          "email": {
            "description": "Contact email.",
            "example": "mail@example.com",
            "type": "string"
          },
          "imageUrl": {
            "example": "https://www.example.com/logo.png",
            "nullable": true,
            "type": "string"
          },
          "url": {
            "description": "Link to the website of the organization.",
            "example": "https://www.example.com",
            "type": "string"
          }
        },
        "required": [
          "email",
          "url"
        ],
        "type": "object"
      },
      "V2PaginatedResponseV2PublicIssuer": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/V2PublicIssuer"
            },
            "type": "array"
          },
          "pagination": {
            "$ref": "#/components/schemas/V2PaginationInfo"
          }
        },
        "required": [
          "items",
          "pagination"
        ],
        "type": "object"
      },
      "V2PaginationInfo": {
        "properties": {
          "currentPage": {
            "description": "Current page number",
            "example": 1,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "hasNextPage": {
            "description": "Indicates if there is a next page with items",
            "example": true,
            "type": "boolean"
          },
          "nextLink": {
            "description": "Link to next page.",
            "nullable": true,
            "type": "string"
          },
          "pageSize": {
            "description": "Number of elements per page",
            "example": 10,
            "format": "int32",
            "type": "integer"
          },
          "previousLink": {
            "description": "Link to previous page.",
            "nullable": true,
            "type": "string"
          },
          "totalCount": {
            "description": "Total number of elements",
            "example": 100,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "totalPages": {
            "description": "Total number of pages if page number based pagination is used.",
            "example": 6,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "hasNextPage",
          "pageSize"
        ],
        "type": "object"
      },
      "V2Pathway": {
        "properties": {
          "creationDate": {
            "format": "date-time",
            "type": "string"
          },
          "draftLastUpdatedAt": {
            "format": "date-time",
            "type": "string"
          },
          "draftStructureVersion": {
            "format": "int32",
            "type": "integer"
          },
          "hasDraftChanges": {
            "type": "boolean"
          },
          "hasThirdPartyBadges": {
            "type": "boolean"
          },
          "issuerId": {
            "description": "ID of the issuer where the pathway was created",
            "example": "62aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "lastPublishedAt": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "pathwayId": {
            "example": "66aa04adf5afe00d0a6dac72",
            "nullable": true,
            "type": "string"
          },
          "preferences": {
            "$ref": "#/components/schemas/V2PathwayPreferences"
          },
          "root": {
            "$ref": "#/components/schemas/V2PathwayElement"
          }
        },
        "required": [
          "creationDate",
          "draftLastUpdatedAt",
          "draftStructureVersion",
          "hasDraftChanges",
          "hasThirdPartyBadges",
          "issuerId",
          "preferences",
          "root"
        ],
        "type": "object"
      },
      "V2PathwayAggregateProgress": {
        "properties": {
          "calculationInfo": {
            "$ref": "#/components/schemas/V2PathwayProgressCalculationInfo"
          },
          "id": {
            "example": "61aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "pathwayId": {
            "example": "66aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "progressAggregate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/V2ProgressAggregate"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "calculationInfo",
          "id",
          "pathwayId"
        ],
        "type": "object"
      },
      "V2PathwayElement": {
        "properties": {
          "alignmentUrl": {
            "example": "www.example.com/skills/E1",
            "nullable": true,
            "type": "string"
          },
          "children": {
            "description": "Children steps of this pathway.",
            "example": [],
            "items": {
              "$ref": "#/components/schemas/V2PathwayElement"
            },
            "type": "array"
          },
          "completionBadge": {
            "description": "The URL of the badge awarded for completing this step.",
            "example": "https://api.staging.badgr.dev/public/badges/ngurEbvbQiCAs5EkwEgIBw",
            "nullable": true,
            "type": "string"
          },
          "description": {
            "example": "Complete Math 101 course",
            "nullable": true,
            "type": "string"
          },
          "elementId": {
            "description": "Unique ID of the pathway step. It must be a valid ObjectId.",
            "example": "65aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "frameworkName": {
            "example": "OSMT",
            "nullable": true,
            "type": "string"
          },
          "name": {
            "example": "Math 101",
            "type": "string"
          },
          "requiredForParentCompletion": {
            "default": true,
            "description": "Determines whether this step is requires for the completion of its parent",
            "type": "boolean"
          },
          "requirements": {
            "$ref": "#/components/schemas/V2PathwayElementRequirements"
          },
          "shortCode": {
            "example": "M101",
            "nullable": true,
            "type": "string"
          },
          "targetCode": {
            "example": "E1",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "elementId",
          "name"
        ],
        "type": "object"
      },
      "V2PathwayElementAggregateProgress": {
        "properties": {
          "courseProgress": {
            "$ref": "#/components/schemas/V2CourseProgressAggregate"
          },
          "experienceProgress": {
            "$ref": "#/components/schemas/V2ExperienceProgressAggregate"
          },
          "overallProgress": {
            "$ref": "#/components/schemas/V2FractionalProgressAggregate"
          }
        },
        "required": [
          "courseProgress",
          "experienceProgress",
          "overallProgress"
        ],
        "type": "object"
      },
      "V2PathwayElementCappedProgress": {
        "description": "Number of requirements by status, capped by the minimum required count for each requirement type (child, indirect, direct).",
        "properties": {
          "completed": {
            "description": "Number of completed requirements capped by the minimum required count for each type.",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "directRequirementFailed": {
            "description": "Number of failed direct requirements (e.g. experience) capped by the minimum required count for each type.",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "failed": {
            "description": "Number of failed requirements capped by the minimum required count for each type. Failed = preRequisiteStepFailed + directRequirementFailed",
            "example": 2,
            "format": "int32",
            "type": "integer"
          },
          "inProgress": {
            "description": "Number of in-progress requirements capped by the minimum required count for each type.",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "notStarted": {
            "description": "Number of requirements that have not been started yet capped by the minimum required count for each type.",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "preRequisiteStepFailed": {
            "description": "Number of failed prerequisite-step requirements capped by the minimum required count for each type.",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "required": {
            "description": "Minimum number of requirements across all requirements required for completion.",
            "example": 5,
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "completed",
          "directRequirementFailed",
          "failed",
          "inProgress",
          "notStarted",
          "preRequisiteStepFailed",
          "required"
        ],
        "type": "object"
      },
      "V2PathwayElementProgress": {
        "description": "Progress on the specified element",
        "properties": {
          "badgeProgress": {
            "$ref": "#/components/schemas/V2BadgeRequirementsProgress"
          },
          "cappedProgress": {
            "$ref": "#/components/schemas/V2PathwayElementCappedProgress"
          },
          "completedByShortcut": {
            "type": "boolean"
          },
          "completionBadgeNewlyAwarded": {
            "type": "boolean"
          },
          "courseProgress": {
            "$ref": "#/components/schemas/V2CourseRequirementsProgress"
          },
          "experienceProgress": {
            "$ref": "#/components/schemas/V2ExperienceRequirementsProgress"
          },
          "status": {
            "enum": [
              "COMPLETED",
              "FAILED",
              "IN_PROGRESS",
              "NOT_STARTED"
            ],
            "type": "string"
          }
        },
        "required": [
          "badgeProgress",
          "cappedProgress",
          "completedByShortcut",
          "completionBadgeNewlyAwarded",
          "courseProgress",
          "experienceProgress",
          "status"
        ],
        "type": "object"
      },
      "V2PathwayElementRequirements": {
        "description": "The requirements to complete this step.",
        "properties": {
          "allowCompletionBadgeShortcut": {
            "description": "Determines whether this step can be completed with earning the completion badge regardless of the status of the specified requirements",
            "type": "boolean"
          },
          "badgeRequirements": {
            "$ref": "#/components/schemas/V2RequiredBadges"
          },
          "childElementRequirements": {
            "$ref": "#/components/schemas/V2RequiredChildElements"
          },
          "courseRequirements": {
            "$ref": "#/components/schemas/V2RequiredCourses"
          },
          "experienceRequirements": {
            "$ref": "#/components/schemas/V2RequiredExperiences"
          },
          "nonChildElementRequirements": {
            "$ref": "#/components/schemas/V2RequiredNonChildElements"
          },
          "requiredCriteriaCount": {
            "description": "The number of requirements (excluding child and non-child steps) necessary to complete this step. If not specified, all requirements will be necessary.",
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "shortcutBadges": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "V2PathwayEndProgress": {
        "properties": {
          "completed": {
            "description": "Number of completed elements by the learner",
            "example": 4,
            "format": "int32",
            "type": "integer"
          },
          "failed": {
            "description": "Number of failed elements by the learner",
            "example": 1,
            "format": "int32",
            "type": "integer"
          },
          "inProgress": {
            "description": "Number of in-progress elements by the learner",
            "example": 3,
            "format": "int32",
            "type": "integer"
          },
          "notStarted": {
            "description": "Number of elements that have not been started yet by the learner",
            "example": 2,
            "format": "int32",
            "type": "integer"
          },
          "required": {
            "description": "Number of required elements on the pathway excluding root.",
            "example": 10,
            "format": "int32",
            "type": "integer"
          },
          "status": {
            "description": "End status of the pathway. Note: status might be COMPLETED without completing all required elements if it contains \"2 out of 3\" type of condition(s) for pre-requisite steps.",
            "enum": [
              "COMPLETED",
              "FAILED",
              "IN_PROGRESS",
              "NOT_STARTED"
            ],
            "type": "string"
          }
        },
        "required": [
          "completed",
          "failed",
          "inProgress",
          "notStarted",
          "required",
          "status"
        ],
        "type": "object"
      },
      "V2PathwayForCreation": {
        "properties": {
          "draftRoot": {
            "$ref": "#/components/schemas/V2PathwayElement"
          },
          "issuerId": {
            "description": "ID of the issuer where the pathway will be created",
            "example": "62aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "preferences": {
            "$ref": "#/components/schemas/V2PathwayPreferences"
          }
        },
        "required": [
          "draftRoot",
          "issuerId",
          "preferences"
        ],
        "type": "object"
      },
      "V2PathwayForUpdate": {
        "properties": {
          "issuerId": {
            "type": "string"
          },
          "root": {
            "$ref": "#/components/schemas/V2PathwayElement"
          }
        },
        "required": [
          "issuerId",
          "root"
        ],
        "type": "object"
      },
      "V2PathwayGroupProgress": {
        "properties": {
          "calculationInfo": {
            "$ref": "#/components/schemas/V2PathwayProgressCalculationInfo"
          },
          "id": {
            "example": "61aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "pathwayId": {
            "example": "66aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "progressAggregate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/V2ProgressAggregate"
              }
            ],
            "nullable": true
          },
          "scope": {
            "$ref": "#/components/schemas/RecipientGroupAggregate"
          }
        },
        "required": [
          "calculationInfo",
          "id",
          "pathwayId",
          "scope"
        ],
        "type": "object"
      },
      "V2PathwayInfo": {
        "properties": {
          "draftCompletionBadgeUrl": {
            "example": "https://api.staging.badgr.dev/public/badges/ngurEbvbQiCAs5EkwEgIBw",
            "nullable": true,
            "type": "string"
          },
          "draftName": {
            "example": "Road",
            "type": "string"
          },
          "issuerId": {
            "example": "62aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "issuerName": {
            "description": "Name of the issuer the pathway belongs to.",
            "example": "Springfield University",
            "type": "string"
          },
          "issuerVerified": {
            "description": "Whether the pathway's issuer is verified, i.e. it belongs to an organization.",
            "example": true,
            "type": "boolean"
          },
          "lastPublishedAt": {
            "description": "When the pathway was last published. Null for pathways that have never been published.",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "pathwayGroupLtiToolCountsByLmsType": {
            "additionalProperties": {
              "format": "int32",
              "type": "integer"
            },
            "example": {
              "Blackboard": 3,
              "Canvas": 2,
              "Moodle": 4,
              "Other": 5
            },
            "type": "object"
          },
          "pathwayId": {
            "example": "66aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "publishedCompletionBadgeUrl": {
            "example": "https://api.staging.badgr.dev/public/badges/ngurEbvbQiCAs5EkwEgIBw",
            "nullable": true,
            "type": "string"
          },
          "publishedName": {
            "example": "Highway",
            "nullable": true,
            "type": "string"
          },
          "subscribedGroupCount": {
            "example": 2,
            "format": "int32",
            "type": "integer"
          },
          "uniqueMemberCount": {
            "example": 100,
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "draftName",
          "issuerId",
          "issuerName",
          "issuerVerified",
          "pathwayGroupLtiToolCountsByLmsType",
          "pathwayId",
          "subscribedGroupCount",
          "uniqueMemberCount"
        ],
        "type": "object"
      },
      "V2PathwayInfoResponse": {
        "properties": {
          "pathwayInfos": {
            "items": {
              "$ref": "#/components/schemas/V2PathwayInfo"
            },
            "type": "array"
          }
        },
        "required": [
          "pathwayInfos"
        ],
        "type": "object"
      },
      "V2PathwayPreferences": {
        "properties": {
          "includeOnPublicPages": {
            "default": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "V2PathwayProgressCalculationInfo": {
        "properties": {
          "computedDate": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "computedPublishedStructureVersion": {
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "computedVersion": {
            "format": "int64",
            "nullable": true,
            "type": "integer"
          },
          "stale": {
            "type": "boolean"
          },
          "staleBeforeVersion": {
            "format": "int64",
            "type": "integer"
          }
        },
        "required": [
          "stale",
          "staleBeforeVersion"
        ],
        "type": "object"
      },
      "V2PathwayRecipientProgress": {
        "properties": {
          "calculationInfo": {
            "$ref": "#/components/schemas/V2PathwayProgressCalculationInfo"
          },
          "id": {
            "example": "61aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "pathwayId": {
            "example": "66aa04adf5afe00d0a6dac72",
            "type": "string"
          },
          "progress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/V2Progress"
              }
            ],
            "nullable": true
          },
          "scope": {
            "$ref": "#/components/schemas/Recipient"
          }
        },
        "required": [
          "calculationInfo",
          "id",
          "pathwayId",
          "scope"
        ],
        "type": "object"
      },
      "V2PathwaySubscriptionChange": {
        "properties": {
          "groupIdsToAdd": {
            "items": {
              "example": "61aa04adf5afe00d0a6dac72",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "groupIdsToRemove": {
            "items": {
              "example": "67aa04adf5afe00d0a6dac72",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "groupIdsToAdd",
          "groupIdsToRemove"
        ],
        "type": "object"
      },
      "V2PointScoreRequirement": {
        "allOf": [
          {
            "$ref": "#/components/schemas/V2CompletionRequirement"
          },
          {
            "properties": {
              "@type": {
                "enum": [
                  "pointScore"
                ],
                "type": "string"
              },
              "doNotAwardBefore": {
                "description": "Do not progress this requirement before this date",
                "format": "date-time",
                "nullable": true,
                "type": "string"
              },
              "maxPoints": {
                "description": "Maximum points possible for this assignment",
                "format": "double",
                "nullable": true,
                "type": "number"
              },
              "minThreshold": {
                "format": "double",
                "type": "number"
              }
            },
            "type": "object"
          }
        ],
        "required": [
          "minThreshold"
        ],
        "type": "object"
      },
      "V2Progress": {
        "description": "Describes progress of the recipient. Might be missing if progress was not calculated yet.",
        "properties": {
          "elementProgress": {
            "additionalProperties": {
              "$ref": "#/components/schemas/V2PathwayElementProgress"
            },
            "description": "Progress by element ID",
            "type": "object"
          },
          "endProgress": {
            "$ref": "#/components/schemas/V2PathwayEndProgress"
          }
        },
        "required": [
          "elementProgress",
          "endProgress"
        ],
        "type": "object"
      },
      "V2ProgressAggregate": {
        "description": "Describes progress for the group. Might be missing if progress was not calculated yet.",
        "properties": {
          "elementProgress": {
            "additionalProperties": {
              "$ref": "#/components/schemas/V2PathwayElementAggregateProgress"
            },
            "type": "object"
          }
        },
        "required": [
          "elementProgress"
        ],
        "type": "object"
      },
      "V2PublicIssuer": {
        "properties": {
          "badgeSkillLinkingPreferences": {
            "$ref": "#/components/schemas/ApiBadgeSkillLinkingPreferences"
          },
          "issuerId": {
            "example": "67e9d238c5afe622816febb3",
            "nullable": true,
            "type": "string"
          },
          "obIssuer": {
            "$ref": "#/components/schemas/OB.Issuer"
          },
          "organizationId": {
            "example": "65e9d238c5afe622816febb3",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "badgeSkillLinkingPreferences",
          "obIssuer"
        ],
        "type": "object"
      },
      "V2RecipientId": {
        "required": [
          "@type"
        ],
        "type": "object"
      },
      "V2RequiredBadges": {
        "properties": {
          "countRule": {
            "deprecated": true,
            "description": "Deprecated in favor of the step-level requiredCriteriaCount field",
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2AllButNRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AllRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AtLeastNRequirementCountRule"
              }
            ]
          },
          "requiredBadges": {
            "items": {
              "$ref": "#/components/schemas/V2BadgeRequirement"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "requiredBadges"
        ],
        "type": "object"
      },
      "V2RequiredChildElements": {
        "properties": {
          "countRule": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2AllButNRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AllRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AtLeastNRequirementCountRule"
              }
            ]
          }
        },
        "type": "object"
      },
      "V2RequiredCourses": {
        "properties": {
          "requiredCourses": {
            "items": {
              "$ref": "#/components/schemas/V2CourseRequirement"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "V2RequiredExperiences": {
        "properties": {
          "requiredExperiences": {
            "items": {
              "$ref": "#/components/schemas/V2ExperienceRequirement"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "V2RequiredNonChildElements": {
        "properties": {
          "countRule": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/V2AllButNRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AllRequirementCountRule"
              },
              {
                "$ref": "#/components/schemas/V2AtLeastNRequirementCountRule"
              }
            ]
          },
          "elementIds": {
            "description": "IDs of the required indirect steps.",
            "items": {
              "description": "IDs of the required indirect steps.",
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "V2RequirementCountRule": {
        "required": [
          "@type"
        ],
        "type": "object"
      },
      "V2RequirementProgressAggregateV2CourseRequirementId": {
        "description": "Progress for each course requirement defined on the element.",
        "properties": {
          "completed": {
            "description": "Number of recipients that completed this requirement.",
            "example": 5,
            "format": "int32",
            "type": "integer"
          },
          "requirementId": {
            "$ref": "#/components/schemas/V2CourseRequirementId"
          }
        },
        "required": [
          "completed",
          "requirementId"
        ],
        "type": "object"
      },
      "V2User": {
        "properties": {
          "agreedTermsVersion": {
            "description": "The version of the terms of use that the user has agreed to",
            "example": 4,
            "format": "int32",
            "nullable": true,
            "type": "integer"
          },
          "badgrDomain": {
            "description": "The front-end domain of badgr (whitelabel) the user should use",
            "example": "badgrsupportgroup.badgr.com",
            "nullable": true,
            "type": "string"
          },
          "emails": {
            "description": "Emails of the user",
            "items": {
              "$ref": "#/components/schemas/V2UserEmail"
            },
            "type": "array"
          },
          "entityId": {
            "description": "Unique identifier for this BadgeUser",
            "example": "Hey7J-GRSJeu6FNnHQwNyw",
            "type": "string"
          },
          "entityType": {
            "example": "BadgeUser",
            "type": "string"
          },
          "firstName": {
            "description": "Given name",
            "example": "Jane",
            "type": "string"
          },
          "hasAgreedToLatestTermsVersion": {
            "type": "boolean"
          },
          "hasPasswordSet": {
            "nullable": true,
            "type": "boolean"
          },
          "id": {
            "example": "5f16c84d1ff787222b6c4d15",
            "type": "string"
          },
          "isImplementationUser": {
            "description": "Whether this user is an implementation user",
            "example": false,
            "type": "boolean"
          },
          "isSuperUser": {
            "description": "Whether this user has superuser privileges",
            "example": false,
            "type": "boolean"
          },
          "lastName": {
            "description": "Family name",
            "example": "Doe",
            "type": "string"
          },
          "marketingOptIn": {
            "description": "Indicates if the user has opted in to marketing communications",
            "example": true,
            "nullable": true,
            "type": "boolean"
          },
          "recipient": {
            "allOf": [
              {
                "$ref": "#/components/schemas/V2UserRecipient"
              }
            ],
            "nullable": true
          },
          "telephone": {
            "description": "List of verified telephone identifiers associated with the user profile",
            "items": {
              "description": "List of verified telephone identifiers associated with the user profile",
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "description": "List of verified URL identifiers associated with the user profile",
            "format": "uri",
            "items": {
              "description": "List of verified URL identifiers associated with the user profile",
              "format": "uri",
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "emails",
          "entityId",
          "entityType",
          "firstName",
          "hasAgreedToLatestTermsVersion",
          "id",
          "isImplementationUser",
          "isSuperUser",
          "lastName",
          "telephone",
          "url"
        ],
        "type": "object"
      },
      "V2UserEmail": {
        "description": "Emails of the user",
        "properties": {
          "caseVariants": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "email": {
            "description": "Email address",
            "example": "Jane.Doe@example.com",
            "format": "email",
            "type": "string"
          },
          "primary": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          }
        },
        "required": [
          "caseVariants",
          "email",
          "primary",
          "verified"
        ],
        "type": "object"
      },
      "V2UserForUpdate": {
        "properties": {
          "firstName": {
            "example": "Jane",
            "type": "string"
          },
          "lastName": {
            "example": "Doe",
            "type": "string"
          },
          "marketingOptIn": {
            "example": true,
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "V2UserRecipient": {
        "description": "Primary recipient identifier of the user.",
        "properties": {
          "identity": {
            "example": "jane.doe@example.com",
            "type": "string"
          },
          "type": {
            "enum": [
              "email",
              "url",
              "telephone"
            ],
            "type": "string"
          }
        },
        "required": [
          "identity",
          "type"
        ],
        "type": "object"
      },
      "Verification": {
        "properties": {
          "allowedOrigins": {
            "items": {
              "type": "string"
            },
            "nullable": true,
            "type": "array",
            "uniqueItems": true
          },
          "creator": {
            "nullable": true,
            "type": "string"
          },
          "startsWith": {
            "nullable": true,
            "type": "string"
          },
          "type": {
            "enum": [
              "HostedBadge",
              "SignedBadge"
            ],
            "type": "string"
          },
          "url": {
            "nullable": true,
            "type": "string"
          },
          "verificationProperty": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "accessToken": {
        "scheme": "Bearer",
        "type": "http"
      },
      "oauth": {
        "description": "OAuth2 authorizationCode flow is currently not functional on the Swagger UI.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://badges.parchment.com/auth/oauth2/authorize",
            "scopes": {
              "r:backpack": "List assertions in your backpack",
              "r:issuer": "Read badge classes and assertions in your issuers",
              "r:org": "Read organization data",
              "r:profile": "See who you are",
              "rw:backpack": "Upload badges to your backpack",
              "rw:issuer": "Award badges and update your issuers",
              "rw:org": "Associate issuers with your organization and update organization data",
              "rw:profile": "Update your profile"
            },
            "tokenUrl": "https://api.badges.parchment.com/o/token/"
          }
        },
        "type": "oauth2"
      }
    }
  },
  "info": {
    "description": "## Authentication\n\nYou'll authenticate requests with the Parchment Digital Badges API domain for your region (see the _Parchment Digital\nBadges Environments & Regions_ section).\nAuthenticate requests by including an Authorization header of type \"Bearer\". For example:\n\n```bash\ncurl 'https://{BADGES_DOMAIN}/v2/users/self' -H \"Authorization: Bearer YOURACCESSTOKEN\"\n```\n\n## Access Tokens\n\nTo retrieve an access token, POST a username/password combination to /o/token. For example:\n\n```bash\ncurl -X POST 'https://{BADGES_DOMAIN}/o/token' -d \"username=YOUREMAIL&password=YOURPASSWORD\"\n```\n\nreturns a response like:\n\n```json\n{\n  \"access_token\": \"YOURACCESSTOKEN\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 86400,\n  \"refresh_token\": \"YOURREFRESHTOKEN\"\n}\n```\n\n## Token Expiration\n\nAccess tokens will expire, if an expired token is used a 401 status code will be returned.\n\nThe refresh token can be used to automatically renew an access token without requiring the password again. For example:\n\n```bash\ncurl -X POST 'https://{BADGES_DOMAIN}/o/token' -d \"grant_type=refresh_token&refresh_token=YOURREFRESHTOKEN\"\n```\n\n## Pagination\n\nWhen a response is paginated, the response headers will include a link header. If the endpoint does not support pagination, or if all results fit on a single page, the link header will be omitted.\n\nThe link header contains URLs that you can use to fetch additional pages of results. For example, the previous and next page of results.\n\nIf the response is paginated, the link header will look something like this:\n\n```\nlink: <https://{BADGES_DOMAIN}/v2/issuers/ENTITY_ID/assertions?num=2&before=CURSOR>; rel=\"prev\",\n<https://{BADGES_DOMAIN}/v2/issuers/ENTITY_ID/assertions?num=10&after=CURSOR>; rel=\"next\"\n```\n\nThe link header provides the URL for the previous and next page of results:\n\nThe URL for the previous page is followed by rel=\"prev\".\nThe URL for the next page is followed by rel=\"next\".\nIn some cases, only a subset of these links are available. For example, the link to the previous page won't be included if you are on the first page of results.\n\nYou can use the URLs from the link header to request another page of results.\n\n## Developer articles\n\n<details>\n<summary>Build an app that integrates with the Parchment Digital Badges API</summary>\n## What is a Parchment Digital Badges Connected App?\n\nA Parchment Digital Badges Connected App is any web service that makes use of Open Badges as an issuer or displayer. If\nyou want to bring verifiable achievements into your ecosystem, connect to Parchment Digital Badges’s API to make it\neasy.\n\n**Issuer Apps**\n\nIssuer apps react to events in their own domain to award new badges to users.\n\n**Displayer Apps**\n\nDisplayer apps help users show off and get value from the badges they have earned.\n\n### Connecting to Parchment Digital Badges\n\n#### API Access with OAuth2 Authorization Code Grants\n\nParchment Digital Badges offers OAuth2 Identity Provider/Authorization Server/Resource Server functionality to help your\nConnected App securely obtain a user-specific API token to use to access that user’s badges. You can add a **Connect to\nParchment Digital Badges** or **Login with Parchment Digital Badges** button to your service. There are several\nParchment Digital Badges servers deployed in different regions around the world, and your app can connect with each\ndesired Parchment Digital Badges region separately. In order to sign OAuth requests to a particular Parchment Digital\nBadges server, your service needs to establish a shared secret with the administrator of that Parchment Digital Badges\nserver.\n\nYou can build apps that connect with Parchment Digital Badges. Contact Parchment Digital Badges to request an\napplication key and secret for signing your OAuth requests. Describe what you’re planning on building and what type of\ninformation you need from Parchment Digital Badges users.\n\n##### Requesting access to the Parchment Digital Badges API\n\nFor each availability region of the Parchment Digital Badges service, when you request a developer key, an application\nrecord will be created with a key and secret. When you request a key, make sure to describe which region you would like\nto use (Test sandbox, Australia, Canada, EU/Ireland, Singapore or US). These regional servers also have their own UI and\nAPI domain, so be sure to use the correct domain based on which server you are using (see the _Parchment Digital Badges\nEnvironments & Regions_ section for more information). We use the US production server as a default in our\ndocumentation. The ability to automatically obtain a key and secret for certain types of applications is also available\nvia the [Badge Connect (Open Badges 2.1)](https://www.imsglobal.org/spec/ob/v2p1/) protocol. These scopes allow your app\nto access a user's backpack to read their badges or send them new badges.\n\n##### Permission Scopes\n\nIssuer and displayer apps need some combination of permissions to issuer and backpack (recipient) API endpoints. These\nare accomplished by requesting a set of permission scopes when you register your application with the Parchment Digital\nBadges server administrator. These scopes or a subset of them will be available to you when you request authorization on\nbehalf of a user of your app.\n\n**Profile Scope (Automatic)**\n\n- **r:profile** This allows you to get information about the user that they have defined in Parchment Digital Badges,\n  including their firstname, lastname, and registered email addresses. This scope is automatically available. It gives\n  you the ability to access the GET _**/v2/user/profile**_ endpoint.\n\n**Issuer Scopes**\n\n- **r:issuer** This allows you to get information about the issuer profiles where the authenticated user acts as a staff member, editor, or owner. You may view issuer metadata, badges defined by these issuers, and badge awards granted by these issuers.\n- **rw:issuer** This allows read/write access to the resources above, to the extent that the authenticated user may perform these actions. \"Staff\" level users may read all data and award new instances of defined badges; \"Editor\" level users may also define new BadgeClasses and edit existing ones. \"Owner\" members may modify the staff list.\n\n**Backpack Scopes**\n\n- **r:backpack** Allows you to read assertions that the user has received from issuers on this Parchment Digital Badges\n  server or imported into their backpack from external Open Badges issuers.\n- **rw:backpack** Allows you to read, create, and update assertions and collections of assertions. For assertions, this means you can trigger import of an Open Badges assertion defined elsewhere, pushing it to the recipient’s backpack.\n\n##### The OAuth2 Dance (Authorization Code grant workflow)\n\nOnce you have emailed us your Scope and Redirect URIs and we have replied with a _**client_id**_ and _**client_secret**_\n—we can dance. Suppose a Parchment Digital Badges user would like to grant you access to her badges, issuers and profile\ninformation. First, create a “Login with Parchment Digital Badges” button on your website that links to the following\nURI (line breaks added for readability):\n\n`https://badges.parchment.com/auth/oauth2/authorize?`\n\n`client_id=123&redirect_uri=https%3A%2F%2Fexample.com%2Fauth&scope=r%3Aprofile%20rw%3Aissuer%20r%3Abackpack`\n\nSet _**client_id**_ to the Client ID you received from the Parchment Digital Badges team. Set _**redirect_uri**_ to the\nRedirect URI for your application (url encode this and all parameters). We use this to redirect the user back to your\nwebsite with an Authorization Code after they have logged in and granted you access. Set _**scope**_ to the level of\naccess you are requesting.\n\nAfter Parchment Digital Badges redirects the user back to your application with the Authorization Code in the query\nparameter _**code**_ your application will need to exchange that temporary code for a long-lived Access Token via a POST\nrequest. Here’s an example using _**curl**_:\n\n```bash\ncurl https://api.badges.parchment.com/o/token \\\n-d \"grant_type=authorization_code&code=XYZ&client_id=123&client_secret=ABC&redirect_uri=https://example.com/auth\"\n```\n\n**Note**: You may pass a state parameter, which should be a URL-safe URL-encoded string. For example, you may encode a small snippet of JSON. This parameter will be passed back to you at your Redirect URL\n\nExchange this _**authorization_code**_ for an access token.\n\n```bash\ncurl https://api.badges.parchment.com/o/token \\\n-d \"grant_type=authorization_code&code=authorization_code\"\n```\n\nAnd that’s it! You’re done. You’ll receive a document like this:\n\n```json\n{\n  \"token_type\": \"Bearer\",\n  \"access_token\": \"C1HePsbwS3tUmwC6OCKsC41w96xckc\",\n  \"expires_in\": 86400,\n  \"refresh_token\": \"xwHPFwH55tQpCy3qCgsIW59k3g3aPh\",\n  \"scope\": \"rw:issuer rw:profile rw:backpack\"\n}\n```\n\nAnd that’s it! You can store the access token in your application. You may now use the _**access_token**_ obtained from\nthis request to authenticate API requests. See Using the Parchment Digital Badges API below.\n\nYour access token will expire (by default, 24 hours after issue). At that point, you may refresh it using the refresh_token included with the token. Refresh tokens are long-lived and must be stored securely. Access tokens also must be stored securely, but are lower risk due to their shorter duration. You may obtain a new access token using your refresh token by making a new POST to the authorization endpoint.\n\n```bash\ncurl https://api.badges.parchment.com/o/token -X POST \\\n-d \"grant_type=refresh_token&refresh_token=YOURREFRESHTOKEN&client_id=YOURCLIENTID&client_secret=YOURCLIENTSECRET\"\n```\n\nYou will get back a new token document, including a new _**access_token**_ and _**refresh_token**_. The new access token will be valid for the identified number of seconds.\n\n**Note:** If you have given us a _**localhost**_ Redirection URI remember to use our test sandbox environment's\nendpoints for testing. Use\n_**[https://test.badges.parchment.com/auth/oauth2/authorize](https://test.badges.parchment.com/auth/oauth2/authorize)**_\nand _**[https://api.test.badges.parchment.com/o/token](https://api.test.badges.parchment.com/o/token)**_. For more\ndetailed information on OAuth2 read RFC 6749 [https://tools.ietf.org/html/rfc6749](https://tools.ietf.org/html/rfc6749).\nFor production environments, HTTPS is required for redirect URIs, and localhost or developer machine tunnel domains are\nnot permitted.\n\n#### Using the Parchment Digital Badges API\n\nView the Parchment Digital Badges [API Docs](https://api.badges.parchment.com/docs)\n\nTo authenticate a request using an OAuth token use the Authorization header with a value of _**Bearer**_, a space character, then the token you have obtained. E.g. _**Authorization: Bearer cZTp1ZMMSasZ4mbP2u2Pjt4NH3AVIf**_\n\nRequests to the /v2/ API are all returned by default in JSON with a default response envelope. If successful, the\n_**result**_ key will have a \\[\\] list of result objects, and single results will appear as a single entry within this\nJSON array. Try out the OAuth flow and making requests by creating\na [free account](https://badges.parchment.com/signup/) and clicking the Authorize button on\nthe [API Docs](https://api.badges.parchment.com/docs).\n\n</details>\n\n<details>\n<summary>Parchment Digital Badges App Developers API Guide Quickstart</summary>\n## Quickstart: Issuing Open Badges with the Parchment Digital Badges  API\n\nHere are some guided examples through which you can learn how to use the Parchment Digital Badges API by showing you how\nto authenticate, create an Issuer, define a BadgeClass, and issue an Assertion. There are many more things that you can\ndo with the Parchment Digital Badges API. See full Parchment Digital\nBadges [API Docs](https://api.badges.parchment.com/) (US region) for a list of endpoints.\n\n### Regional Environments\n\nWe support servers in various regions as well as a test server. The UI domain and API domain vary based on which server\nyou are using. Please review the domains for Parchment Digital Badges environments around the globe. We use the US\ndomain as a default in our documentation so be sure to substitute the proper domain if you are not using the US\nproduction servers.\n\n#### Authentication\n\nParchment Digital Badges uses OAuth2 for most operations. As an API client user, you may obtain an OAuth2 Bearer Token\non behalf of your own Parchment Digital Badges user account using a password-based grant, or you can obtain such auth\ntokens on behalf of many users by registering your own Connected App. See more about registering for an app key and\nsecret in the _Developers: Build an app that integrates with the Parchment Digital Badges API_ section.\n\n##### Obtaining a Token\n\nThis guide will focus on getting started quickly, so we’ll use a password-based grant on Parchment Digital Badges’s\nUS-based free hosted service, or use a different region as described above. Request authentication by making a POST\nrequest to _**[https://api.badges.parchment.com/o/token](https://api.badges.parchment.com/o/token)**_ with your email\naddress and password as the _**username**_ and _**password**_ request parameters. This request may be made with a JSON\nrequest body, form-data, or x-www-form-urlencoded.\n\nFor example, from cURL:\n_**curl -X POST '[https://api.badges.parchment.com/o/token](https://api.badges.parchment.com/o/token)' -d \"\nusername=YOUREMAIL&password=YOURPASSWORD\"**_\n\nYou’ll receive a document in response like the following:\n\n```json\n{\n  \"access_token\": \"YOURACCESSTOKEN\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 86400,\n  \"refresh_token\": \"YOURREFRESHTOKEN\"\n}\n```\n\n**Don’t have a password on your account?** In order to use the password-based grant, you need to set a password on your\naccount. You might not have one already if you created your account via sign-in from an external identity provider, such\nas Facebook or Google. You can add a password once signed in from your Profile page. If you don’t yet have an account,\nsign up for a free one [here](https://badges.parchment.com/signup). You will need a verified email address to access the\nfollowing APIs, so make sure to complete that step.\n\n##### Authenticating requests with an OAuth2 Bearer token\n\nAdd an _**Authorization**_ header to each of the subsequent API requests with a value of _**Bearer**_ _**YOURACCESSTOKEN**_, (replacing YOURACCESSTOKEN with the value of the _**access_token**_ key in the above response).\n\nYou may use this token to request any API that your user has access to (the default “scope” you obtained above was very permissive – _**rw:profile rw:issuer rw:backpack**_, so it can be used to make any of the API calls your user needs to make).\n\nFor example, in a request to retrieve the user’s own profile made from cURL, this header would be set like:\n_**curl '[https://api.badges.parchment.com/v2/users/self](https://api.badges.parchment.com/v2/users/self)' -H \"\nAuthorization: Bearer YOURACCESSTOKEN\"**_\n\n##### Response Envelope\n\nAll responses from the V2 Parchment Digital Badges API that have a body wrap this body in a JSON response envelope that\nprovides the resulting data of the request as well as metadata about the success or failure of the request. Result is\nalways a list (\\[\\]) even when there is only a single entity or no entities in the result.\n\nAn example successful response body:\n\n```json\n{\n  \"status\": {\n    \"description\": \"ok\",\n    \"success\": true\n  },\n  \"result\": [\n    {\n      \"entityId\": \"g66EErPYSZOyssbD79U3zB\"\n    }\n  ]\n}\n```\n\nEach of the entities in the following examples will be returned upon successful creation will have an _**entityId**_ property that will be used to identify it for subsequent API calls (typically in the request path when creating or viewing related entities).\n\nAn example unsuccessful response body:\n\n```json\n{\n  \"status\": {\n    \"description\": \"bad request\",\n    \"success\": false\n  },\n  \"result\": [],\n  \"validationErrors\": [\n    \"Form-level errors (crossing multiple fields) appear here.\"\n  ],\n  \"fieldErrors\": {\n    \"name\": [\"This field is required.\"]\n  }\n}\n```\n\nThe _**validationErrors**_ and _**fieldErrors**_ properties only appear in the document when _**status.success**_ is false.\n\n#### Issuer API\n\nSome of the most important API calls that clients make against the Parchment Digital Badges API are to issue badges.\nIssuing manually via the web interface is great, but in order to scale your badge issuing programs, you’ve got to start\nautomating, and the Parchment Digital Badges API makes it easy. Every badge is awarded by an Issuer, so we’ll start by\ncreating an Issuer Profile, then we’ll define the BadgeClass to award, and finally we’ll award an Assertion of that\nBadgeClass.\n\nEach of the three requests we’ll start with in this section is a POST request. We recommend using the API in JSON for both request body _**Content-Type**_ and response body content. By default if you do not specify an _**Accept: application/json**_ header, JSON will be returned.\n\n##### Create Issuer Profile\n\n**Request Path**: /v2/issuers\n\nAn Issuer Profile describes an organization or person that awards Open Badges. It is published as the Open Badges Profile [https://openbadgespec.org/#Profile](https://openbadgespec.org/#Profile) class.\n\nProperties:\n\n- _**name**_ is required: string.\n- _**description**_ is required: string.\n- _**url**_ is required. This should be a fully-qualified URL of a page that describes this issuer/program.\n- _**image**_ is optional should be base-64 encoded strings and may only be PNG or SVG. For example, a small PNG image file should appear like this in request bodies that require an image field: _**\"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN0nmxRDwADvgGPapFGzwAAAABJRU5ErkJggg==\"**_\n- _**email**_ must be a verified email on the authenticating user’s Parchment Digital Badges account. Get\n  _**/v2/users/self**_ to retrieve your profile and see your verified email addresses.\n\n##### Define BadgeClass\n\n**Request Path**: /v2/issuers/**:issuer_entity_id**/badgeclasses A BadgeClass is a type of badge that an Issuer may award over and over (creating many Assertions of that BadgeClass, each for a different recipient). See Open Badges Specification: BadgeClass [https://openbadgespec.org/#BadgeClass](https://openbadgespec.org/#BadgeClass)\n\nProperties:\n\n- _**name**_ is required: string.\n- _**description**_ is required: string.\n- _**image**_ is required and may only be PNG or SVG format. For example, a small PNG image file should appear like this in request bodies that require an image field: _**\"image\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN0nmxRDwADvgGPapFGzwAAAABJRU5ErkJggg==\"**_\n- Criteria is required. One or both of _**criteriaNarrative**_ (a markdown-formatted string) and/or _**criteriaUrl**_ (a fully-qualified URL of a page representing the criteria for this badge) must be supplied.\n- _**tags**_ is optional. If present, it should be a list (\\[\\]) of one or more strings;\n- _**alignments**_ is optional. If present, it should be a list (\\[\\]) of one or more JSON objects that each have these properties:\n- _**targetName**_ required, string\n- _**targetUrl**_ required, fully-qualified URL string\n- _**targetDescription**_ optional, string\n- _**targetFramework**_ optional, string (what competency framework name does this alignment target fall under?)\n- _**targetCode**_ optional, string (is there a sub-tag under the targetUrl that distinguishes this from other possible targets that you would identify with the EXACT same URL? Only use this if the _**targetUrl**_ would be otherwise ambiguous.)\n\n##### Issue Assertion\n\n**Request Path**: /v2/badgeclasses/**:badgeclass_entity_id**/assertions\n\nAn Assertion is an instance of a BadgeClass (type of achievement recognized by an Issuer) that is awarded to one recipient. There might be many Assertions of a particular BadgeClass that an Issuer has awarded to different recipients. See Open Badges Specification: Assertion [https://openbadgespec.org/#Assertion](https://openbadgespec.org/#Assertion)\n\nProperties:\n\n- _**recipient**_ is required, (the only required property) and it must be a JSON object with at least an _**identity**_ key. Other optional properties of the _**recipient**_ “IdentityObject” include: _**type**_ (what type of identifier is _**identity**_? Choose between _**email**_, _**telephone**_, and _**url**_); and _**hashed**_ (boolean, should the _**identity**_ be hashed in the final Open Badges Assertion?). When you GET the object back from the API, _**plaintextIdentity**_, a read-only property appears to show you what your original _**identity**_ value was in case it is obscured behind the public-facing hash (when _**hashed == true**_).\n- Evidence may be expressed in terms of an overall “narrative” and/or one or more “evidence items”. _**narrative**_ is an optional property that accepts Markdown-formatted strings. _**evidence**_ is a property that accepts a list (\\[\\]) of JSON objects ({}) that each have a _**narrative**_ and/or an _**id**_ (which is a URL to a piece of evidence hosted on HTTP)\n- Note that _**image**_ is read-only on this endpoint. The “baked” image will be generated from the BadgeClass image by the server.\n- _**issuedOn**_ is optional: you may override the issue date with a date in the past. Expects an ISO8601 formatted datetime stamp including time zone identifier. e.g. _**2018-11-26T13:45:00Z**_ (In this case, “Z” stands for “Zulu”, UTC)\n- _**expires**_ is an optional expiration date for the Assertion. Same format expectations as _**issuedOn**_.\n- _**notify**_ is an optional boolean property. Should the recipient be notified by email? (only functions with the\n  _**email**_ recipient type). Note: for required privacy disclosures, an email notification will be sent to the\n  recipient upon the first award to each email address on a particular Parchment Digital Badges server.\n\n#### Helpful Links\n\n- See the full list of API endpoints at the Parchment Digital\n  Badges [API Docs](https://api.badges.parchment.com/docs) (US region).\n- Sign up for a [free account on](https://badges.parchment.com/signup) Parchment Digital Badges.\n</details>\n\n<details>\n<summary>Parchment Digital Badges Environments & Regions</summary>\nWe support servers in five regions across the globe. In our documentation, we often reference the US domains, but here is how you should adjust both the UI domain and the API domain to access a different region:\n\n| Region        | Region UI Domain                                                       | API Domain                                                                     |\n| ------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| United States | [https://badges.parchment.com](https://badges.parchment.com)           | [https://api.badges.parchment.com](https://api.badges.parchment.com)           |\n| Australia     | [https://badges.parchment.au](https://badges.parchment.au)             | [https://api.badges.parchment.au](https://api.badges.parchment.au)             |\n| Canada        | [https://badges.parchment.ca](https://badges.parchment.ca)             | [https://api.badges.parchment.ca](https://api.badges.parchment.ca)             |\n| Europe        | [https://badges.parchment.eu](https://badges.parchment.eu)             | [https://api.badges.parchment.eu](https://api.badges.parchment.eu)             |\n| Singapore     | [https://badges.parchment.sg](https://badges.parchment.sg)             | [https://api.badges.parchment.sg](https://api.badges.parchment.sg)             |\n| Test          | [https://test.badges.parchment.com](https://test.badges.parchment.com) | [https://api.test.badges.parchment.com](https://api.test.badges.parchment.com) |\n| Demo          | [https://demo.badges.parchment.com](https://demo.badges.parchment.com) | [https://api.demo.badges.parchment.com](https://api.demo.badges.parchment.com) |\n\n</details>\n",
    "title": "Public API Docs",
    "version": "v0"
  },
  "openapi": "3.0.1",
  "paths": {
    "/bcv1/assertions": {
      "get": {
        "description": "Returns a paginated list of OB 2.1 assertions for the authenticated badge recipient",
        "operationId": "handleGetAssertionBadgeConnectRequest_1",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectAssertionsApiResponse"
                }
              }
            },
            "description": "Assertions retrieved successfully",
            "headers": {
              "Link": {
                "description": "Pagination links (first, last, next, prev)",
                "schema": {
                  "type": "string"
                },
                "style": "simple"
              },
              "X-Total-Count": {
                "description": "Total number of available assertions",
                "schema": {
                  "type": "integer"
                },
                "style": "simple"
              }
            }
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get assertions for the authenticated user",
        "tags": [
          "BadgeConnect"
        ]
      },
      "post": {
        "description": "Import an OB 2.1 assertion by URL into the authenticated user's backpack",
        "operationId": "handlePostAssertionBadgeConnectRequest_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Assertion imported successfully"
          },
          "400": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Invalid request or failed to import"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Import an assertion",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/bcv1/ims/ob/v2p1/assertions": {
      "get": {
        "description": "Returns a paginated list of OB 2.1 assertions for the authenticated badge recipient",
        "operationId": "handleGetAssertionBadgeConnectRequest",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectAssertionsApiResponse"
                }
              }
            },
            "description": "Assertions retrieved successfully",
            "headers": {
              "Link": {
                "description": "Pagination links (first, last, next, prev)",
                "schema": {
                  "type": "string"
                },
                "style": "simple"
              },
              "X-Total-Count": {
                "description": "Total number of available assertions",
                "schema": {
                  "type": "integer"
                },
                "style": "simple"
              }
            }
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get assertions for the authenticated user",
        "tags": [
          "BadgeConnect"
        ]
      },
      "post": {
        "description": "Import an OB 2.1 assertion by URL into the authenticated user's backpack",
        "operationId": "handlePostAssertionBadgeConnectRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Assertion imported successfully"
          },
          "400": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Invalid request or failed to import"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Import an assertion",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/bcv1/ims/ob/v2p1/profile": {
      "get": {
        "description": "Returns the OB 2.1 profile of the authenticated badge recipient",
        "operationId": "handleGetProfileBadgeConnectRequest_1",
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectProfileApiResponse"
                }
              }
            },
            "description": "Profile retrieved successfully"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get the authenticated user's profile",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/bcv1/manifest/{domain}": {
      "get": {
        "description": "Returns the Badge Connect service discovery manifest for the specified domain",
        "operationId": "handleGetManifestBadgeConnectRequest",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BCV1BadgeConnectManifest"
                }
              }
            },
            "description": "Manifest retrieved successfully"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Domain not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get the Badge Connect manifest for a domain",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/bcv1/profile": {
      "get": {
        "description": "Returns the OB 2.1 profile of the authenticated badge recipient",
        "operationId": "handleGetProfileBadgeConnectRequest",
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectProfileApiResponse"
                }
              }
            },
            "description": "Profile retrieved successfully"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectStatusApiResponse"
                }
              }
            },
            "description": "User not found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get the authenticated user's profile",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/ims/ob/v3p0/assertions": {
      "get": {
        "description": "Forwards to the Badge Connect v1 assertions endpoint for backward compatibility",
        "operationId": "getAssertions",
        "responses": {
          "200": {
            "content": {
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/BadgrBadgeConnectAssertionsApiResponse"
                }
              }
            },
            "description": "Assertions retrieved successfully. Response format is the same as the OB 2.1 GET /assertions endpoint."
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get OB 2.1 assertions via OB 3.0 path",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/ims/ob/v3p0/credentials": {
      "get": {
        "description": "Returns a paginated list of signed OB 3.0 verifiable credentials for the authenticated badge recipient",
        "operationId": "getCredentials",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetCredentialsResponse"
                }
              }
            },
            "description": "Credentials retrieved successfully",
            "headers": {
              "Link": {
                "description": "Pagination links (first, last, next, prev)",
                "schema": {
                  "type": "string"
                },
                "style": "simple"
              },
              "X-Total-Count": {
                "description": "Total number of available credentials",
                "schema": {
                  "type": "integer"
                },
                "style": "simple"
              }
            }
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Invalid request parameters"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Unauthorized"
          },
          "403": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Access denied"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get verifiable credentials for the authenticated user",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/ims/ob/v3p0/discovery": {
      "get": {
        "description": "Returns the Badge Connect service descriptor for OB 3.0 API discovery",
        "operationId": "getServiceDescriptor",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "info": {
                    "title": "OpenAPI schema for Open Badges",
                    "version": "3.0"
                  },
                  "openapi": "3.0.1",
                  "paths": {
                    "/credentials": {
                      "get": {
                        "operationId": "getCredentials",
                        "summary": "Get verifiable credentials"
                      }
                    },
                    "/profile": {
                      "get": {
                        "operationId": "getProfile",
                        "summary": "Get user profile"
                      }
                    }
                  },
                  "servers": [
                    {
                      "url": "https://api.badgr.com/ims/ob/v3p0"
                    }
                  ]
                }
              }
            },
            "description": "Service descriptor retrieved successfully"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get the OB 3.0 service discovery document",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/ims/ob/v3p0/profile": {
      "get": {
        "description": "Returns the OB 3.0 profile of the authenticated badge recipient",
        "operationId": "getProfile",
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/GetProfileResponse"
                }
              }
            },
            "description": "Profile retrieved successfully"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "403": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Access denied"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get the authenticated user's profile",
        "tags": [
          "BadgeConnect"
        ]
      }
    },
    "/v2/assertions/creation-methods": {
      "get": {
        "operationId": "getCreationMethods",
        "parameters": [
          {
            "description": "IDs or entity IDs of the assertions or credentials.",
            "in": "query",
            "name": "ids",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array",
              "uniqueItems": true
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2AssertionsCreationMethodResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Retrieve creation methods for a batch of assertions",
        "tags": [
          "Assertions"
        ]
      }
    },
    "/v2/assertions/revoke": {
      "post": {
        "operationId": "handleAssertionsRevoke",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/V2ApiRevokeMultipleAssertion"
                },
                "type": "array"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/V2ApiRevokeMultipleAssertion"
                  },
                  "type": "array"
                }
              },
              "application/ld+json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/V2ApiRevokeMultipleAssertion"
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Revoke multiple Assertions",
        "tags": [
          "Assertions"
        ]
      }
    },
    "/v2/assertions/{idOrEntityId}": {
      "delete": {
        "operationId": "handleDeleteAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2ApiRevokeAssertion"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Revoke an Assertion",
        "tags": [
          "Assertions"
        ]
      },
      "get": {
        "operationId": "handleGetAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single Assertion",
        "tags": [
          "Assertions"
        ]
      },
      "put": {
        "operationId": "handlePutAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2AssertionForUpdating"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update an Assertion",
        "tags": [
          "Assertions"
        ]
      }
    },
    "/v2/backpack/assertions": {
      "get": {
        "operationId": "handleGetBackpackAssertions",
        "parameters": [
          {
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "badgeclass",
                  "issuer"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BackpackAward"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack",
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of Assertions in authenticated user's backpack",
        "tags": [
          "Backpack"
        ]
      }
    },
    "/v2/backpack/assertions/{idOrEntityId}": {
      "delete": {
        "operationId": "handleDeleteBackpackAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Remove an assertion from the backpack",
        "tags": [
          "Backpack"
        ]
      },
      "get": {
        "operationId": "handleGetBackpackAssertion",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "expand",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "badgeclass",
                  "issuer"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BackpackAward"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack",
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get detail on an Assertion in the user's Backpack",
        "tags": [
          "Backpack"
        ]
      },
      "put": {
        "operationId": "handlePutBackpackAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update acceptance of an Assertion in the user's Backpack",
        "tags": [
          "Backpack"
        ]
      }
    },
    "/v2/backpack/collections": {
      "get": {
        "operationId": "handleGetBackpackCollections_1",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2AssertionCollection"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack",
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get Assertion Collection(s) associated with the authenticated user's backpack",
        "tags": [
          "Backpack"
        ]
      },
      "post": {
        "operationId": "handlePostBackpackCollections",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2AssertionCollectionForCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2AssertionCollection"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Create a new Collection",
        "tags": [
          "Backpack"
        ]
      }
    },
    "/v2/backpack/collections/{idOrEntityId}": {
      "delete": {
        "operationId": "handleDeleteBackpackCollections",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a collection",
        "tags": [
          "Backpack"
        ]
      },
      "get": {
        "operationId": "handleGetBackpackCollections",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2AssertionCollection"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:backpack",
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get Assertion Collection(s) associated with the authenticated user's backpack",
        "tags": [
          "Backpack"
        ]
      },
      "put": {
        "operationId": "handlePutBackpackCollections",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2AssertionCollectionForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2AssertionCollection"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a Collection",
        "tags": [
          "Backpack"
        ]
      }
    },
    "/v2/backpack/import": {
      "post": {
        "description": "Upload a new Assertion to the backpack using url, image or OpenBadge JSON",
        "operationId": "handlePostBackpackAssertionImport",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2AssertionImportData"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:backpack"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Upload a new Assertion to the backpack",
        "tags": [
          "Backpack"
        ]
      }
    },
    "/v2/badgeclasses": {
      "get": {
        "operationId": "getBadgeClassesForUser",
        "parameters": [
          {
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of BadgeClasses for authenticated user",
        "tags": [
          "BadgeClasses"
        ]
      },
      "post": {
        "operationId": "createBadgeClass_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2BadgeClassForCreation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "BadgeClass created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Create a new BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/reactivate/ref/{ref}": {
      "post": {
        "description": "Reactivate an archived BadgeClass by its base64 encoded OpenBadge ID",
        "operationId": "reactivateBadgeClassByRef",
        "parameters": [
          {
            "in": "path",
            "name": "ref",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Reactivate a BadgeClass by ref",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/reactivate/{idOrEntityId}": {
      "post": {
        "description": "Reactivate a BadgeClass that was archived",
        "operationId": "reactivateBadgeClassByEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Reactivate a BadgeClass by id",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/ref/{ref}": {
      "delete": {
        "description": "Restricted to owners or editors (not staff) of the corresponding Issuer.",
        "operationId": "archiveOrDeleteBadgeClassByRef",
        "parameters": [
          {
            "in": "path",
            "name": "ref",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hard_delete",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "archivalNote",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "BadgeClass deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "get": {
        "operationId": "getBadgeClassByRef",
        "parameters": [
          {
            "in": "path",
            "name": "ref",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "put": {
        "description": "Previously awarded Assertions will be updated with image rebaking",
        "operationId": "updateBadgeClassByRef",
        "parameters": [
          {
            "in": "path",
            "name": "ref",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2BadgeClassForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update an existing BadgeClass.",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}": {
      "delete": {
        "description": "Restricted to owners or editors (not staff) of the corresponding Issuer.",
        "operationId": "archiveOrDeleteBadgeClassByEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "hard_delete",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "archivalNote",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "BadgeClass deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "get": {
        "operationId": "findByEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "put": {
        "description": "Previously awarded Assertions will be updated with image rebaking",
        "operationId": "updateBadgeClassByIdOrEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2BadgeClassForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update an existing BadgeClass.",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}/claim-codes": {
      "get": {
        "operationId": "findAll",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeClaimCodeCount",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of ClaimCodes for a single BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "post": {
        "operationId": "create",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2ClaimCodeForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Create a new ClaimCode for a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}/claim-codes/{claimCode}": {
      "delete": {
        "operationId": "archive",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "claimCode",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "No Content"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Archive a ClaimCode for a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      },
      "put": {
        "operationId": "update_2",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "claimCode",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2ClaimCodeForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update an existing ClaimCode for a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}/claim-codes/{claimCode}/disable": {
      "patch": {
        "operationId": "disable",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "claimCode",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Disable an enabled ClaimCode for a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}/claim-codes/{claimCode}/enable": {
      "patch": {
        "operationId": "enable",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "claimCode",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2ClaimCode"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Enable a disabled ClaimCode for a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/badgeclasses/{idOrEntityId}/duplicate": {
      "post": {
        "description": "Create a duplicate of the original BadgeClass with a new name",
        "operationId": "duplicateBadgeClass",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2DuplicateBadgeClassRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2BadgeClass"
                }
              }
            },
            "description": "BadgeClass created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Duplicate a BadgeClass",
        "tags": [
          "BadgeClasses"
        ]
      }
    },
    "/v2/issuers": {
      "get": {
        "operationId": "retrieveAll",
        "parameters": [
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of Issuers for authenticated user",
        "tags": [
          "Issuers"
        ]
      },
      "post": {
        "description": "Creating an Issuer within an Organization (via `organizationId`) additionally requires the `rw:org` scope.",
        "operationId": "createIssuer",
        "parameters": [
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForCreation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "Issuer created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer",
              "rw:org"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Create a new Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/openBadgeId/{issuerOpenBadgeIdBase64}": {
      "delete": {
        "operationId": "deleteByOpenBadgeId",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "Issuer deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "get": {
        "operationId": "retrieveByOpenBadgeId",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "patch": {
        "operationId": "updateByOpenBadgeId_1",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "put": {
        "operationId": "updateByOpenBadgeId",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/ref/{issuerOpenBadgeIdBase64}": {
      "delete": {
        "operationId": "deleteByOpenBadgeId_1",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "Issuer deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "get": {
        "operationId": "retrieveByOpenBadgeId_1",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "patch": {
        "operationId": "updateByOpenBadgeId_3",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "put": {
        "operationId": "updateByOpenBadgeId_2",
        "parameters": [
          {
            "in": "path",
            "name": "issuerOpenBadgeIdBase64",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/{idOrEntityId}": {
      "delete": {
        "operationId": "deleteByIdOrEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Issuer deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Delete a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "get": {
        "operationId": "retrieveByIdOrEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "patch": {
        "operationId": "updateByIdOrEntityId_1",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "put": {
        "operationId": "updateByIdOrEntityId",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_staff",
            "required": false,
            "schema": {
              "default": "true",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Issuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a single Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/{idOrEntityId}/badgeclasses": {
      "get": {
        "operationId": "getBadgeClasses",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "include_archived",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of BadgeClasses for a single Issuer",
        "tags": [
          "Issuers",
          "BadgeClasses"
        ]
      },
      "post": {
        "operationId": "createBadgeClass",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerBadgeClassForCreation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2BadgeClass"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Create a new BadgeClass associated with an Issuer",
        "tags": [
          "Issuers",
          "BadgeClasses"
        ]
      }
    },
    "/v2/issuers/{idOrEntityId}/pathways": {
      "get": {
        "operationId": "retrievePathwaysByIssuer",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayInfoResponse"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayInfoResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "List all pathways for the issuer",
        "tags": [
          "Pathways",
          "Issuers"
        ]
      }
    },
    "/v2/issuers/{idOrEntityId}/staff": {
      "delete": {
        "description": "User must have an owner role on the issuer.",
        "operationId": "removeStaff",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerStaffForRemoval"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperUnit"
                }
              }
            },
            "description": "Staff member removed"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Remove a staff member from the Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "patch": {
        "description": "User must have an owner role on the issuer.",
        "operationId": "updateStaff_1",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerStaffForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2IssuerStaff"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a staff member's role on the Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "post": {
        "description": "User must have an owner role on the issuer.",
        "operationId": "addStaff",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerStaffForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2IssuerStaff"
                }
              }
            },
            "description": "Staff member added"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Add a staff member to an Issuer",
        "tags": [
          "Issuers"
        ]
      },
      "put": {
        "description": "User must have an owner role on the issuer.",
        "operationId": "updateStaff",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerStaffForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2IssuerStaff"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a staff member's role on the Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/{idOrEntityId}/staff/invitations": {
      "post": {
        "description": "User must have an owner role on the issuer.",
        "operationId": "inviteStaff",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2IssuerStaffForCreateOrUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2IssuerStaffInvitation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Invite a staff member to an Issuer",
        "tags": [
          "Issuers"
        ]
      }
    },
    "/v2/issuers/{issuerId}/group-export/badge-data": {
      "get": {
        "operationId": "exportBadgeData",
        "parameters": [
          {
            "in": "path",
            "name": "issuerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeArchivedGroups",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "example": "Group ID,Group Name,Course ID,Badge ID,Badge Name,Award Method,Course Item,Requirement with link,Trigger Type,Threshold,Evidence Needed,Date Restriction,Leaderboard Points,Learner Progress\n68cd3f3a54e2f258d1aedcfa,Teacher epic course,66780,68e4bcd536627547e95edeed,Badge 2,Canvas,Course grade,https://zoltanfarkas.instructure.com/courses/66780,Percentage score,80%,no,,1,1 awarded",
                  "type": "string"
                }
              }
            },
            "description": "CSV file containing badge data"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Export badge data of the recipient groups for a given issuer.",
        "tags": [
          "RecipientGroups"
        ]
      }
    },
    "/v2/issuers/{issuerId}/group-export/learner-progress-data": {
      "get": {
        "operationId": "exportLearnerProgressData",
        "parameters": [
          {
            "in": "path",
            "name": "issuerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeArchivedGroups",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "example": "Group ID,Group Name,Learner Name,Learner ID,Last Badge Earned,Alignment Type,Alignment ID,Alignment Name,Status,Detailed Progress,Evidence\n68cd3f3a54e2f258d1aedcfa,Teacher epic course,Canvas Student,canvas-student@instructure.com,Jan 20 2026,Badge,68e4bcd536627547e95edeed,Badge 2,Awarded,,https://evidence-1.com|https://evidence-2.com",
                  "type": "string"
                }
              }
            },
            "description": "CSV file containing learner progress data"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Export learner progress data of the recipient groups for a given issuer.",
        "tags": [
          "RecipientGroups"
        ]
      }
    },
    "/v2/organizations": {
      "get": {
        "operationId": "retrieveAll_1",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2OrganizationList"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2OrganizationList"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:org"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a list of Organizations where the authenticated user is admin",
        "tags": [
          "Organizations"
        ]
      }
    },
    "/v2/organizations/{id}/public-issuers": {
      "get": {
        "operationId": "listIssuersWithPublicInfo",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Case-insensitive filter for the name of the issuers",
            "in": "query",
            "name": "nameQuery",
            "required": false,
            "schema": {
              "maxLength": 256,
              "minLength": 0,
              "type": "string"
            }
          },
          {
            "description": "Number of items to return per page",
            "example": 10,
            "in": "query",
            "name": "num",
            "required": false,
            "schema": {
              "default": "10",
              "maximum": 100,
              "minimum": 1,
              "type": "string"
            }
          },
          {
            "description": "Index of the requested page (1-based)",
            "example": 1,
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": "1",
              "minimum": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PaginatedResponseV2PublicIssuer"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PaginatedResponseV2PublicIssuer"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "List public issuers for the specified organization with pagination and optional name filtering",
        "tags": [
          "Issuers",
          "Organizations"
        ]
      }
    },
    "/v2/organizations/{organizationId}/group-export/general-data": {
      "get": {
        "operationId": "exportGeneralData",
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "issuerId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "includeCreationDateAndMethod",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeExpirationDateAndMethod",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeStaffMembers",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeArchivedGroups",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {
                "schema": {
                  "example": "Group ID,Group name,Course/Pathway ID,URL,Learners,Alignment type,Alignment ID,Alignment name,Creation date,Creation method,Expiration date,Expiration method,Staff member name,Staff member ID\n68cd3f3a54e2f258d1aedcfa,Teacher epic course,66780,https://zoltanfarkas.instructure.com/courses/66780,1,Badge,68e4bcd536627547e95edeed,Badge 2,Sep 19 2025,Canvas,Sep 19 2026,Manual,Canvas Teacher,canvas-teacher@instructure.com",
                  "type": "string"
                }
              }
            },
            "description": "CSV file containing general group data"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Export general data of the recipient groups for a given organization.",
        "tags": [
          "RecipientGroups"
        ]
      }
    },
    "/v2/pathways": {
      "post": {
        "operationId": "createPathway",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2PathwayForCreation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Create pathway in draft state",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}": {
      "delete": {
        "operationId": "deleteById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Pathway deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Delete pathway",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/aggregate-progress": {
      "get": {
        "operationId": "retrieveAggregateProgressByPathwayId",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayAggregateProgress"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayAggregateProgress"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get aggregate progress status for the entire pathway",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/recipient-groups/{recipientGroupId}/progress": {
      "get": {
        "operationId": "retrieveProgressByRecipientGroupId",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "recipientGroupId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayGroupProgress"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayGroupProgress"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get progress status for the recipient group",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/recipient-progress": {
      "get": {
        "operationId": "retrieveProgressByRecipientIdentifier",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Identifier of the recipient, format: recipientType:recipientId",
            "example": "email:mail@example.com",
            "in": "query",
            "name": "recipientIdentifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayRecipientProgress"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2PathwayRecipientProgress"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get progress status for the recipient",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/subscriptions": {
      "post": {
        "operationId": "changeSubscriptions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2PathwaySubscriptionChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Update pathway group subscriptions",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/versions/draft": {
      "get": {
        "operationId": "retrieveDraftById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get draft version",
        "tags": [
          "Pathways"
        ]
      },
      "put": {
        "operationId": "updateDraftById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2PathwayForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Update pathway draft",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/versions/draft/revert": {
      "post": {
        "operationId": "revertDraftById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Reverts pathway draft to the current published version",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{id}/versions/published": {
      "get": {
        "operationId": "retrievePublishedById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Get published version",
        "tags": [
          "Pathways"
        ]
      },
      "post": {
        "operationId": "publishById",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/V2Pathway"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Promote current draft version to published",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{pathwayId}/experience/{experienceId}/submit": {
      "post": {
        "operationId": "submitExperienceOutcome",
        "parameters": [
          {
            "in": "path",
            "name": "pathwayId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "experienceId",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitExperienceOutcomeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Evaluate experience on the pathway for a user",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/pathways/{pathwayId}/experience/{experienceId}/submit-csv": {
      "post": {
        "description": "CSV file should contain recipientId,passed header row. Each row should contain a single entry of recipientId (email:mail@example.com) and a passed value (true/false) separated by a comma.",
        "operationId": "submitExperienceOutcomeForMultipleRecipient",
        "parameters": [
          {
            "in": "path",
            "name": "pathwayId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "experienceId",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "text/csv": {
              "schema": {
                "example": "recipientId,passed\nemail:mail@example.com,true",
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitMultipleExperienceOutcomeResponse"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitMultipleExperienceOutcomeResponse"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "accessToken": []
          }
        ],
        "summary": "Evaluate experience on the pathway for multiple users",
        "tags": [
          "Pathways"
        ]
      }
    },
    "/v2/users/self": {
      "get": {
        "operationId": "retrieveBySelf",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get your own BadgeUser profile",
        "tags": [
          "Users"
        ]
      },
      "patch": {
        "operationId": "updateBySelf_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2UserForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update your own BadgeUser",
        "tags": [
          "Users"
        ]
      },
      "put": {
        "operationId": "updateBySelf",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2UserForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update your own BadgeUser",
        "tags": [
          "Users"
        ]
      }
    },
    "/v2/users/{idOrEntityId}": {
      "get": {
        "operationId": "retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get a single BadgeUser profile",
        "tags": [
          "Users"
        ]
      },
      "patch": {
        "operationId": "update_1",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2UserForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a BadgeUser",
        "tags": [
          "Users"
        ]
      },
      "put": {
        "operationId": "update",
        "parameters": [
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2UserForUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2User"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "r:profile",
              "rw:profile"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Update a BadgeUser",
        "tags": [
          "Users"
        ]
      }
    },
    "/v2/{scope}/{idOrEntityId}/assertions": {
      "get": {
        "operationId": "listAssertions",
        "parameters": [
          {
            "in": "path",
            "name": "scope",
            "required": true,
            "schema": {
              "enum": [
                "badgeclasses",
                "issuers"
              ],
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "A recipient identifier to filter by",
            "in": "query",
            "name": "recipient",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Request pagination of results, before/after cursors may be provided in response header",
            "in": "query",
            "name": "num",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "include_expired",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "include_revoked",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Pagination cursor provided in \"Link\" response header",
            "in": "query",
            "name": "after",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Pagination cursor provided in \"Link\" response header",
            "in": "query",
            "name": "before",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "List of Assertions"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Get list of Assertions for the specified scope",
        "tags": [
          "Issuers",
          "Assertions",
          "BadgeClasses"
        ]
      },
      "post": {
        "operationId": "handleAssertionCreation",
        "parameters": [
          {
            "in": "path",
            "name": "scope",
            "required": true,
            "schema": {
              "enum": [
                "badgeclasses",
                "issuers"
              ],
              "type": "string"
            }
          },
          {
            "description": "The entity ID of the selected scope entity",
            "example": "K829IK8RS6ercwkpeFOn-Q",
            "in": "path",
            "name": "idOrEntityId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/V2AssertionForAwarding"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              },
              "application/ld+json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyResponseWrapperV2Assertion"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Not Found"
          },
          "429": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Too Many Requests"
          },
          "500": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorResponse"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "oauth": [
              "rw:issuer"
            ]
          },
          {
            "accessToken": []
          }
        ],
        "summary": "Issue a new Assertion to a recipient",
        "tags": [
          "Issuers",
          "Assertions",
          "BadgeClasses"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.badges.parchment.com"
    }
  ]
}
