{
  "$id": "EPhWFgeOy8g7yRy-Xtyvbdieqvl_3YVXNHMgTEZuJOWh",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "AI coder license",
  "description": "Certify that a software developer is committed to and capable of using AI coding tools with appropriate guard rails, according to the governance in the rules section.",
  "type": "object",
  "credentialType": "ai-coder-license",
  "version": "1.0.0",
  "required": [
    "v",
    "d",
    "i",
    "ri",
    "s",
    "a"
  ],
  "properties": {
    "v": {
      "description": "Version string using ACDC conventions",
      "type": "string"
    },
    "d": {
      "description": "SAID of the credential",
      "type": "string"
    },
    "u": {
      "description": "A salty nonce",
      "type": "string"
    },
    "i": {
      "description": "Identifier of the issuer",
      "type": "string"
    },
    "ri": {
      "description": "Registry for issuer's credential status",
      "type": "string"
    },
    "s": {
      "description": "SAID of this schema",
      "type": "string"
    },
    "a": {
      "oneOf": [
        {
          "description": "SAID of attributes block",
          "type": "string"
        },
        {
          "$id": "EIQrvXDSt5ikFLbaen_9iCmSBVB2-B1S5LQxRXmXrGs7",
          "description": "Attributes block",
          "type": "object",
          "required": [
            "d",
            "i",
            "dt",
            "effective_dt",
            "issuer_name"
          ],
          "properties": {
            "d": {
              "description": "Attributes block SAID",
              "type": "string"
            },
            "u": {
              "description": "A salty nonce",
              "type": "string"
            },
            "i": {
              "description": "AID of issuee",
              "type": "string"
            },
            "dt": {
              "description": "Issuance datetime, ISO-8601 datetime string",
              "type": "string",
              "format": "date-time"
            },
            "effective_dt": {
              "description": "Time at which the license should begin conferring privileges. This may be before or after the time of issuance.",
              "type": "string",
              "format": "date-time"
            },
            "expire_dt": {
              "description": "Time at which license should stop conferring privileges. Issuer stops managing revocation on this date.",
              "format": "date-time",
              "type": "string"
            },
            "issuer_name": {
              "description": "Self-asserted name of the issuer. This field exists for convenience, and may be empty. It should only be trusted if it can be tied to some formal proof of the issuer's identity.",
              "type": "string"
            },
            "issuee_name": {
              "description": "Name of the issuee, as asserted by issuer. This field exists for convenience, and may be empty. It should only be trusted if it can be tied to some formal proof of the issuee's identity.",
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "e": {
      "oneOf": [
        {
          "description": "Edges section SAID",
          "type": "string"
        },
        {
          "$id": "EP9TkdxfBqH0N1wW5onc2N71TAEfBmUMy3qaBSVq5efL",
          "description": "Edges detail",
          "type": "object",
          "required": [
            "d",
            "issuer"
          ],
          "properties": {
            "d": {
              "description": "Edges section SAID",
              "type": "string"
            },
            "issuer": {
              "description": "Edge credential that proves the identity of the issuer.",
              "type": "object",
              "properties": {
                "n": {
                  "description": "SAID of a credential that proves the identity of the issuer",
                  "type": "string"
                },
                "s": {
                  "description": "SAID of credential schema that proves the identity of the issuer",
                  "type": "string"
                },
                "o": {
                  "description": "Operator indicating issuer AID of this ACDC MUST be the Issuee AID of the node this Edge points to.",
                  "type": "string",
                  "const": "I2I"
                }
              },
              "additionalProperties": false,
              "required": [
                "n",
                "s",
                "o"
              ]
            },
            "coca": {
              "description": "Chain to a code of conduct attestation (coca) by the issuee",
              "type": "object",
              "required": [
                "n",
                "s"
              ],
              "properties": {
                "n": {
                  "description": "SAID of AI user code of conduct attestation (coca)",
                  "type": "string"
                },
                "s": {
                  "description": "SAID of AI user code of conduct attestation schema",
                  "type": "string",
                  "const": "EBCnd7qk82wLBOgFukdmsdkksAuPpmzt5-eg9YKWWP3j"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "r": {
      "oneOf": [
        {
          "description": "Rules section SAID",
          "type": "string"
        },
        {
          "$id": "EGFgHT7Xrzy9YLdQNXnNTYVBu9_Q0O7K5A2VCWjg93t3",
          "description": "Rules detail",
          "type": "object",
          "properties": {
            "d": {
              "description": "Rule section SAID",
              "type": "string"
            }
          },
          "additionalProperties": true,
          "required": [
            "d"
          ]
        }
      ]
    }
  },
  "additionalProperties": false
}