{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/open-government-portugal/json-schema/open-government-portugal-dataset-schema.json",
  "title": "Dataset",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/open-government-portugal-datasets-api-openapi.yml#/components/schemas/Dataset",
  "properties": {
    "access_audiences": {
      "items": {
        "$ref": "#/$defs/AccessAudience__read"
      },
      "type": "array"
    },
    "access_type": {
      "type": "string"
    },
    "access_type_reason": {
      "type": "string"
    },
    "access_type_reason_category": {
      "type": "string"
    },
    "acronym": {
      "description": "An optional dataset acronym",
      "type": "string"
    },
    "archived": {
      "description": "The archival date if archived",
      "format": "date-time",
      "type": "string"
    },
    "authorization_request_url": {
      "type": "string"
    },
    "badges": {
      "description": "The dataset badges",
      "items": {
        "$ref": "#/$defs/Badge__read"
      },
      "readOnly": true,
      "type": "array"
    },
    "community_resources": {
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/CommunityResource"
          }
        ],
        "description": "The dataset community submitted resources"
      },
      "type": "array"
    },
    "contact_points": {
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/ContactPoint__read"
          }
        ],
        "description": "The dataset contact points"
      },
      "type": "array"
    },
    "created_at": {
      "description": "This date is computed between harvested creation date if any and site's internal creation date",
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "deleted": {
      "description": "The deletion date if deleted",
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "description": {
      "description": "The dataset description in markdown",
      "format": "markdown",
      "type": "string"
    },
    "description_short": {
      "description": "The dataset short description",
      "type": "string"
    },
    "extras": {
      "description": "Extras attributes as key-value pairs",
      "type": "object"
    },
    "featured": {
      "description": "Is the dataset featured",
      "type": "boolean"
    },
    "frequency": {
      "default": "unknown",
      "description": "The update frequency",
      "enum": [
        "continuous",
        "oneMinute",
        "fiveMinutes",
        "tenMinutes",
        "fifteenMinutes",
        "thirtyMinutes",
        "hourly",
        "bihourly",
        "trihourly",
        "twelveHours",
        "severalTimesADay",
        "threeTimesADay",
        "semidaily",
        "daily",
        "fiveTimesAWeek",
        "threeTimesAWeek",
        "semiweekly",
        "weekly",
        "biweekly",
        "threeTimesAMonth",
        "semimonthly",
        "monthly",
        "bimonthly",
        "quarterly",
        "threeTimesAYear",
        "semiannual",
        "annual",
        "biennial",
        "triennial",
        "quadrennial",
        "quinquennial",
        "decennial",
        "bidecennial",
        "tridecennial",
        "punctual",
        "irregular",
        "never",
        "notPlanned",
        "other",
        "unknown"
      ],
      "type": "string"
    },
    "frequency_date": {
      "description": "Next expected update date, you will be notified once that date is reached.",
      "format": "date-time",
      "type": "string"
    },
    "harvest": {
      "allOf": [
        {
          "$ref": "#/$defs/HarvestDatasetMetadata"
        }
      ],
      "description": "Dataset harvest metadata attributes",
      "readOnly": true
    },
    "id": {
      "description": "The dataset identifier",
      "readOnly": true,
      "type": "string"
    },
    "internal": {
      "allOf": [
        {
          "$ref": "#/$defs/DatasetInternals"
        }
      ],
      "description": "Site internal and specific object's data",
      "readOnly": true
    },
    "last_modified": {
      "description": "The dataset last modification date",
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "last_update": {
      "description": "The resources last modification date",
      "format": "date-time",
      "type": "string"
    },
    "license": {
      "default": "notspecified",
      "description": "The dataset license",
      "type": "string"
    },
    "license_title": {
      "default": "License Not Specified",
      "description": "The dataset license human-readable title",
      "type": "string"
    },
    "license_url": {
      "description": "The dataset license URL",
      "type": "string"
    },
    "metrics": {
      "description": "The dataset metrics",
      "type": "object"
    },
    "organization": {
      "allOf": [
        {
          "$ref": "#/$defs/OrganizationReference"
        }
      ],
      "description": "The producer organization"
    },
    "owner": {
      "allOf": [
        {
          "$ref": "#/$defs/UserReference"
        }
      ],
      "description": "The user information"
    },
    "page": {
      "description": "The dataset web page URL",
      "readOnly": true,
      "type": "string"
    },
    "permissions": {
      "$ref": "#/$defs/DatasetPermissions"
    },
    "private": {
      "description": "Is the dataset private to the owner or the organization",
      "type": "boolean"
    },
    "quality": {
      "description": "The dataset quality",
      "readOnly": true,
      "type": "object"
    },
    "resources": {
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/Resource"
          }
        ],
        "description": "The dataset resources"
      },
      "type": "array"
    },
    "schema": {
      "allOf": [
        {
          "$ref": "#/$defs/Schema"
        }
      ],
      "description": "Reference to the associated schema"
    },
    "slug": {
      "description": "The dataset permalink string",
      "readOnly": true,
      "type": "string"
    },
    "spatial": {
      "allOf": [
        {
          "$ref": "#/$defs/SpatialCoverage"
        }
      ],
      "description": "The spatial coverage"
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "temporal_coverage": {
      "allOf": [
        {
          "$ref": "#/$defs/TemporalCoverage"
        }
      ],
      "description": "The temporal coverage"
    },
    "title": {
      "description": "The dataset title",
      "type": "string"
    },
    "uri": {
      "description": "The API URI for this dataset",
      "readOnly": true,
      "type": "string"
    }
  },
  "required": [
    "created_at",
    "description",
    "frequency",
    "last_modified",
    "last_update",
    "title"
  ],
  "type": "object",
  "x-mask": "{id,title,acronym,slug,description,description_short,created_at,last_modified,deleted,private,tags,badges,resources,frequency,frequency_date,extras,harvest,metrics,organization,owner,schema,temporal_coverage,spatial,license,license_title,access_type,access_audiences,authorization_request_url,access_type_reason_category,access_type_reason,uri,page,last_update,archived,quality,internal,contact_points,featured,permissions}",
  "$defs": {
    "AccessAudience__read": {
      "properties": {
        "condition": {
          "enum": [
            "yes",
            "no",
            "under_condition"
          ],
          "type": "string"
        },
        "role": {
          "enum": [
            "local_authority_and_administration",
            "company_and_association",
            "private"
          ],
          "type": "string"
        }
      },
      "type": "object"
    },
    "Badge__read": {
      "properties": {
        "kind": {
          "type": "string"
        }
      },
      "required": [
        "kind"
      ],
      "type": "object"
    },
    "BaseReference": {
      "properties": {
        "class": {
          "description": "The object class",
          "type": "string"
        },
        "id": {
          "description": "The object unique identifier",
          "type": "string"
        }
      },
      "required": [
        "class",
        "id"
      ],
      "type": "object"
    },
    "Checksum": {
      "properties": {
        "type": {
          "default": "sha1",
          "description": "The hashing algorithm used to compute the checksum",
          "enum": [
            "sha1",
            "sha2",
            "sha256",
            "md5",
            "crc"
          ],
          "type": "string"
        },
        "value": {
          "description": "The resulting checksum/hash",
          "type": "string"
        }
      },
      "required": [
        "value"
      ],
      "type": "object"
    },
    "CommunityResource": {
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        },
        {
          "properties": {
            "dataset": {
              "allOf": [
                {
                  "$ref": "#/$defs/DatasetReference"
                }
              ],
              "description": "Reference to the associated dataset"
            },
            "organization": {
              "allOf": [
                {
                  "$ref": "#/$defs/OrganizationReference"
                }
              ],
              "description": "The producer organization"
            },
            "owner": {
              "allOf": [
                {
                  "$ref": "#/$defs/UserReference"
                }
              ],
              "description": "The user information"
            },
            "permissions": {
              "$ref": "#/$defs/DatasetPermissions"
            }
          },
          "type": "object"
        }
      ]
    },
    "ContactPoint__read": {
      "properties": {
        "contact_form": {
          "type": "string"
        },
        "email": {
          "maxLength": 255,
          "type": "string"
        },
        "id": {
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "maxLength": 255,
          "type": "string"
        },
        "organization": {
          "allOf": [
            {
              "$ref": "#/$defs/OrganizationReference"
            }
          ],
          "description": "Only present if owner is not set. Can only be set to an organization of the current authenticated user."
        },
        "owner": {
          "allOf": [
            {
              "$ref": "#/$defs/UserReference"
            }
          ],
          "description": "Only present if organization is not set. Can only be set to the current authenticated user."
        },
        "role": {
          "enum": [
            "contact",
            "creator",
            "publisher",
            "rightsHolder",
            "custodian",
            "distributor",
            "originator",
            "principalInvestigator",
            "processor",
            "resourceProvider",
            "user"
          ],
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "role"
      ],
      "type": "object",
      "x-mask": "{id,name,email,contact_form,role}"
    },
    "DatasetInternals": {
      "properties": {
        "created_at_internal": {
          "description": "The dataset's internal creation date on the site",
          "format": "date-time",
          "type": "string"
        },
        "last_modified_internal": {
          "description": "The dataset's internal last modification date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "created_at_internal",
        "last_modified_internal"
      ],
      "type": "object"
    },
    "DatasetPermissions": {
      "properties": {
        "delete": {
          "type": "boolean"
        },
        "edit": {
          "type": "boolean"
        },
        "edit_resources": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "DatasetReference": {
      "allOf": [
        {
          "$ref": "#/$defs/BaseReference"
        },
        {
          "properties": {},
          "type": "object"
        }
      ]
    },
    "GeoJSON": {
      "properties": {
        "coordinates": {
          "description": "The geometry as coordinates lists",
          "items": {
            "type": "object"
          },
          "type": "array"
        },
        "type": {
          "description": "The GeoJSON Type",
          "enum": [
            "Point",
            "LineString",
            "Polygon",
            "MultiPoint",
            "MultiLineString",
            "MultiPolygon"
          ],
          "type": "string"
        }
      },
      "required": [
        "coordinates",
        "type"
      ],
      "type": "object"
    },
    "HarvestDatasetMetadata": {
      "properties": {
        "archived": {
          "description": "The reason the dataset has been archived",
          "type": "string"
        },
        "archived_at": {
          "description": "The archive date",
          "format": "date-time",
          "type": "string"
        },
        "backend": {
          "description": "Harvest backend used",
          "type": "string"
        },
        "created_at": {
          "description": "The dataset harvested creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "dct_identifier": {
          "description": "The dct:identifier property from the harvested dataset",
          "type": "string"
        },
        "domain": {
          "description": "The harvested domain",
          "type": "string"
        },
        "issued_at": {
          "description": "The dataset harvested release date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "last_update": {
          "description": "The last harvest date",
          "format": "date-time",
          "type": "string"
        },
        "modified_at": {
          "description": "The dataset harvest last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "remote_id": {
          "description": "The dataset remote id on the source portal",
          "type": "string"
        },
        "remote_url": {
          "description": "The dataset remote url",
          "type": "string"
        },
        "source_id": {
          "description": "The harvester id",
          "type": "string"
        },
        "uri": {
          "description": "The dataset harveted uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "HarvestResourceMetadata": {
      "properties": {
        "issued_at": {
          "description": "The resource harvested release date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "modified_at": {
          "description": "The resource harvest last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "uri": {
          "description": "The resource harvest uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "OrganizationPermissions": {
      "properties": {
        "delete": {
          "type": "boolean"
        },
        "edit": {
          "type": "boolean"
        },
        "harvest": {
          "type": "boolean"
        },
        "members": {
          "type": "boolean"
        },
        "private": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "OrganizationReference": {
      "allOf": [
        {
          "$ref": "#/$defs/BaseReference"
        },
        {
          "properties": {
            "acronym": {
              "description": "The organization acronym",
              "type": "string"
            },
            "badges": {
              "description": "The organization badges",
              "items": {
                "$ref": "#/$defs/Badge__read"
              },
              "readOnly": true,
              "type": "array"
            },
            "logo": {
              "description": "The organization logo URL",
              "type": "string"
            },
            "logo_thumbnail": {
              "description": "The organization logo thumbnail URL. This is the square (100x100) and cropped version.",
              "type": "string"
            },
            "name": {
              "description": "The organization name",
              "readOnly": true,
              "type": "string"
            },
            "page": {
              "description": "The organization web page URL",
              "readOnly": true,
              "type": "string"
            },
            "permissions": {
              "allOf": [
                {
                  "$ref": "#/$defs/OrganizationPermissions"
                }
              ],
              "readOnly": true
            },
            "slug": {
              "description": "The organization string used as permalink",
              "readOnly": true,
              "type": "string"
            },
            "uri": {
              "description": "The API URI for this organization",
              "readOnly": true,
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "Resource": {
      "properties": {
        "checksum": {
          "allOf": [
            {
              "$ref": "#/$defs/Checksum"
            }
          ],
          "description": "A checksum to validate file validity"
        },
        "created_at": {
          "description": "The resource creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The resource markdown description",
          "format": "markdown",
          "type": "string"
        },
        "extras": {
          "description": "Extra attributes as key-value pairs",
          "type": "object"
        },
        "filesize": {
          "description": "The resource file size in bytes",
          "type": "integer"
        },
        "filetype": {
          "description": "Whether the resource is an uploaded file, a remote file or an API",
          "enum": [
            "file",
            "remote"
          ],
          "type": "string"
        },
        "format": {
          "description": "The resource format",
          "type": "string"
        },
        "harvest": {
          "allOf": [
            {
              "$ref": "#/$defs/HarvestResourceMetadata"
            }
          ],
          "description": "Harvest attributes metadata information",
          "readOnly": true
        },
        "id": {
          "description": "The resource unique ID",
          "readOnly": true,
          "type": "string"
        },
        "internal": {
          "allOf": [
            {
              "$ref": "#/$defs/ResourceInternals"
            }
          ],
          "description": "Site internal and specific object's data",
          "readOnly": true
        },
        "last_modified": {
          "description": "The resource last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "latest": {
          "description": "The permanent URL redirecting to the latest version of the resource. When the resource data is updated, the URL will change, the latest URL won't.",
          "readOnly": true,
          "type": "string"
        },
        "metrics": {
          "description": "The resource metrics",
          "readOnly": true,
          "type": "object"
        },
        "mime": {
          "description": "The resource mime type",
          "type": "string"
        },
        "preview_url": {
          "description": "An optional preview URL to be loaded as a standalone page (ie. iframe or new page)",
          "readOnly": true,
          "type": "string"
        },
        "schema": {
          "allOf": [
            {
              "$ref": "#/$defs/Schema"
            }
          ],
          "description": "Reference to the associated schema"
        },
        "title": {
          "description": "The resource title",
          "type": "string"
        },
        "type": {
          "description": "Resource type (documentation, API...)",
          "enum": [
            "main",
            "documentation",
            "update",
            "api",
            "code",
            "other"
          ],
          "type": "string"
        },
        "url": {
          "description": "The resource URL",
          "type": "string"
        }
      },
      "required": [
        "filetype",
        "format",
        "title",
        "type",
        "url"
      ],
      "type": "object"
    },
    "ResourceInternals": {
      "properties": {
        "created_at_internal": {
          "description": "The resource's internal creation date on the site",
          "format": "date-time",
          "type": "string"
        },
        "last_modified_internal": {
          "description": "The resource's internal last modification date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "created_at_internal",
        "last_modified_internal"
      ],
      "type": "object"
    },
    "Schema": {
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SpatialCoverage": {
      "properties": {
        "geom": {
          "allOf": [
            {
              "$ref": "#/$defs/GeoJSON"
            }
          ],
          "description": "A multipolygon for the whole coverage"
        },
        "granularity": {
          "default": "other",
          "description": "The spatial/territorial granularity (full Granularity object if `X-Get-Datasets-Full-Objects` is set, ID of the granularity otherwise)",
          "type": "object"
        },
        "zones": {
          "description": "The covered zones identifiers (full GeoZone objects if `X-Get-Datasets-Full-Objects` is set, IDs of the zones otherwise)",
          "type": "object"
        }
      },
      "type": "object"
    },
    "TemporalCoverage": {
      "properties": {
        "end": {
          "description": "The temporal coverage end date",
          "format": "date-time",
          "type": "string"
        },
        "start": {
          "description": "The temporal coverage start date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "start"
      ],
      "type": "object"
    },
    "UserReference": {
      "allOf": [
        {
          "$ref": "#/$defs/BaseReference"
        },
        {
          "properties": {
            "avatar": {
              "description": "The user avatar URL",
              "type": "string"
            },
            "avatar_thumbnail": {
              "description": "The user avatar thumbnail URL. This is the square (500x500) and cropped version.",
              "type": "string"
            },
            "first_name": {
              "description": "The user first name",
              "readOnly": true,
              "type": "string"
            },
            "last_name": {
              "description": "The user larst name",
              "readOnly": true,
              "type": "string"
            },
            "page": {
              "description": "The user web page URL",
              "readOnly": true,
              "type": "string"
            },
            "slug": {
              "description": "The user permalink string",
              "readOnly": true,
              "type": "string"
            },
            "uri": {
              "description": "The API URI for this user",
              "readOnly": true,
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    }
  }
}