{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/suomi-fi/json-schema/suomi-fi-general-description-response-schema.json",
  "title": "GeneralDescriptionResponse",
  "description": "General description response",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/suomi-fi-ptv-openapi.yml#/components/schemas/GeneralDescriptionResponse",
  "type": "object",
  "required": [
    "serviceType"
  ],
  "oneOf": [
    {
      "$ref": "#/$defs/GeneralDescriptionServiceResponse"
    },
    {
      "$ref": "#/$defs/GeneralDescriptionProfessionalQualificationResponse"
    },
    {
      "$ref": "#/$defs/GeneralDescriptionPermitOrOtherObligationResponse"
    }
  ],
  "$defs": {
    "BaseGeneralDescriptionLanguageVersionResponse": {
      "type": "object",
      "required": [
        "backgroundDescription",
        "chargeTypeAdditionalInformation",
        "conditions",
        "description",
        "freelyAssignedKeywords",
        "legislationLinks",
        "name",
        "userInstructions"
      ],
      "properties": {
        "backgroundDescription": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "chargeTypeAdditionalInformation": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "conditions": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "freelyAssignedKeywords": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "legislationLinks": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LegislationLinkResponse"
          }
        },
        "name": {
          "type": "string"
        },
        "userInstructions": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "description": "Base general description language version response",
      "title": "BaseGeneralDescriptionLanguageVersionResponse"
    },
    "ChannelType": {
      "description": "Channel type",
      "enum": [
        "EService",
        "TelephoneService",
        "PrintableForm",
        "ServiceLocation",
        "WebPage"
      ],
      "type": "string",
      "title": "ChannelType"
    },
    "ContentIdType": {
      "type": "string",
      "format": "uuid",
      "description": "Content id type",
      "title": "ContentIdType"
    },
    "DateTime": {
      "type": "string",
      "format": "date-time",
      "description": "string, e.g. 2025-09-22T07:32:52.026Z",
      "title": "DateTime"
    },
    "ExtendedGeneralDescriptionLanguageVersionResponse": {
      "type": "object",
      "required": [
        "backgroundDescription",
        "chargeTypeAdditionalInformation",
        "conditions",
        "description",
        "freelyAssignedKeywords",
        "legislationLinks",
        "name",
        "userInstructions",
        "processingTimeAdditionalInformation",
        "deadlineAdditionalInformation",
        "validityTimeAdditionalInformation"
      ],
      "properties": {
        "backgroundDescription": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "chargeTypeAdditionalInformation": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "conditions": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "freelyAssignedKeywords": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "legislationLinks": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LegislationLinkResponse"
          }
        },
        "name": {
          "type": "string"
        },
        "userInstructions": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "processingTimeAdditionalInformation": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "deadlineAdditionalInformation": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        },
        "validityTimeAdditionalInformation": {
          "anyOf": [
            {
              "type": "string",
              "description": "Markdown-formatted content. Use a Markdown parser/renderer when presenting it."
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "description": "Extended general description language version response",
      "additionalProperties": false,
      "title": "ExtendedGeneralDescriptionLanguageVersionResponse"
    },
    "GeneralDescriptionPermitOrOtherObligationLanguageVersionsResponse": {
      "type": "object",
      "properties": {
        "fi": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "sv": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "en": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "se": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "smn": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "sms": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        }
      },
      "additionalProperties": false,
      "description": "General description permit or other obligation language versions response",
      "title": "GeneralDescriptionPermitOrOtherObligationLanguageVersionsResponse"
    },
    "GeneralDescriptionPermitOrOtherObligationResponse": {
      "type": "object",
      "required": [
        "chargeType",
        "contentId",
        "generalDescriptionTypes",
        "industrialClasses",
        "lifeEvents",
        "ontologyTerms",
        "organizationContentId",
        "serviceClasses",
        "suggestedServiceChannels",
        "targetGroups",
        "publishedAt",
        "serviceType",
        "languageVersions"
      ],
      "properties": {
        "migratedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "chargeType": {
          "anyOf": [
            {
              "$ref": "#/$defs/ServiceChargeType"
            },
            {
              "type": "null"
            }
          ]
        },
        "contentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "generalDescriptionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GeneralDescriptionType"
          }
        },
        "industrialClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "lifeEvents": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "ontologyTerms": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "organizationContentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "serviceClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "suggestedServiceChannels": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SuggestedServiceChannelResponse"
          }
        },
        "targetGroups": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "publishedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "serviceType": {
          "type": "string",
          "enum": [
            "PermitOrOtherObligation"
          ]
        },
        "languageVersions": {
          "$ref": "#/$defs/GeneralDescriptionPermitOrOtherObligationLanguageVersionsResponse"
        }
      },
      "description": "General description permit or other obligation response",
      "additionalProperties": false,
      "title": "PermitOrOtherObligation"
    },
    "GeneralDescriptionProfessionalQualificationResponse": {
      "type": "object",
      "required": [
        "chargeType",
        "contentId",
        "generalDescriptionTypes",
        "industrialClasses",
        "lifeEvents",
        "ontologyTerms",
        "organizationContentId",
        "serviceClasses",
        "suggestedServiceChannels",
        "targetGroups",
        "publishedAt",
        "serviceType",
        "languageVersions"
      ],
      "properties": {
        "migratedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "chargeType": {
          "anyOf": [
            {
              "$ref": "#/$defs/ServiceChargeType"
            },
            {
              "type": "null"
            }
          ]
        },
        "contentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "generalDescriptionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GeneralDescriptionType"
          }
        },
        "industrialClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "lifeEvents": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "ontologyTerms": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "organizationContentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "serviceClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "suggestedServiceChannels": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SuggestedServiceChannelResponse"
          }
        },
        "targetGroups": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "publishedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "serviceType": {
          "type": "string",
          "enum": [
            "ProfessionalQualification"
          ]
        },
        "languageVersions": {
          "$ref": "#/$defs/GeneralDescriptionProfessionalQualificationsLanguageVersionResponse"
        }
      },
      "description": "General description professional qualification response",
      "additionalProperties": false,
      "title": "ProfessionalQualification"
    },
    "GeneralDescriptionProfessionalQualificationsLanguageVersionResponse": {
      "type": "object",
      "properties": {
        "fi": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "sv": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "en": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "se": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "smn": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        },
        "sms": {
          "$ref": "#/$defs/ExtendedGeneralDescriptionLanguageVersionResponse"
        }
      },
      "additionalProperties": false,
      "description": "General description professional qualifications language version response",
      "title": "GeneralDescriptionProfessionalQualificationsLanguageVersionResponse"
    },
    "GeneralDescriptionServiceLanguageVersionsResponse": {
      "type": "object",
      "properties": {
        "fi": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        },
        "sv": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        },
        "en": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        },
        "se": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        },
        "smn": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        },
        "sms": {
          "$ref": "#/$defs/BaseGeneralDescriptionLanguageVersionResponse"
        }
      },
      "additionalProperties": false,
      "description": "General description service language versions response",
      "title": "GeneralDescriptionServiceLanguageVersionsResponse"
    },
    "GeneralDescriptionServiceResponse": {
      "type": "object",
      "required": [
        "chargeType",
        "contentId",
        "generalDescriptionTypes",
        "industrialClasses",
        "lifeEvents",
        "ontologyTerms",
        "organizationContentId",
        "serviceClasses",
        "suggestedServiceChannels",
        "targetGroups",
        "publishedAt",
        "serviceType",
        "languageVersions"
      ],
      "properties": {
        "migratedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "chargeType": {
          "anyOf": [
            {
              "$ref": "#/$defs/ServiceChargeType"
            },
            {
              "type": "null"
            }
          ]
        },
        "contentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "generalDescriptionTypes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GeneralDescriptionType"
          }
        },
        "industrialClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "lifeEvents": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "ontologyTerms": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          }
        },
        "organizationContentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "serviceClasses": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "suggestedServiceChannels": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SuggestedServiceChannelResponse"
          }
        },
        "targetGroups": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?!\\.)[a-zA-Z0-9\\.]+(?<!\\.)$"
          }
        },
        "publishedAt": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateTime"
            },
            {
              "type": "null"
            }
          ]
        },
        "serviceType": {
          "type": "string",
          "enum": [
            "Service"
          ]
        },
        "languageVersions": {
          "$ref": "#/$defs/GeneralDescriptionServiceLanguageVersionsResponse"
        }
      },
      "description": "General description service response",
      "additionalProperties": false,
      "title": "Service"
    },
    "GeneralDescriptionType": {
      "description": "General description type",
      "enum": [
        "Church",
        "EmploymentArea",
        "Municipality",
        "Other",
        "WellbeingServicesCounty"
      ],
      "type": "string",
      "title": "GeneralDescriptionType"
    },
    "LegislationLinkResponse": {
      "type": "object",
      "required": [
        "url",
        "name"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "LegislationLinkResponse"
    },
    "ServiceChargeType": {
      "description": "Service charge type",
      "enum": [
        "Free",
        "Charged"
      ],
      "type": "string",
      "title": "ServiceChargeType"
    },
    "SuggestedServiceChannelResponse": {
      "type": "object",
      "required": [
        "serviceChannelContentId",
        "channelType"
      ],
      "properties": {
        "serviceChannelContentId": {
          "$ref": "#/$defs/ContentIdType"
        },
        "channelType": {
          "$ref": "#/$defs/ChannelType"
        }
      },
      "description": "Service channel suggested by a general description",
      "additionalProperties": false,
      "title": "SuggestedServiceChannelResponse"
    }
  }
}