{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/elhub/main/json-schema/elhub-v1-authorization-request-resource-schema.json", "title": "V1AuthorizationRequestResource", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/elhub-access-api-openapi.yml#/components/schemas/V1AuthorizationRequestResource", "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "id", "type", "attributes", "meta", "relationships", "links" ], "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "const": "AuthorizationRequest" }, "attributes": { "type": "object", "allOf": [ { "$ref": "#/$defs/V1AuthorizationRequestSubmissionAttributes" } ], "unevaluatedProperties": false, "required": [ "status", "createdAt", "updatedAt", "validTo" ], "properties": { "status": { "type": "string", "enum": [ "Pending", "Accepted", "Rejected", "Expired" ] }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "validTo": { "type": "string", "format": "date-time" } } }, "meta": { "$ref": "#/$defs/V1AuthorizationRequestMeta" }, "relationships": { "type": "object", "additionalProperties": false, "required": [ "requestedFrom", "requestedTo", "requestedBy", "authorizationGrant" ], "properties": { "requestedFrom": { "$ref": "#/$defs/V1AgentRelationship", "description": "Rights holder, equivalent to requestedFrom in the document flow." }, "requestedTo": { "$ref": "#/$defs/V1AgentRelationship", "description": "Intended approver, equivalent to the intended signer in the document flow." }, "requestedBy": { "$ref": "#/$defs/V1AgentRelationship", "description": "Authenticated requesting market party that will receive the permissions." }, "approvedBy": { "$ref": "#/$defs/V1SignedByRelationship" }, "authorizationGrant": { "$ref": "#/$defs/V1AuthorizationGrantRelationship", "description": "Empty until acceptance, then contains all resulting grants. Links are retained even if the grants later expire, are exhausted or are revoked.\n" } } }, "links": { "type": "object", "additionalProperties": false, "required": [ "self" ], "properties": { "self": { "type": "string", "format": "uri-reference" } } } }, "allOf": [ { "if": { "properties": { "attributes": { "properties": { "status": { "const": "Accepted" } } } } }, "then": { "properties": { "relationships": { "required": [ "approvedBy" ], "properties": { "authorizationGrant": { "properties": { "data": { "minItems": 1 } } } } } } }, "else": { "properties": { "relationships": { "properties": { "approvedBy": { "not": {} }, "authorizationGrant": { "properties": { "data": { "maxItems": 0 } } } } } } } } ] } }, "$defs": { "V1AgentRelationship": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "type", "id" ], "properties": { "type": { "type": "string", "enum": [ "Person", "Organization", "MarketEntity" ] }, "id": { "type": "string", "minLength": 1 } } } } }, "V1AllowedChanges": { "type": "object", "additionalProperties": false, "minProperties": 1, "description": "Changes authorized for the listed resources.", "required": [ "validFrom" ], "properties": { "validFrom": { "type": "array", "minItems": 1, "maxItems": 1, "uniqueItems": true, "items": { "type": "string", "format": "date" } } } }, "V1AppliesTo": { "type": "object", "additionalProperties": false, "required": [ "meteringPointId" ], "properties": { "meteringPointId": { "type": "array", "minItems": 1, "uniqueItems": true, "description": "Metering points to which the authorization applies.", "items": { "type": "string", "minLength": 1 } } } }, "V1AuthorizationGrantRelationship": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "type", "id" ], "properties": { "type": { "type": "string", "const": "AuthorizationGrant" }, "id": { "type": "string", "format": "uuid" } } } } } }, "V1AuthorizationRequestMeta": { "type": "object", "additionalProperties": false, "required": [ "language" ], "properties": { "language": { "$ref": "#/$defs/language", "description": "Language requested for the authorization text presented in Min Side." }, "redirectURI": { "type": "string", "format": "uri", "pattern": "^https://" } } }, "V1AuthorizationRequestSubmissionAttributes": { "type": "object", "allOf": [ { "if": { "properties": { "requestType": { "const": "ChangeOfEnergySupplierForOrganization" } }, "required": [ "requestType" ] }, "then": { "properties": { "allowedChanges": { "not": {} } } } }, { "if": { "properties": { "requestType": { "const": "MoveInAndChangeOfEnergySupplierForOrganization" } }, "required": [ "requestType" ] }, "then": { "required": [ "allowedChanges" ] } } ], "required": [ "requestType", "appliesTo", "externalReference" ], "properties": { "requestType": { "type": "string", "enum": [ "ChangeOfEnergySupplierForOrganization", "MoveInAndChangeOfEnergySupplierForOrganization" ] }, "appliesTo": { "$ref": "#/$defs/V1AppliesTo" }, "allowedChanges": { "$ref": "#/$defs/V1AllowedChanges" }, "externalReference": { "$ref": "#/$defs/externalReference" } } }, "V1SignedByRelationship": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": false, "required": [ "type", "id" ], "properties": { "type": { "type": "string", "const": "Person" }, "id": { "type": "string", "minLength": 1 } } } } } } }