Dealers

The dealer endpoints allow you to search, create, fetch, update and delete dealers from within the ITC network.

Dealers are classed as either physical sites in the real world, or virtual showrooms.


The Dealer Resource

The dealer resource contains all information about a requested dealer

Properties

  • Name
    id
    Required
    Type
    integer
    Description

    Unique identifier for the dealer.

  • Name
    group_id
    Required
    Type
    integer
    Description

    ID of the group this dealer belongs to

  • Name
    legal_entity_id
    Required
    Type
    integer | null
    Description

    ID of the legal entity the dealer belongs to, if available.

  • Name
    name
    Required
    Type
    string
    Description

    The name of the dealer

  • Name
    dates.created_at
    Required
    Type
    datetime
    Description

    The date the dealer was created, represented in YYYY-MM-DD HH:MM:SS format

  • Name
    dates.updated_at
    Required
    Type
    datetime
    Description

    The date the dealer was last updated, represented in YYYY-MM-DD HH:MM:SS format

  • Name
    dates.deleted_at
    Required
    Type
    null | datetime
    Description

    The date the dealer was deleted, represented in YYYY-MM-DD HH:MM:SS format. If the dealer is not deleted, this will be null

Dealer Resource

{
  "id": 1,
  "group_id": 2,
  "legal_entity_id": 3,
  "name": "Dev Site",
  "dates": {
    "created_at": "2024-01-01 00:00:00",
    "updated_at": "2024-01-02 12:00:00",
    "deleted_at": null,
  }
}

GET/v2/dealers

Search Dealers

The search dealers endpoint uses the standard [/searching](search package) from the SDK.

An array of dealer resources are returned. If no results are found, an empty collection is returned.

Search Filters

  • Name
    filters.id.equals
    Required
    Type
    integer
    Description

    Match a single dealer by ID

  • Name
    filters.id.in
    Required
    Type
    array<integer>
    Description

    Match dealers by multiple IDs

  • Name
    filters.group_id.equals
    Required
    Type
    integer
    Description

    Match dealers by group ID

  • Name
    filters.group_id.in
    Required
    Type
    array<integer>
    Description

    Match dealers by multiple group IDs

  • Name
    filters.legal_entity_id.equals
    Required
    Type
    integer | null
    Description

    Match dealers by legal entity ID

  • Name
    filters.group_id.in
    Required
    Type
    array<integer | null>
    Description

    Match dealers by multiple legal entity IDs

  • Name
    filters.name.equals
    Required
    Type
    string
    Description

    Match a dealer by their name

  • Name
    filters.name.in
    Required
    Type
    array<string>
    Description

    Match dealers by multiple name

  • Name
    filters.name.contains
    Required
    Type
    string
    Description

    Match a dealer by a partial name

  • Name
    filters.type.equals
    Required
    Type
    string
    Description

    Match dealers of a specific type

  • Name
    filters.type.in
    Required
    Type
    array<string>
    Description

    Match dealers of multiple specific types

  • Name
    filters.created_at.before_or_on
    Required
    Type
    datetime
    Description

    Match all dealers that were created before or on this datetime.

  • Name
    filters.created_at.after_or_on
    Required
    Type
    datetime
    Description

    Match all dealers that were created after or on this datetime.

  • Name
    filters.updated_at.before_or_on
    Required
    Type
    datetime
    Description

    Match all dealers that were last updated before or on this datetime.

  • Name
    filters.updated_at.after_or_on
    Required
    Type
    datetime
    Description

    Match all dealers that were last updated after or on this datetime.

  • Name
    filters.deleted_at.equals
    Required
    Type
    boolean
    Description

    If you want to only deleted dealers from results, provide true. If you only non-deleted dealers, provide false

Search Ordering

  • id
  • group_id
  • legal_entity_id
  • name
  • created_at
  • updated_at
  • deleted_at

Request

GET
/v2/dealers
use Compliance\Sdk\ApexV3\Contracts\ApexV3SdkInterface;
use Compliance\Sdk\Authentication\Types\Machine;
use Compliance\Sdk\Search\Search;

private ApexV3SdkInterface $sdk;

$search = new Search();

$response = $this->sdk
  ->v2(new Machine())
  ->dealers()
  ->search($search);

Response

{
  "data": [
    {
      "id": 1,
      "group_id": 2,
      "legal_entity_id": 3,
      "name": "Dev Site",
      "dates": {
        "created_at": "2024-01-01 00:00:00",
        "updated_at": "2024-01-02 00:00:00",
        "deleted_at": null,
      }
    }
  ]
}

POST/v2/dealers

Create Dealer

Will create a new dealer record

Payload

  • Name
    group_id
    Required
    required
    Type
    integer
    Description

    ID of the group this dealer belongs to

  • Name
    legal_entity_id
    Required
    Type
    integer | null
    Description

    ID of the legal entity this dealer belongs to

  • Name
    name
    Required
    required
    Type
    string
    Description

    The name of the dealer

Error Codes

Status Description
400 The group couldn't be found
400 The legal entity couldn't be found if provided
422 The data provided in the payload was invalid. See errors for more details.

Request

POST
/v2/dealers
use Compliance\Sdk\ApexV3\Contracts\ApexV3SdkInterface;
use Compliance\Sdk\Authentication\Types\Machine;

private ApexV3SdkInterface $sdk;

$response = $this->sdk
  ->v2(new Machine())
  ->dealers()
  ->create(1, 2, 'Dealer Name');

Response

{
  "data": {
    "id": 1,
    "group_id": 1,
    "legal_entity_id": 2,
    "name": "Dealer Name",
    "dates": {
      "created_at": "2024-01-01 00:00:00",
      "updated_at": "2024-01-02 00:00:00",
      "deleted_at": null,
    }
  }
}

GET/v2/dealers/:dealer_id

Retrieve Dealer

Will retrieve a single dealer by their ID.

URL Parameters

  • Name
    dealer_id
    Required
    required
    Type
    integer
    Description

    ID of the dealer to retrieve

Error Codes

Status Description
404 The requested dealer could not be found.

Request

GET
/v2/dealers/:dealer_id
use Compliance\Sdk\ApexV3\Contracts\ApexV3SdkInterface;
use Compliance\Sdk\Authentication\Types\Machine;

private ApexV3SdkInterface $sdk;

$response = $this->sdk
  ->v2(new Machine())
  ->dealer(1)
  ->get();

Response

{
  "data": {
    "id": 1,
    "group_id": 2,
    "legal_entity_id": 3,
    "name": "Dev Site",
    "dates": {
      "created_at": "2024-01-01 00:00:00",
      "updated_at": "2024-01-02 00:00:00",
      "deleted_at": null,
    }
  }
}

PUT/v2/dealers/:dealer_id

Update Dealer

Will attempt to update the core details of a dealer.

Only values provided in the request payload will be updated.

URL Parameters

  • Name
    dealer_id
    Required
    required
    Type
    integer
    Description

    ID of the dealer to update

Payload

  • Name
    group_id
    Required
    Type
    integer
    Description

    ID of the group to set as the dealers parent

  • Name
    legal_entity_id
    Required
    Type
    integer | null
    Description

    ID of the legal entity this dealer is attached to

  • Name
    name
    Required
    Type
    string
    Description

    The updated name for the dealer

Error Codes

Status Description
404 The requested dealer could not be found.
400 The given group could not be found.
400 The given legal entity could not be found.
422 The data provided in the payload was invalid. See errors for more details.

Request

PUT
/v2/dealers/:dealer_id
use Compliance\Sdk\ApexV3\Contracts\ApexV3SdkInterface;
use Compliance\Sdk\Authentication\Types\Machine;

private ApexV3SdkInterface $sdk;

$response = $this->sdk
  ->v2(new Machine())
  ->dealer(1)
  ->update([
    'group_id' => 2,
    'legal_entity_id' => 3,
    'name' => 'New Dealer Name',
  ]);

Response

{
  "data": {
    "id": 1,
    "group_id": 2,
    "legal_entity_id": 3,
    "name": "New Dealer Name",
    "dates": {
      "created_at": "2024-01-01 00:00:00",
      "updated_at": "2024-01-02 00:00:00",
      "deleted_at": null,
    }
  }
}

DELETE/v2/dealers/:dealer_id

Delete Dealer

Will attempt to delete the dealer. This endpoint will only affect non-deleted dealers.

The API will return a successful response if the dealer is already deleted, but won't update the deleted_at timestamp.

URL Parameters

  • Name
    dealer_id
    Required
    required
    Type
    integer
    Description

    ID of the dealer to delete

Error Codes

Status Description
404 The requested dealer could not be found.

Request

DELETE
/v2/dealers/:dealer_id
use Compliance\Sdk\ApexV3\Contracts\ApexV3SdkInterface;
use Compliance\Sdk\Authentication\Types\Machine;

private ApexV3SdkInterface $sdk;

$response = $this->sdk
  ->v2(new Machine())
  ->dealer(1)
  ->delete();

Response

{
  "data": {
    "id": 1,
    "group_id": 2,
    "legal_entity_id": 3,
    "name": "New Dealer Name",
    "dates": {
      "created_at": "2024-01-01 00:00:00",
      "updated_at": "2024-01-02 00:00:00",
      "deleted_at": "2024-01-03 00:00:00",
    }
  }
}