Use the Ingestion API Schema File requirements to successfully build a file to bring data into Data 360.
To create an ingestion API source in Data 360, the schema file you upload must meet specific requirements.
-
Uploaded schemas have to be in valid OpenAPI format with a .yml or .yaml extension. OpenAPI version 3.0.x is supported
-
Objects can’t have nested objects.
-
Each schema must have at least 1 object. Each object must have at least 1 field.
-
Only one Data Stream can be created per object per connection.
-
Objects can’t have more than 1000 fields.
-
Objects can’t be longer than 79 characters.
-
Field names can’t exceed 39 characters.
-
Object names must contain only a-z, A-Z, 0-9,
_, and-. Unicode characters aren't supported. -
Objects can’t be deleted from the schema after they are uploaded.
-
Field names must contain only a-z, A-Z, 0-9,
_, and-. Unicode characters aren't supported. -
Field names can’t be any of these reserved words: date_id, location_id, dat_account_currency, dat_exchange_rate, pacing_period, pacing_end_date, row_count, version. Field names can’t contain string __.
-
A field once added to an object’s schema can't be removed. Similarly, an object once added to the top-level schema associated with an active connection can't be removed.
-
Fields meet the type and format requirements:
-
For boolean type
booleanField: type: boolean -
For date type
dateField: type: string format: date -
For datetime type
dateTimeField: type: string format: date-timenote: Once the data is ingested, the date and time values are adjusted as per the time zone configured in your org.
-
For email type
emailField: type: string format: email -
For number type
numberField: type: number -
For phone type
phoneField: type: string format: phone -
For percent type
percentField: type: string format: percent -
For text type
textField: type: string -
For URL type
urlField: type: string format: url
-
-
Object names can’t be duplicated, case insensitive.
-
Objects can’t have duplicate field names, case insensitive.
-
Date data type fields in your payloads must be valid calendar dates conforming to ISO 8601 format
yyyy-MM-dd. -
DateTime data type fields in your payloads must be in ISO 8601 UTC Zulu with format
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'.
When updating your schema, be aware:
- Existing field data types can’t be changed.
- Upon updating an object, all of the existing fields for that object must be present.
- Your updated schema file only includes changed objects, so you don’t have to provide a comprehensive list of objects each time.
- A datetime field must be present for objects that are intended forengagementcategory. Objects of category profile or other don’t impose this same requirement.
note: If you send a payload using field API names instead of the schema-defined field names, the system can't recognize the fields or their values. As a result, the data stream displays a single row with blank columns. Since the payload has no valid fields, the ingestion process interprets each call as an upsert to the same record, ultimately populating that record with only blank values.
Example
Ingestion API schemas have set requirements. Review the schema requirements before ingestion.
Schema example:
openapi: 3.0.3
components:
schemas:
Order:
type: object
properties:
contact_name:
type: string
created_date:
type: string
format: date-time
id:
type: string
total:
type: number
shipAddress:
type: string
taxExempt:
type: string
tax_rate:
type: number
my_email:
type: string
format: email
my_phone:
type: string
format: phone
my_url:
type: string
format: url
my_percent:
type: string
format: percent
is_new:
type: boolean
modifie_date:
type: string
format: date-time
OrderItem:
type: object
properties:
cost:
type: number
createdDate:
type: string
format: date-time
quantity:
type: number
name:
type: string
orderId:
type: string
itemNumber:
type: number
SalesCustomer:
type: object
properties:
address:
type: string
age:
type: number
city:
type: string
country:
type: string
modifiedDate:
type: string
format: date-time
firstName:
type: string
gender:
type: string
id:
type: string
lastName:
type: string
createdDate:
type: string
format: date-time