{"elements":[{"id":3,"title":"Documentazione","body":"<!-- Per Iniziare -->\n<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Per Iniziare<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-lg-6\">\n        <h4>1. Installa con Composer<\/h4>\n        <div class=\"da-install-box text-start\">\n          <span class=\"prompt\">$ <\/span>composer require dressapi\/core\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-6\">\n        <h4>2. Configura il Database<\/h4>\n        <div class=\"da-snippet\">\n          <h5 class=\"da-snippet-title\">config.php<\/h5>\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_HOST'<\/span>,     <span class=\"str\">'localhost'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_NAME'<\/span>,     <span class=\"str\">'your_database'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_USERNAME'<\/span>, <span class=\"str\">'your_user'<\/span>);\n<span class=\"kw\">define<\/span>(<span class=\"str\">'DB_PASSWORD'<\/span>, <span class=\"str\">'your_password'<\/span>);\n        <\/div>\n      <\/div>\n    <\/div>\n    <p class=\"text-center mt-4 text-muted\">Punta il DocumentRoot del web server alla directory <code>www\/<\/code> e la tua API &egrave; pronta.<\/p>\n  <\/div>\n<\/section>\n\n<!-- Autenticazione -->\n<section class=\"da-section da-section-alt\">\n  <div class=\"container\">\n    <h2>Autenticazione<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-lg-6\">\n        <h4>Login e Ottieni Token JWT<\/h4>\n        <h5 class=\"da-snippet-title\">Richiesta di Login<\/h5>\n        <div class=\"da-snippet\">\n<span class=\"kw\">curl<\/span> -X <span class=\"str\">POST<\/span> https:\/\/api.example.com\/sign \n  -d <span class=\"str\">\"dusername=admin&amp;dpassword=admin\"<\/span>\n        <\/div>\n        <h5 class=\"da-snippet-title\">Risposta<\/h5>\n        <div class=\"da-snippet\">\n{\n  <span class=\"str\">\"token\"<\/span>: <span class=\"str\">\"eyJhbGciOiJIUzI1NiIs...\"<\/span>,\n  <span class=\"str\">\"user\"<\/span>: {\n    <span class=\"str\">\"id\"<\/span>: <span class=\"fn\">1<\/span>,\n    <span class=\"str\">\"username\"<\/span>: <span class=\"str\">\"admin\"<\/span>,\n    <span class=\"str\">\"role\"<\/span>: <span class=\"str\">\"admin\"<\/span>\n  }\n}\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-6\">\n        <h4>Usa il Token nelle Richieste<\/h4>\n        <h5 class=\"da-snippet-title\">Richiesta Autenticata<\/h5>\n        <div class=\"da-snippet\">\n<span class=\"kw\">curl<\/span> \n  -H <span class=\"str\">\"Authorization: Bearer YOUR_TOKEN\"<\/span> \n  -X <span class=\"str\">GET<\/span> https:\/\/api.example.com\/product\n        <\/div>\n        <p class=\"mt-3\">Per le pagine HTML, l'autenticazione basata su sessione viene utilizzata automaticamente quando l'header Accept &egrave; <code>text\/html<\/code>. Aggiungi <code>site_mode=1<\/code> ai form se necessiti dell'autenticazione via sessione con JSON.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Operazioni CRUD -->\n<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Operazioni CRUD<\/h2>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Metodo<\/th>\n            <th>URL<\/th>\n            <th>Descrizione<\/th>\n            <th>Esempio<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td><span class=\"badge bg-success\">GET<\/span><\/td>\n            <td><code>\/table<\/code><\/td>\n            <td>Elenco di tutti i record<\/td>\n            <td><code>GET \/product<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td><span class=\"badge bg-success\">GET<\/span><\/td>\n            <td><code>\/table\/id<\/code><\/td>\n            <td>Leggi singolo record<\/td>\n            <td><code>GET \/product\/42<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td><span class=\"badge bg-success\">GET<\/span><\/td>\n            <td><code>\/table\/full<\/code><\/td>\n            <td>Leggi con relazioni<\/td>\n            <td><code>GET \/product\/full<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td><span class=\"badge bg-primary\">POST<\/span><\/td>\n            <td><code>\/table<\/code><\/td>\n            <td>Crea record<\/td>\n            <td><code>POST \/product -d \"dname=Shirt\"<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td><span class=\"badge bg-warning text-dark\">PUT<\/span><\/td>\n            <td><code>\/table\/id<\/code><\/td>\n            <td>Aggiorna record<\/td>\n            <td><code>PUT \/product\/42 -d \"dprice=24.99\"<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td><span class=\"badge bg-danger\">DELETE<\/span><\/td>\n            <td><code>\/table\/id<\/code><\/td>\n            <td>Elimina record<\/td>\n            <td><code>DELETE \/product\/42<\/code><\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Parametri URL -->\n<section class=\"da-section da-section-alt\">\n  <div class=\"container\">\n    <h2>Parametri URL<\/h2>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Parametro<\/th>\n            <th>Sintassi<\/th>\n            <th>Esempio<\/th>\n            <th>Descrizione<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>Con Relazioni<\/td>\n            <td><code>\/full<\/code><\/td>\n            <td><code>\/product\/full<\/code><\/td>\n            <td>Include dati dalle tabelle correlate<\/td>\n          <\/tr>\n          <tr>\n            <td>Paginazione<\/td>\n            <td><code>\/p\/pagina,per_pagina<\/code><\/td>\n            <td><code>\/product\/p\/1,10<\/code><\/td>\n            <td>Numero pagina ed elementi per pagina<\/td>\n          <\/tr>\n          <tr>\n            <td>Ordinamento<\/td>\n            <td><code>\/ob\/campo[-DESC]<\/code><\/td>\n            <td><code>\/product\/ob\/price-DESC<\/code><\/td>\n            <td>Ordina per campo, opzionalmente decrescente<\/td>\n          <\/tr>\n          <tr>\n            <td>Uguale<\/td>\n            <td><code>\/campo=valore<\/code><\/td>\n            <td><code>\/product\/status=active<\/code><\/td>\n            <td>Filtro corrispondenza esatta<\/td>\n          <\/tr>\n          <tr>\n            <td>Contiene<\/td>\n            <td><code>\/campo~valore<\/code><\/td>\n            <td><code>\/product\/name~shirt<\/code><\/td>\n            <td>Filtro corrispondenza parziale (LIKE)<\/td>\n          <\/tr>\n          <tr>\n            <td>Confronto<\/td>\n            <td><code>\/campo&gt;valore<\/code><\/td>\n            <td><code>\/product\/price&gt;10<\/code><\/td>\n            <td>Maggiore di, minore di, ecc.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Struttura Risposta -->\n<section class=\"da-section\">\n  <div class=\"container\">\n    <h2>Struttura della Risposta<\/h2>\n    <div class=\"row g-4\">\n      <div class=\"col-lg-6\">\n        <h4>Risposta di Successo<\/h4>\n        <h5 class=\"da-snippet-title\">Risposta JSON<\/h5>\n        <div class=\"da-snippet\">\n{\n  <span class=\"str\">\"items\"<\/span>: [\n    {\n      <span class=\"str\">\"id\"<\/span>: <span class=\"fn\">1<\/span>,\n      <span class=\"str\">\"name\"<\/span>: <span class=\"str\">\"Blue Shirt\"<\/span>,\n      <span class=\"str\">\"price\"<\/span>: <span class=\"fn\">29.99<\/span>,\n      <span class=\"str\">\"category\"<\/span>: {\n        <span class=\"str\">\"id\"<\/span>: <span class=\"fn\">3<\/span>,\n        <span class=\"str\">\"name\"<\/span>: <span class=\"str\">\"Clothing\"<\/span>\n      }\n    }\n  ],\n  <span class=\"str\">\"total\"<\/span>: <span class=\"fn\">42<\/span>,\n  <span class=\"str\">\"page\"<\/span>: <span class=\"fn\">1<\/span>,\n  <span class=\"str\">\"per_page\"<\/span>: <span class=\"fn\">10<\/span>\n}\n        <\/div>\n      <\/div>\n      <div class=\"col-lg-6\">\n        <h4>Formati di Output<\/h4>\n        <p>Il formato della risposta &egrave; determinato dall'header Accept:<\/p>\n        <h5 class=\"da-snippet-title\">Header Accept<\/h5>\n        <div class=\"da-snippet\">\n<span class=\"str\">application\/json<\/span>  <span class=\"cm\"># JSON (default)<\/span>\n<span class=\"str\">application\/xml<\/span>   <span class=\"cm\"># XML<\/span>\n<span class=\"str\">text\/html<\/span>         <span class=\"cm\"># HTML (modalit&agrave; CMS)<\/span>\n<span class=\"str\">text\/plain<\/span>        <span class=\"cm\"># Testo semplice<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Convenzioni Database -->\n<section class=\"da-section da-section-alt\">\n  <div class=\"container\">\n    <h2>Convenzioni Database<\/h2>\n    <div class=\"table-responsive\">\n      <table class=\"table table-striped\">\n        <thead class=\"table-dark\">\n          <tr>\n            <th>Convenzione<\/th>\n            <th>Pattern<\/th>\n            <th>Esempio<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>Chiave primaria<\/td>\n            <td><code>id<\/code><\/td>\n            <td><code>id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Chiave esterna<\/td>\n            <td><code>id_{tabella}<\/code><\/td>\n            <td><code>id_category INT UNSIGNED<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Tabelle framework<\/td>\n            <td><code>_{nome}<\/code><\/td>\n            <td><code>_user, _role, _acl, _translation<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Campi password<\/td>\n            <td><code>*pwd* \/ *password*<\/code><\/td>\n            <td><code>user_pwd, password<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Campi immagine<\/td>\n            <td><code>*_img<\/code><\/td>\n            <td><code>profile_img, cover_img<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Campi file<\/td>\n            <td><code>*file*<\/code><\/td>\n            <td><code>document_file, filename<\/code><\/td>\n          <\/tr>\n          <tr>\n            <td>Campi email<\/td>\n            <td><code>*email*<\/code><\/td>\n            <td><code>user_email, email<\/code><\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Link Tutorial -->\n<section class=\"da-section\">\n  <div class=\"container text-center\">\n    <h2>Documentazione API<\/h2>\n    <p class=\"lead mb-4\">Documentazione auto-generata dal codice sorgente di DressAPI Core:<\/p>\n    <div>\n      <a href=\"\/api-docs-phpdoc\/\" class=\"btn btn-primary btn-lg me-2\">\n        <i class=\"bi bi-book\"><\/i> Documentazione API\n      <\/a>\n      <a href=\"https:\/\/git.dressapi.com\/explore\/projects\" class=\"btn btn-outline-primary btn-lg\" target=\"_blank\" rel=\"noopener\">\n        <i class=\"bi bi-git\"><\/i> Codice Sorgente\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>","description":"Documentazione DressAPI: per iniziare, riferimento API, autenticazione, operazioni CRUD, parametri URL, struttura risposta e convenzioni database.","meta_keywords":"documentation,api reference,rest api,crud,authentication,tutorial","visible":"yes","status":"public","creation_date":"2025-01-01","id__user":1,"priority":0,"groupname":"DOCS"}],"module":"pages","permissions":{"can_read":true},"main_item_title":"title","related_tables":[{"name":"Newsonpage","module":"newsonpage","FK":"id_cmspage","permissions":[]}],"page_info":{"table":"","key":"id","url":"\/pages","url_list":"\/pages","filters":{"id":["=","3"]},"pagination":{"total_items":23,"page":1,"total_pages":2,"step":1,"items_per_page":20,"url_prev":"\/pages","url_next":"\/pages\/p\/2","url_tmpl":"\/pages\/p\/[[p]]","url_tmpl_with_order":"\/pages\/p\/[[p]]\/ob\/[[ob]]"},"order":{"field":"id","type":"DESC","url_tmpl":"\/pages\/p\/[[p]]"},"module":{"title":"Pages","description":"List of pages","name":"pages"},"current":{"title":"Pages","description":"List of pages","name":"pages","url":"\/api-docs"}},"components":{"alert":{"alert1":[{"type":"warning","message":"OK COMPONENT!"},{"type":"danger","message":"ERROR COMPONENT!"}]}},"messages":[]}