Entur · Schema
CustomerResponse
A registered customer response
CompanyPublic TransportJourney PlanningMobilityOpen DataNorwayTransitGraphQL
Properties
| Name | Type | Description |
|---|---|---|
| changedAt | string | When the customer was last changed. ISO 8601 date format |
| changedBy | string | Who last changed the customer. Either web, app or username of employee. Used for traceability in accordance with GDPR |
| changedByChannel | string | Which sales channel or system who last changed the customer. Used for traceability in accordance with GDPR |
| countryCode | string | Telephone number country code, starting with +. |
| createdAt | string | When the customer was created. ISO 8601 date format |
| createdBy | string | Who created the customer. Either web, app or username of employee. Used for traceability in accordance with GDPR |
| createdByChannel | string | Which sales channel or system who created the customer. Used for traceability in accordance with GDPR |
| customerAccountId | string | Customer account id used for account based ticketing |
| customerAccounts | array | Customer accounts used for account based ticketing |
| customerConsents | array | The legacy consents connected to the customer. |
| customerNumber | integer | Customer number. |
| customerRef | string | Optional customer reference. Defaults to customer number if not set. |
| dateOfBirth | object | |
| dateOfDeath | object | |
| ecardOwnerships | array | The ecards connected to the customer. |
| string | Contact email. May become different from username | |
| emailOld | string | When customer is deleted (status='D'), the value of 'email' is moved here to allow creation of a new customer with the same email. |
| emailVerifiedAt | string | When the email was verified. ISO 8601 date format |
| expirationDate | string | The date when the customers personal data should be deleted. Personal data will be deleted continuously. ISO 8601 date format |
| firstName | string | First and middle name. |
| givenConsents | array | The consents connected to the customer. Deprecated |
| id | integer | Customer id. Deprecated |
| landlineNumber | string | Landline telephone number. |
| languagePreference | string | Deprecated, please use languagePreferenceISO6393. Which language the customer wants information in. Default is 'NO'. |
| languagePreferenceISO6393 | string | Which language the customer wants information in. ISO 639-3 format. Default is 'NOB'. |
| lastSignInAt | string | When the customer last signed in. ISO 8601 date format |
| lastSignInFrom | string | Where the customer last signed in from. Typically web or app. Typically used to display to the user where the last login was performed. |
| nationality | string | The customers nationality. ISO 3166-1 alpha-3 format |
| notes | array | Deprecated. The notes connected to the customer. |
| organisationId | integer | The organisation the customer is registered with. |
| parentId | object | Id of the parent customer. Used to connect different customer types. |
| personnelTicketBearer | object | |
| postalAddresses | array | The postal addresses connected to the customer. |
| preferences | array | The preferences connected to the customer. |
| profileType | string | Type of profile. Types supported: 'S' = Standard customer, 'P' = Personnel ticket customer, 'T' = Temporary customer. Default is 'S'. |
| relatedCustomerNumbers | array | The customer number of profiles which has been merged into the current profile. These may be used to lookup customer information in other systems |
| status | string | Customer status. Statuses supported: 'A' = Active, 'P' = Passive, 'D' = Deleted. Default is 'A'. |
| surname | string | Surname. |
| telephoneNumber | string | Deprecated. Please use countryCode and telephoneNumberNoCountryCode. Telephone number for customer. This should be a cell phone number. |
| telephoneNumberNoCountryCode | string | Telephone number without country code or punctuation. |
| telephoneNumberVerifiedAt | string | When the telephone number was verified. ISO 8601 date format |
| username | string | Username the customer can use to log unto their profile. Only available on profile type S(tamkunde) and profile status A(ctive) |
| uuid | string | A universal unique id for the customer. 32 random alphanumeric characters. Not RFC 4122 compliant |
| vippsId | string | Deprecated. The field is no longer stored. Vipps unique user identifier. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-customer-response-schema.json",
"title": "CustomerResponse",
"description": "A registered customer response",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/entur-customers-openapi.yml#/components/schemas/CustomerResponse",
"required": [
"changedAt",
"changedBy",
"changedByChannel",
"createdAt",
"createdBy",
"createdByChannel",
"customerNumber",
"firstName",
"organisationId",
"profileType",
"status",
"surname",
"uuid"
],
"type": "object",
"properties": {
"changedAt": {
"type": "string",
"description": "When the customer was last changed. ISO 8601 date format",
"format": "date-time"
},
"changedBy": {
"maxLength": 100,
"type": "string",
"description": "Who last changed the customer. Either web, app or username of employee. Used for traceability in accordance with GDPR"
},
"changedByChannel": {
"maxLength": 100,
"type": "string",
"description": "Which sales channel or system who last changed the customer. Used for traceability in accordance with GDPR"
},
"countryCode": {
"maxLength": 4,
"type": "string",
"description": "Telephone number country code, starting with +."
},
"createdAt": {
"type": "string",
"description": "When the customer was created. ISO 8601 date format",
"format": "date-time"
},
"createdBy": {
"maxLength": 100,
"type": "string",
"description": "Who created the customer. Either web, app or username of employee. Used for traceability in accordance with GDPR"
},
"createdByChannel": {
"maxLength": 100,
"type": "string",
"description": "Which sales channel or system who created the customer. Used for traceability in accordance with GDPR"
},
"customerAccountId": {
"maxLength": 60,
"type": "string",
"description": "Customer account id used for account based ticketing"
},
"customerAccounts": {
"type": "array",
"description": "Customer accounts used for account based ticketing",
"items": {
"$ref": "#/$defs/CustomerAccountResponse"
}
},
"customerConsents": {
"type": "array",
"description": "The legacy consents connected to the customer.",
"items": {
"$ref": "#/$defs/CustomerConsent"
}
},
"customerNumber": {
"type": "integer",
"description": "Customer number.",
"format": "int64"
},
"customerRef": {
"maxLength": 40,
"type": "string",
"description": "Optional customer reference. Defaults to customer number if not set."
},
"dateOfBirth": {
"$ref": "#/$defs/LocalDateResponse"
},
"dateOfDeath": {
"$ref": "#/$defs/LocalDateResponse"
},
"ecardOwnerships": {
"type": "array",
"description": "The ecards connected to the customer.",
"items": {
"$ref": "#/$defs/EcardOwnershipResponse"
}
},
"email": {
"maxLength": 80,
"type": "string",
"description": "Contact email. May become different from username"
},
"emailOld": {
"maxLength": 80,
"type": "string",
"description": "When customer is deleted (status='D'), the value of 'email' is moved here to allow creation of a new customer with the same email."
},
"emailVerifiedAt": {
"type": "string",
"description": "When the email was verified. ISO 8601 date format",
"format": "date-time"
},
"expirationDate": {
"type": "string",
"description": "The date when the customers personal data should be deleted. Personal data will be deleted continuously. ISO 8601 date format",
"format": "date-time"
},
"firstName": {
"maxLength": 50,
"type": "string",
"description": "First and middle name."
},
"givenConsents": {
"type": "array",
"description": "The consents connected to the customer. Deprecated",
"deprecated": true,
"items": {
"type": "object",
"description": "The consents connected to the customer. Deprecated",
"deprecated": true
}
},
"id": {
"type": "integer",
"description": "Customer id. Deprecated",
"format": "int64",
"deprecated": true
},
"landlineNumber": {
"maxLength": 20,
"type": "string",
"description": "Landline telephone number."
},
"languagePreference": {
"type": "string",
"description": "Deprecated, please use languagePreferenceISO6393. Which language the customer wants information in. Default is 'NO'.",
"deprecated": true,
"enum": [
"NO",
"EN"
]
},
"languagePreferenceISO6393": {
"type": "string",
"description": "Which language the customer wants information in. ISO 639-3 format. Default is 'NOB'.",
"enum": [
"NOB",
"NNO",
"ENG"
]
},
"lastSignInAt": {
"type": "string",
"description": "When the customer last signed in. ISO 8601 date format",
"format": "date-time"
},
"lastSignInFrom": {
"maxLength": 100,
"type": "string",
"description": "Where the customer last signed in from. Typically web or app. Typically used to display to the user where the last login was performed."
},
"nationality": {
"maxLength": 3,
"minLength": 3,
"type": "string",
"description": "The customers nationality. ISO 3166-1 alpha-3 format"
},
"notes": {
"type": "array",
"description": "Deprecated. The notes connected to the customer.",
"deprecated": true,
"items": {
"$ref": "#/$defs/NoteResponse"
}
},
"organisationId": {
"type": "integer",
"description": "The organisation the customer is registered with.",
"format": "int64"
},
"parentId": {
"type": "object",
"description": "Id of the parent customer. Used to connect different customer types."
},
"personnelTicketBearer": {
"$ref": "#/$defs/PersonnelTicketBearer"
},
"postalAddresses": {
"type": "array",
"description": "The postal addresses connected to the customer.",
"items": {
"$ref": "#/$defs/PostalAddressResponse"
}
},
"preferences": {
"type": "array",
"description": "The preferences connected to the customer.",
"items": {
"$ref": "#/$defs/CustomerPreferenceResponse"
}
},
"profileType": {
"type": "string",
"description": "Type of profile. Types supported: 'S' = Standard customer, 'P' = Personnel ticket customer, 'T' = Temporary customer. Default is 'S'.",
"enum": [
"S",
"P",
"T"
]
},
"relatedCustomerNumbers": {
"type": "array",
"description": "The customer number of profiles which has been merged into the current profile. These may be used to lookup customer information in other systems",
"items": {
"type": "integer",
"description": "The customer number of profiles which has been merged into the current profile. These may be used to lookup customer information in other systems",
"format": "int64"
}
},
"status": {
"type": "string",
"description": "Customer status. Statuses supported: 'A' = Active, 'P' = Passive, 'D' = Deleted. Default is 'A'.",
"enum": [
"A",
"P",
"D"
]
},
"surname": {
"maxLength": 50,
"type": "string",
"description": "Surname."
},
"telephoneNumber": {
"maxLength": 20,
"type": "string",
"description": "Deprecated. Please use countryCode and telephoneNumberNoCountryCode. Telephone number for customer. This should be a cell phone number."
},
"telephoneNumberNoCountryCode": {
"maxLength": 12,
"type": "string",
"description": "Telephone number without country code or punctuation."
},
"telephoneNumberVerifiedAt": {
"type": "string",
"description": "When the telephone number was verified. ISO 8601 date format",
"format": "date-time"
},
"username": {
"type": "string",
"description": "Username the customer can use to log unto their profile. Only available on profile type S(tamkunde) and profile status A(ctive)"
},
"uuid": {
"maxLength": 32,
"minLength": 32,
"type": "string",
"description": "A universal unique id for the customer. 32 random alphanumeric characters. Not RFC 4122 compliant"
},
"vippsId": {
"type": "string",
"description": "Deprecated. The field is no longer stored. Vipps unique user identifier.",
"format": "uuid",
"deprecated": true
}
},
"$defs": {
"CustomerAccountResponse": {
"required": [
"createdAt",
"createdBy",
"customerAccountId",
"customerNumber",
"id"
],
"type": "object",
"properties": {
"alias": {
"type": "string",
"description": "Alias for the customer account"
},
"changedAt": {
"type": "string",
"description": "When the customer account was last changed. ISO 8601 date format",
"format": "date-time"
},
"changedBy": {
"type": "string",
"description": "Who changed the customer account."
},
"createdAt": {
"type": "string",
"description": "When the customer account was created. ISO 8601 date format",
"format": "date-time"
},
"createdBy": {
"type": "string",
"description": "Who created the customer account."
},
"customerAccountId": {
"type": "string",
"description": "Customer account id string"
},
"customerNumber": {
"type": "integer",
"description": "Unique customer number",
"format": "int64"
},
"id": {
"type": "integer",
"description": "Customer account unique id.",
"format": "int64"
},
"isDefault": {
"type": "boolean",
"description": "True if the account is the default account for the customer"
}
},
"description": "Customer account connected to a customer"
},
"CustomerConsent": {
"type": "object",
"properties": {
"changedAt": {
"type": "string",
"description": "When the customer consent was last changed.",
"format": "date-time"
},
"consentChoice": {
"type": "boolean",
"description": "Whether the customer has approved or declined this consent."
},
"consentCode": {
"maxLength": 20,
"type": "string",
"description": "The consent code."
},
"createdAt": {
"type": "string",
"description": "When the customer consent was created.",
"format": "date-time"
},
"customerId": {
"type": "integer",
"description": "Id of the customer.",
"format": "int64"
}
},
"description": "Legacy consents for a customer"
},
"CustomerPreferenceResponse": {
"required": [
"changedAt",
"createdAt",
"preference",
"preferenceId"
],
"type": "object",
"properties": {
"changedAt": {
"type": "string",
"description": "When the customer preference was last changed. ISO 8601 date format",
"format": "date-time"
},
"createdAt": {
"type": "string",
"description": "When the customer preference was created. ISO 8601 date format",
"format": "date-time"
},
"customerId": {
"type": "integer",
"description": "Id of the customer. Deprecated",
"format": "int64",
"deprecated": true
},
"preference": {
"$ref": "#/$defs/PreferenceResponse"
},
"preferenceId": {
"type": "integer",
"description": "Id of the preference",
"format": "int64"
},
"preferenceValue": {
"maxLength": 100,
"minLength": 1,
"type": "string",
"description": "Value of the preference. This can be things like membership number."
}
},
"description": "Preferences response for a customer"
},
"EcardOwnershipResponse": {
"required": [
"changedAt",
"createdAt",
"customerId",
"ecardNumber",
"ecardNumber16digits",
"ecardOperator",
"id",
"startOfOwnership"
],
"type": "object",
"properties": {
"bookingDate": {
"type": "string",
"description": "When the physical ecard was booked. ISO 8601 date format",
"format": "date-time"
},
"changedAt": {
"type": "string",
"description": "When the ecard was last changed. ISO 8601 date format",
"format": "date-time"
},
"createdAt": {
"type": "string",
"description": "When the ecard was created. ISO 8601 date format",
"format": "date-time"
},
"customerId": {
"type": "integer",
"description": "The customer connected to the ecard. Deprecated",
"format": "int64",
"deprecated": true
},
"ecardName": {
"maxLength": 100,
"type": "string",
"description": "Customer defined ecard alias."
},
"ecardNumber": {
"type": "integer",
"description": "Ecard number.",
"format": "int64"
},
"ecardNumber16digits": {
"maxLength": 16,
"minLength": 16,
"type": "string",
"description": "The 16 digit ecard number. A combination of ecardNumber, ecardOperator and control digit."
},
"ecardOperator": {
"type": "integer",
"description": "Ecard operator.",
"format": "int32"
},
"endOfOwnership": {
"type": "string",
"description": "When the customer removed the ecard connection. ISO 8601 date format",
"format": "date-time"
},
"expirationDate": {
"type": "string",
"description": "When the physical ecard expires. ISO 8601 date format",
"format": "date-time"
},
"id": {
"type": "integer",
"description": "Ecard id.",
"format": "int64"
},
"shippingDate": {
"type": "string",
"description": "When the physical ecard was shipped to the customer. ISO 8601 date format",
"format": "date-time"
},
"startOfOwnership": {
"type": "string",
"description": "When the ecard was first connected to the customer. ISO 8601 date format",
"format": "date-time"
}
},
"description": "Ecards connected to a customer"
},
"LocalDateResponse": {
"required": [
"day",
"month",
"year"
],
"type": "object",
"properties": {
"day": {
"type": "integer",
"description": "day of month",
"format": "int32"
},
"month": {
"type": "integer",
"description": "month number",
"format": "int32"
},
"year": {
"type": "integer",
"description": "year",
"format": "int32"
}
},
"description": "Date as object"
},
"NoteResponse": {
"required": [
"changedAt",
"changedBy",
"createdAt",
"createdBy",
"customerId",
"id",
"text"
],
"type": "object",
"properties": {
"changedAt": {
"type": "string",
"description": "When the note was last changed. ISO 8601 date format",
"format": "date-time"
},
"changedBy": {
"maxLength": 100,
"type": "string",
"description": "Who last changed the note."
},
"createdAt": {
"type": "string",
"description": "When the note was created. ISO 8601 date format",
"format": "date-time"
},
"createdBy": {
"maxLength": 100,
"type": "string",
"description": "Who created the note."
},
"customerId": {
"type": "integer",
"description": "Id of the customer connected to the note.",
"format": "int64"
},
"id": {
"type": "integer",
"description": "Note id.",
"format": "int64"
},
"text": {
"maxLength": 4000,
"type": "string",
"description": "Note content."
}
},
"description": "Deprecated"
},
"PersonnelTicketBearer": {
"type": "object",
"properties": {
"bearerCustomerId": {
"type": "integer",
"format": "int64"
},
"changedAt": {
"type": "string",
"format": "date-time"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"isSelfServedRetrieval": {
"type": "boolean"
},
"ticketRightBearer": {
"type": "string"
},
"ticketRightOwner": {
"type": "string"
}
},
"description": "The personnel tickets connected to the customer. Deprecated. Does not contain updated information."
},
"PostalAddressResponse": {
"required": [
"changedAt",
"countryCode",
"createdAt",
"customerId",
"id",
"postCode",
"town",
"typeOfAddress"
],
"type": "object",
"properties": {
"addressLine1": {
"maxLength": 80,
"type": "string",
"description": "Address line 1."
},
"addressLine2": {
"maxLength": 80,
"type": "string",
"description": "Address line 2, often used for c/o information."
},
"changedAt": {
"type": "string",
"description": "When the postal address was last changed. ISO 8601 date format",
"format": "date-time"
},
"countryCode": {
"maxLength": 3,
"minLength": 3,
"type": "string",
"description": "The address country code. ISO 3166-1 alpha-3 format"
},
"createdAt": {
"type": "string",
"description": "When the postal address was created. ISO 8601 date format",
"format": "date-time"
},
"customerId": {
"type": "integer",
"description": "The customer connected to the address.",
"format": "int64"
},
"id": {
"type": "integer",
"description": "Postal address id.",
"format": "int64"
},
"postCode": {
"maxLength": 10,
"type": "string",
"description": "The address post code."
},
"town": {
"maxLength": 50,
"type": "string",
"description": "The address post town."
},
"typeOfAddress": {
"type": "string",
"description": "The type of address. Types supported: 'P' = Private, 'I' = Invoice, 'S' = Shadow.",
"enum": [
"P",
"I",
"S"
]
},
"verifiedAt": {
"type": "string",
"description": "When the address was verified. ISO 8601 date format",
"format": "date-time"
}
},
"description": "Postal address connected to a customer"
},
"PreferenceResponse": {
"required": [
"changedAt",
"createdAt",
"id",
"isActive",
"preferenceCode",
"preferenceDescription",
"preferenceType"
],
"type": "object",
"properties": {
"changedAt": {
"type": "string",
"description": "When the preference was last changed. ISO 8601 date format",
"format": "date-time"
},
"createdAt": {
"type": "string",
"description": "When the preference was created. ISO 8601 date format",
"format": "date-time"
},
"id": {
"type": "integer",
"description": "Preference id.",
"format": "int64"
},
"isActive": {
"type": "boolean",
"description": "Whether the preference is active."
},
"preferenceCode": {
"maxLength": 20,
"type": "string",
"description": "The preference code."
},
"preferenceDescription": {
"maxLength": 255,
"type": "string",
"description": "A description of the preference."
},
"preferenceType": {
"maxLength": 20,
"type": "string",
"description": "Type of preference."
}
},
"description": "Preference"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/entur-customer-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.