openapi: 3.2.0 info: title: Marketo Custom Objects API version: '1.0' description: 'Operations tagged Custom Objects across 2 of this provider''s published API definitions: marketo-data-ingestion-openapi-original.json, marketo-lead-database-openapi-original.json. Each path carries the servers of the definition it was published in.' servers: - url: https://mkto-ingestion-api.adobe.io description: Marketo Data Ingestion API - url: https://localhost:8080/ tags: - name: Custom Objects description: Upsert (insert or update) custom object records paths: /subscriptions/{munchkinId}/customobjects/{customObjectAPIName}: post: tags: - Custom Objects summary: Sync Custom Objects description: 'Upsert (insert or update) a list of custom object records. If a link field to a Person is specified in the request and that Person does not exist, several retries occur. If that Person is added during the retry window (65 minutes), then the update is successful. Required permission: `Read-Write Custom Object`.' operationId: syncCustomObjects parameters: - name: munchkinId in: path description: Marketo subscription Munchkin ID required: true schema: type: string example: 556-RJS-213 - name: customObjectAPIName in: path description: The API name of the custom object type required: true schema: type: string example: purchases - name: X-Mkto-User-Token in: header description: Marketo API access token required: true schema: type: string - name: X-Correlation-Id in: header description: Arbitrary string (max 255 characters). Used to trace requests through the system via Marketo Observability Data Stream. schema: type: string - name: X-Request-Source in: header description: Arbitrary string (max 50 characters). Used to trace the source of requests. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SyncCustomObjectsRequest' example: dedupeBy: dedupeFields priority: high customObjects: - email: brooklyn.parker@karnv.com vin: 20UYA31581L000000 make: BMW model: 3-Series 330i year: 2003 - email: johnny.neal@yvu30.com vin: 19UYA31581L000000 make: BMW model: 3-Series 325i year: 1989 responses: '202': description: Accepted – request accepted for async processing headers: X-Request-Id: description: Unique request ID schema: type: string '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized – OAuth token is invalid content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' servers: - url: https://mkto-ingestion-api.adobe.io description: Marketo Data Ingestion API /rest/v1/customobjects.json: get: tags: - Custom Objects summary: List Custom Objects description: 'Returns a list of Custom Object types available in the target instance, along with id and deduplication information for each type. Required Permissions: Read-Only Custom Object, Read-Write Custom Object' operationId: listCustomObjectsUsingGET parameters: - name: names in: query description: Comma-separated list of names to filter types on required: false style: form explode: true schema: type: array items: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectMetaData' servers: - url: https://localhost:8080/ /rest/v1/customobjects/{customObjectName}.json: get: tags: - Custom Objects summary: Get Custom Objects description: 'Retrieves a list of custom objects records based on filter and set of values. There are two unique types of requests for this endpoint: one is executed normally using a GET with URL parameters, the other is by passing a JSON object in the body of a POST and specifying _method=GET in the querystring. The latter is used when dedupeFields attribute has more than one field, which is known as a "compound key". Required Permissions: Read-Only Custom Object, Read-Write Custom Object' operationId: getCustomObjectsUsingGET parameters: - name: customObjectName in: path description: Name of custom object type to retrieve records for required: true schema: type: string - name: filterType in: query description: Field to filter on. Searchable fields can be retrieved with Describe Custom Object required: true schema: type: string - name: filterValues in: query description: Comma-separated list of field values to match against. required: true style: form explode: true schema: type: array items: type: string - name: fields in: query description: Comma-separated list of fields to return for each record. If unset marketoGuid, dedupeFields, updatedAt, createdAt will be returned required: false style: form explode: true schema: type: array items: type: string - name: batchSize in: query description: The batch size to return. The max and default value is 300. required: false schema: type: integer format: int32 - name: nextPageToken in: query description: A token will be returned by this endpoint if the result set is greater than the batch size and can be passed in a subsequent call through this parameter. See Paging Tokens for more info. required: false schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObject' requestBody: content: application/json: schema: $ref: '#/components/schemas/LookupCustomObjectRequest' description: Optional JSON request for retrieving custom objects with compound keys. Example:
{
"filterType":"dedupeFields",
"fields":[
"marketoGuid",
"Bedrooms",
"yearBuilt"
],
"input":[
{
"mlsNum":"1962352",
"houseOwnerId":"42645756"
},
{
"mlsNum":"3962352",
"houseOwnerId":"62645756"
}
]
}

post: tags: - Custom Objects summary: Sync Custom Objects description: 'Inserts, updates, or upserts custom object records to the target instance. Required Permissions: Read-Write Custom Object' operationId: syncCustomObjectsUsingPOST parameters: - name: customObjectName in: path description: customObjectName required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObject' requestBody: content: application/json: schema: $ref: '#/components/schemas/SyncCustomObjectRequest' description: syncCustomObjectRequest required: true servers: - url: https://localhost:8080/ /rest/v1/customobjects/{customObjectName}/delete.json: post: tags: - Custom Objects summary: Delete Custom Objects description: 'Deletes a given set of custom object records. Required Permissions: Read-Write Custom Object' operationId: deleteCustomObjectsUsingPOST parameters: - name: customObjectName in: path description: customObjectName required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObject' requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteCustomObjectRequest' description: deleteCustomObjectRequest servers: - url: https://localhost:8080/ /rest/v1/customobjects/{customObjectName}/describe.json: get: tags: - Custom Objects summary: Describe Custom Objects description: 'Returns metadata regarding a given custom object. Required Permissions: Read-Only Custom Object, Read-Write Custom Object' operationId: describeUsingGET_1 parameters: - name: customObjectName in: path description: customObjectName required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectMetaData' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema.json: get: tags: - Custom Objects summary: List Custom Object Types description: 'Returns a list of Custom Object Types available in the target instance, along with id, deduplication, relationship, and field information for each type. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type' operationId: listCustomObjectTypesUsingGET parameters: - name: names in: query description: Comma-separated list of API names of custom object types to filter on required: false style: form explode: true schema: type: array items: type: string - name: state in: query description: State of custom object type to filter on. By default, if an approved version exists, it is returned. Otherwise, the draft version is returned. required: false schema: type: string enum: - draft - approved - approvedWithDraft responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectMetaData' post: tags: - Custom Objects summary: Sync Custom Object Type description: 'Inserts, updates, or upserts custom object type record to the target instance. Required Permissions: Read-Write Custom Object Type' operationId: syncCustomObjectTypeUsingPOST responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' requestBody: content: application/json: schema: $ref: '#/components/schemas/SyncCustomObjectTypeRequest' description: JSON object containing custom object type attributes required: true servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/approve.json: post: tags: - Custom Objects summary: Approve Custom Object Type description: 'Approves the current draft of the type, and makes it the live version. This will delete the current live version of the type. Required Permissions: Read-Write Custom Object Type' operationId: approveCustomObjectTypeUsingPOST parameters: - name: apiName in: path description: API Name of the custom object type to approve required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/discardDraft.json: post: tags: - Custom Objects summary: Discard Custom Object Type Draft description: 'Discards the current draft of the custom object type. Required Permissions: Read-Write Custom Object Type' operationId: discardCustomObjectTypeUsingPOST parameters: - name: apiName in: path description: API Name of the custom object type draft to discard required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/delete.json: post: tags: - Custom Objects summary: Delete Custom Object Type description: 'Deletes the target custom object type. The type must first be removed from use by any assets, such as triggers or filters. Required Permissions: Read-Write Custom Object Type' operationId: deleteCustomObjectTypeUsingPOST parameters: - name: apiName in: path description: API Name of the custom object type to delete required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/describe.json: get: tags: - Custom Objects summary: Describe Custom Object Type description: 'Returns metadata regarding a given custom object type (including relationships and fields). Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type' operationId: describeCustomObjectTypeUsingGET parameters: - name: apiName in: path description: API name of custom object type to describe required: true schema: type: string - name: state in: query description: State of custom object type to filter on. By default, if an approved version exists, it is returned. Otherwise, the draft version is returned. required: false schema: type: string enum: - draft - approved - approvedWithDraft responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectMetaData' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/addField.json: post: tags: - Custom Objects summary: Add Custom Object Type Fields description: 'Adds fields to custom object type. Required Permissions: Read-Write Custom Object Type' operationId: addCustomObjectTypeFieldsUsingPOST parameters: - name: apiName in: path description: API name of custom object type required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' requestBody: content: application/json: schema: $ref: '#/components/schemas/AddCustomObjectTypeFieldsRequest' description: JSON object containing custom object type fields required: true servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/deleteField.json: post: tags: - Custom Objects summary: Delete Custom Object Type Fields description: 'Deletes fields from custom object type. Required Permissions: Read-Write Custom Object Type' operationId: deleteCustomObjectTypeFieldsUsingPOST parameters: - name: apiName in: path description: API name of custom object type required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' requestBody: content: application/json: schema: $ref: '#/components/schemas/DeleteCustomObjectTypeFieldsRequest' description: JSON object containing custom object type fields required: true servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/{fieldApiName}/updateField.json: post: tags: - Custom Objects summary: Update Custom Object Type Field description: 'Updates a field in custom object type. Required Permissions: Read-Write Custom Object Type' operationId: updateCustomObjectTypeFieldUsingPOST parameters: - name: apiName in: path description: API name of custom object type required: true schema: type: string - name: fieldApiName in: path description: API name of custom object type field required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectType' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateCustomObjectTypeFieldRequest' description: JSON object containing custom object type fields required: true servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/fieldDataTypes.json: get: tags: - Custom Objects summary: Get Custom Object Type Field Data Types description: 'Returns a list of permissible data types that are assigned to custom object fields. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type' operationId: getCustomObjectTypeFieldDataTypesUsingGET responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfCustomObjectTypeFieldDataTypes' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/linkableObjects.json: get: tags: - Custom Objects summary: Get Custom Object Linkable Objects description: 'Returns a list of linkable custom objects and their fields. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type' operationId: getCustomObjectTypeLinkableObjectsUsingGET responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectLinkableObject' servers: - url: https://localhost:8080/ /rest/v1/customobjects/schema/{apiName}/dependentAssets.json: get: tags: - Custom Objects summary: Get Custom Object Dependent Assets description: 'Returns a list of dependent assets for a custom object type, including their in-instance location. Required Permissions: Read-Only Custom Object Type, Read-Write Custom Object Type' operationId: getCustomObjectTypeDependentAssetsUsingGET parameters: - name: apiName in: path description: REST API name for custom object required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResponseOfObjectDependentAssets' servers: - url: https://localhost:8080/ components: schemas: SyncCustomObjectsRequest: required: - customObjects type: object properties: priority: type: string description: Priority of the request. enum: - normal - high default: normal dedupeBy: type: string description: Attributes to deduplicate on. enum: - dedupeFields - marketoGUID default: dedupeFields customObjects: type: array description: List of attribute name-value pairs for the object. items: $ref: '#/components/schemas/CustomObject' CustomObject: type: object description: Custom object record. Fields depend on the custom object schema definition. additionalProperties: true example: email: brooklyn.parker@karnv.com vin: 20UYA31581L000000 make: BMW model: 3-Series 330i year: 2003 ErrorResponse: type: object description: Error response body returned for non-202 responses. properties: error_code: type: string description: Error code. example: '4000801' message: type: string description: Error message. example: Bad request ObjectMetaData: type: object required: - createdAt - dedupeFields - description - displayName - pluralName - fields - idField - apiName - relationships - searchableFields - updatedAt - status - version properties: createdAt: type: string format: date-time description: Datetime when the object type was created dedupeFields: type: array description: List of dedupe fields. Arrays with multiple members are compound keys items: type: string description: type: string description: Description of the object type displayName: type: string description: UI display-name of the object type pluralName: type: string description: UI plural-name of the custom object type fields: type: array description: List of fields available on the object type items: $ref: '#/components/schemas/ObjectField' idField: type: string description: Primary id key of the object type apiName: type: string description: Name of the object type relationships: type: array description: List of relationships which the object has items: $ref: '#/components/schemas/ObjectRelation' searchableFields: type: array description: List of fields valid for use as a filter type in a query items: type: array items: type: string updatedAt: type: string format: date-time description: Datetime when the object type was most recently updated state: type: string description: Approval state of object type enum: - draft - approved - approvedWithDraft version: type: string description: Version of object type that is returned in response enum: - draft - approved DeleteCustomObjectRequest: type: object required: - input properties: deleteBy: type: string description: Field to delete records by. Permissible values are idField or dedupeFields as indicated by the result of the corresponding describe record input: type: array description: List of input records items: $ref: '#/components/schemas/CustomObject_2' SyncCustomObjectRequest: type: object required: - input properties: action: type: string description: Type of sync operation to perform enum: - createOnly - updateOnly - createOrUpdate dedupeBy: type: string description: Field to deduplicate on. If the value in the field for a given record is not unique, an error will be returned for the individual record. input: type: array description: List of input records items: $ref: '#/components/schemas/CustomObject_2' ResponseOfCustomObject: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' moreResult: type: boolean example: false description: Boolean indicating if there are more results in subsequent pages nextPageToken: type: string description: Paging token given if the result set exceeded the allowed batch size requestId: type: string description: Id of the request made result: type: array description: Array of results for individual records in the operation, may be empty items: $ref: '#/components/schemas/CustomObject_2' success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' ResponseOfObjectLinkableObject: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' requestId: type: string description: Id of the request made result: type: array description: List of permissible objects to use as custom object link field items: $ref: '#/components/schemas/ObjectLinkableObject' success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' Reason: type: object required: - code - message properties: code: type: string description: Integer code of the reason message: type: string description: Message describing the reason for the status of the operation RelatedObject: type: object required: - field - name properties: field: type: string description: Name of link field (within link object) name: type: string description: Name of the link object Error: type: object required: - code - message properties: code: type: string description: Error code of the error. See full list of error codes here message: type: string description: Message describing the cause of the error CustomObject_2: type: object required: - marketoGUID - seq properties: marketoGUID: type: string description: Unique GUID of the custom object records reasons: type: array description: List of reasons why an operation did not succeed. Reasons are only present in API responses and should not be submitted items: $ref: '#/components/schemas/Reason' seq: type: integer format: int32 description: Integer indicating the sequence of the record in response. This value is correlated to the order of the records included in the request input. Seq should only be part of responses and should not be submitted. LookupCustomObjectRequest: type: object required: - input properties: batchSize: type: integer format: int32 description: Maximum number of records to return in the response. Max and default is 300 fields: type: array description: 'List of fields to return. If not specified, will return the following fields: marketoGuid, dedupeFields, updatedAt, createdAt, filterType' items: type: string filterType: type: string description: 'Field to search on. Valid values are: dedupeFields, idFields, and any field defined in searchableFields attribute of Describe endpoint. Default is dedupeFields' input: type: array description: Search values when using a compound key. Each element must include each of the fields in the compound key. Compound keys are determined by the contents of "dedupeFields" in the Describe result for the object items: $ref: '#/components/schemas/CustomObject_2' nextPageToken: type: string description: Paging token returned from a previous response DeleteCustomObjectTypeField: type: object required: - name properties: name: type: string description: API Name of custom object type field CustomObjectTypeFieldRelatedTo: type: object required: - name - field properties: name: type: string description: Name of linkable object type field: type: string description: Foreign field to which the parent is linked ObjectField: type: object properties: dataType: type: string description: Datatype of the field displayName: type: string description: UI display-name of the field length: type: integer format: int32 description: Max length of the field. Only applicable to text, string, and text area. name: type: string description: Name of the field updateable: type: boolean example: false description: Whether the field is updateable crmManaged: type: boolean example: false description: Whether the field is managed by CRM (native sync) ObjectLinkableObjectField: type: object required: - name - displayName - dataType properties: name: type: string description: Link field API name displayName: type: string description: Link field name dataType: type: string description: Link field data type ResponseOfCustomObjectType: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' requestId: type: string description: Id of the request made result: type: array description: Empty array items: $ref: '#/components/schemas/Empty' success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' DeleteCustomObjectTypeFieldsRequest: type: object required: - input properties: input: type: array description: List of fields to delete from the custom object type items: $ref: '#/components/schemas/DeleteCustomObjectTypeField' ResponseOfObjectDependentAssets: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' requestId: type: string description: Id of the request made result: type: array description: List of dependent assets for a custom object type items: $ref: '#/components/schemas/ObjectDependentAsset' success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' ResponseOfCustomObjectTypeFieldDataTypes: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' requestId: type: string description: Id of the request made result: type: array description: List of permissible data types for custom object fields items: type: string success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' Warning: type: object required: - code - message properties: code: type: integer format: int32 description: Integer code of the warning message: type: string description: Message describing the warning ObjectLinkableObject: type: object required: - name - displayName - fields properties: name: type: string description: Link object API name displayName: type: string description: Link object UI display-name fields: type: array description: List of fields available on the link object items: $ref: '#/components/schemas/ObjectLinkableObjectField' AddCustomObjectTypeField: type: object required: - name - displayName - dataType properties: name: type: string description: API Name of custom object field displayName: type: string description: UI display-name of the custom object field dataType: type: string description: Datatype of the custom object field description: type: string description: Description of the custom object field isDedupeField: type: boolean description: Set to true to enable field as unique identifier for deduplicating records. Default is false relatedTo: description: Define custom object link field $ref: '#/components/schemas/CustomObjectTypeFieldRelatedTo' UpdateCustomObjectTypeFieldRequest: type: object properties: name: type: string description: API Name of custom object field displayName: type: string description: UI display-name of the custom object field dataType: type: string description: Datatype of the custom object field description: type: string description: Description of the custom object field isDedupeField: type: boolean description: Set to true to enable field as unique identifier for deduplicating records. Default is false relatedTo: description: Define custom object link field $ref: '#/components/schemas/CustomObjectTypeFieldRelatedTo' ObjectRelation: type: object required: - field - relatedTo - type properties: field: type: string description: API Name of link field relatedTo: description: Object to which the field is linked $ref: '#/components/schemas/RelatedObject' type: type: string description: Type of the relationship field ResponseOfObjectMetaData: type: object required: - errors - requestId - result - success - warnings properties: errors: type: array description: Array of errors that occurred if the request was unsuccessful items: $ref: '#/components/schemas/Error' moreResult: type: boolean example: false description: Boolean indicating if there are more results in subsequent pages nextPageToken: type: string description: Paging token given if the result set exceeded the allowed batch size requestId: type: string description: Id of the request made result: type: array description: Array of results for individual records in the operation, may be empty items: $ref: '#/components/schemas/ObjectMetaData' success: type: boolean example: false description: Whether the request succeeded warnings: type: array description: Array of warnings given for the operation items: $ref: '#/components/schemas/Warning' SyncCustomObjectTypeRequest: type: object required: - apiName - displayName properties: action: type: string description: Type of sync operation to perform. Default is createOrUpdate. enum: - createOnly - updateOnly - createOrUpdate displayName: type: string description: UI display-name of the custom object type apiName: type: string description: API name of the custom object type pluralName: type: string description: UI plural-name of the custom object type description: type: string description: Description of the custom object type showInLeadDetail: type: boolean description: Whether to show custom object type in lead detail of UI. Default is false Empty: {} ObjectDependentAsset: type: object required: - assetType - assetId - assetName properties: assetType: type: string description: Type of asset assetId: type: integer format: int32 description: ID of asset assetName: type: string description: Name of asset usedFields: type: array description: List of associated fields items: type: string AddCustomObjectTypeFieldsRequest: type: object required: - input properties: input: type: array description: List of fields to add to custom object type items: $ref: '#/components/schemas/AddCustomObjectTypeField' x-refined-from: - marketo-data-ingestion-openapi-original.json - marketo-lead-database-openapi-original.json