how to get the complete structure of JSONAPI
Forum rules
Always add your Laravel, Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
Always add your Laravel, Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
how to get the complete structure of JSONAPI
Hi,
I'm using aimeos/aimeos-headless to create my e-commerce with vue 3 and Typescript , to handle the code i created a types.ts file with the structure like below from the like https://aimeos.org/docs/2024.x/frontend/jsonapi/, but that not compete and manually, can you give me the complete jsonAPI structure of aimeos.
thank you
I'm using aimeos/aimeos-headless to create my e-commerce with vue 3 and Typescript , to handle the code i created a types.ts file with the structure like below from the like https://aimeos.org/docs/2024.x/frontend/jsonapi/, but that not compete and manually, can you give me the complete jsonAPI structure of aimeos.
thank you
Code: Select all
// src/types.ts
// catalog (categories)
// product
// service
// attribute
// media
// price
// text
// src/types.ts
// Meta interface
export interface Meta {
total?: number;
prefix?: null | string;
"content-baseurl": string;
csrf?: {
name: string;
value: string;
};
}
// SelfLink interface
export interface SelfLink {
href: string;
allow: string[];
}
// Site interface
export interface Site {
id: string;
type: string;
attributes: {
"locale.site.id": string;
"locale.site.code": string;
"locale.site.icon": string;
"locale.site.logo": { [key: string]: string };
"locale.site.theme": string;
"locale.site.label": string;
"locale.site.status": number;
"locale.site.refid": string;
"locale.site.hasChildren": boolean;
"locale.site.ratings": number;
"locale.site.rating": string;
};
}
// Locale interface
export interface Locale {
id: string;
attributes: {
"locale.id": string;
pos: number;
site_id: number;
"locale.currencyid": string;
"locale.languageid": string;
"locale.position": number;
"locale.sitecode": string;
"locale.siteid": string;
"locale.status": number;
};
}
// BasketProductLink interface
export interface BasketProductLink {
href: string;
allow: string[];
}
// ProductJsonResponse interface
export interface ProductJsonResponse {
meta: Meta;
links: Links;
data: ProductData[];
included?: IncludedItem[];
}
// ProductData interface
export interface ProductData {
id: string;
type: string;
links: {
self: SelfLink;
"basket/product": BasketProductLink;
};
attributes?: ProductAttributes;
relationships?: DataRelationships;
}
// IncludedItem interface
export interface IncludedItem {
id: string;
type: string;
attributes?: CatalogAttributes | MediaAttributes | TextAttributes | StockAttributes;
relationships?: DataRelationships;
links?: {
self: SelfLink;
};
}
// ProductAttributes interface
export interface ProductAttributes {
"product.id": string;
"product.url": string;
"product.type": string;
"product.code": string;
"product.label": string;
"product.status": number;
"product.dataset": string;
"product.datestart": string | null;
"product.dateend": string | null;
"product.config": any[]; // Adjust type as needed
"product.scale": number;
"product.target": string;
"product.ctime": string;
"product.ratings": number;
"product.rating": string;
"product.instock": number;
}
// DataRelationships interface
export interface DataRelationships {
catalog: {
data: CatalogData[];
};
media: {
data: MediaData[];
};
text: {
data: TextData[];
};
stock: {
data: StockData[];
};
}
// CatalogData interface
export interface CatalogData {
id: string;
type: string;
attributes: CatalogAttributes;
relationships?: {
media: {
data: MediaData[];
};
text: {
data: TextData[];
};
stock: {
data: StockData[];
};
};
}
// CatalogAttributes interface
export interface CatalogAttributes {
"catalog.url": string;
"catalog.code": string;
"catalog.label": string;
"catalog.config": any[]; // Adjust type as needed
"catalog.status": number;
"catalog.target": string;
"catalog.hasChildren": boolean;
}
// MediaData interface
export interface MediaData {
id: string;
type: string;
attributes: MediaAttributes;
}
// MediaAttributes interface
export interface MediaAttributes {
"media.id": string;
"media.filesystem": string;
"media.domain": string;
"media.label": string;
"media.languageid": null;
"media.mimetype": string;
"media.type": string;
"media.preview": string;
"media.previews": Record<string, string>;
"media.url": string;
"media.status": number;
}
// TextData interface
export interface TextData {
id: string;
type: string;
attributes: TextAttributes;
}
// TextAttributes interface
export interface TextAttributes {
"text.id": string;
"text.languageid": null;
"text.type": string;
"text.label": string;
"text.domain": string;
"text.content": string;
"text.status": number;
}
// StockData interface
export interface StockData {
id: string;
type: string;
attributes: StockAttributes;
links: {
self: SelfLink;
};
}
// StockAttributes interface
export interface StockAttributes {
"stock.id": string;
"stock.productid": string;
"stock.stocklevel": number;
"stock.timeframe": string;
"stock.dateback": null;
"stock.type": string;
}
// Links interface
export interface Links {
self: string;
}
Re: how to get the complete structure of JSONAPI
Please have a look at the field configuration of the manager implementation to see all available fields and their types, e.g. for the attribute manager: https://github.com/aimeos/aimeos-core/b ... #L139-L211
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, give us a star
If you like Aimeos, give us a star
Re: how to get the complete structure of JSONAPI
thanks.
i have to extract JsonAPI structure from every standard.php file ? for example for catalog:
and i get that:
i have to extract JsonAPI structure from every standard.php file ? for example for catalog:
Code: Select all
private array $searchConfig = array(
'id' => array(
'code' => 'catalog.id',
'internalcode' => 'mcat."id"',
'label' => 'ID',
'type' => 'int',
'public' => false,
),
'catalog.siteid' => array(
'code' => 'catalog.siteid',
'internalcode' => 'mcat."siteid"',
'label' => 'Site ID',
'type' => 'string',
'public' => false,
),
'parentid' => array(
'code' => 'catalog.parentid',
'internalcode' => 'mcat."parentid"',
'label' => 'Parent ID',
'type' => 'int',
'public' => false,
),
'level' => array(
'code' => 'catalog.level',
'internalcode' => 'mcat."level"',
'label' => 'Tree level',
'type' => 'int',
'public' => false,
),
'left' => array(
'code' => 'catalog.left',
'internalcode' => 'mcat."nleft"',
'label' => 'Left value',
'type' => 'int',
'public' => false,
),
'right' => array(
'code' => 'catalog.right',
'internalcode' => 'mcat."nright"',
'label' => 'Right value',
'type' => 'int',
'public' => false,
),
'label' => array(
'code' => 'catalog.label',
'internalcode' => 'mcat."label"',
'label' => 'Label',
'type' => 'string',
),
'code' => array(
'code' => 'catalog.code',
'internalcode' => 'mcat."code"',
'label' => 'Code',
'type' => 'string',
),
'status' => array(
'code' => 'catalog.status',
'internalcode' => 'mcat."status"',
'label' => 'Status',
'type' => 'int',
),
'catalog.url' => array(
'code' => 'catalog.url',
'internalcode' => 'mcat."url"',
'label' => 'URL segment',
'type' => 'string',
),
'catalog.target' => array(
'code' => 'catalog.target',
'internalcode' => 'mcat."target"',
'label' => 'URL target',
'type' => 'string',
),
'catalog.config' => array(
'code' => 'catalog.config',
'internalcode' => 'mcat."config"',
'label' => 'Config',
'type' => 'json',
'public' => false,
),
'catalog.ctime' => array(
'label' => 'Create date/time',
'code' => 'catalog.ctime',
'internalcode' => 'mcat."ctime"',
'type' => 'datetime',
'public' => false,
),
'catalog.mtime' => array(
'label' => 'Modify date/time',
'code' => 'catalog.mtime',
'internalcode' => 'mcat."mtime"',
'type' => 'datetime',
'public' => false,
),
'catalog.editor' => array(
'code' => 'catalog.editor',
'internalcode' => 'mcat."editor"',
'label' => 'Editor',
'type' => 'string',
'public' => false,
),
'catalog:has' => array(
'code' => 'catalog:has()',
'internalcode' => ':site AND :key AND mcatli."id"',
'internaldeps' => ['LEFT JOIN "mshop_catalog_list" AS mcatli ON ( mcatli."parentid" = mcat."id" )'],
'label' => 'Catalog has list item, parameter(<domain>[,<list type>[,<reference ID>)]]',
'type' => 'null',
'public' => false,
),
'sort:catalog:position' => array(
'code' => 'sort:catalog:position',
'internalcode' => 'mcat."nleft"',
'label' => 'Category position',
'type' => 'int',
'public' => false,
),
);
and i get that:
Code: Select all
{
"data": {
"type": "catalog",
"id": "catalog.id",
"attributes": {
"siteid": "catalog.siteid",
"parentid": "catalog.parentid",
"level": "catalog.level",
"left": "catalog.left",
"right": "catalog.right",
"label": "catalog.label",
"code": "catalog.code",
"status": "catalog.status",
"url": "catalog.url",
"target": "catalog.target",
"config": "catalog.config",
"ctime": "catalog.ctime",
"mtime": "catalog.mtime",
"editor": "catalog.editor"
},
"relationships": {
"catalog:has": {
"links": {
"self": "/catalogs/{id}/relationships/catalog:has",
"related": "/catalogs/{id}/catalog:has"
},
"data": {
"type": "catalog",
"id": "catalog-id"
}
}
}
}
}
Re: how to get the complete structure of JSONAPI
The relationship part is always like:
Code: Select all
"relationships": {
"catalog": {
"links": {
"self": "/jsonapi/catalog/{id}/relationships/catalog",
"related": "/jsonapi/catalog/{id}/catalog"
},
"data": {
"type": "catalog",
"id": "catalog-id"
}
}
}
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos, give us a star
If you like Aimeos, give us a star