1"use strict";(globalThis.webpackChunktradingcardapi_public_docs||=[]).push([[2597],{5128(e,a,n){n.r(a),n.d(a,{assets:()=>l,contentTitle:()=>t,default:()=>p,frontMatter:()=>i,metadata:()=>d,toc:()=>c});const d=JSON.parse('{"id":"sdks/php/resources","title":"API Resources","description":"Complete reference for all available resources and methods in the Trading Card API PHP SDK.","source":"@site/docs/sdks/php/resources.md","sourceDirName":"sdks/php","slug":"/sdks/php/resources","permalink":"/docs/sdks/php/resources","draft":false,"unlisted":false,"editUrl":"https://github.com/cardtechie/tradingcardapi-api/tree/master/docs/public/docs/sdks/php/resources.md","tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Quick Start Guide","permalink":"/docs/sdks/php/quickstart"},"next":{"title":"Error Handling","permalink":"/docs/sdks/php/error-handling"}}');var r=n(4848),s=n(8453);const i={},t="API Resources",l={},c=[{value:"Overview",id:"overview",level:2},{value:"Cards",id:"cards",level:2},{value:"Available Methods",id:"available-methods",level:3},{value:"Examples",id:"examples",level:3},{value:"Get Single Card",id:"get-single-card",level:4},{value:"List Cards",id:"list-cards",level:4},{value:"Create Card",id:"create-card",level:4},{value:"Sets",id:"sets",level:2},{value:"Available Methods",id:"available-methods-1",level:3},{value:"Examples",id:"examples-1",level:3},{value:"Get Set with Cards",id:"get-set-with-cards",level:4},{value:"Set Checklist",id:"set-checklist",level:4},{value:"Add Missing Cards",id:"add-missing-cards",level:4},{value:"Players",id:"players",level:2},{value:"Available Methods",id:"available-methods-2",level:3},{value:"Examples",id:"examples-2",level:3},{value:"Teams",id:"teams",level:2},{value:"Available Methods",id:"available-methods-3",level:3},{value:"Examples",id:"examples-3",level:3},{value:"Genres",id:"genres",level:2},{value:"Available Methods",id:"available-methods-4",level:3},{value:"Examples",id:"examples-4",level:3},{value:"Brands",id:"brands",level:2},{value:"Available Methods",id:"available-methods-5",level:3},{value:"Examples",id:"examples-5",level:3},{value:"Manufacturers",id:"manufacturers",level:2},{value:"Available Methods",id:"available-methods-6",level:3},{value:"Examples",id:"examples-6",level:3},{value:"Years",id:"years",level:2},{value:"Available Methods",id:"available-methods-7",level:3},{value:"Examples",id:"examples-7",level:3},{value:"Attributes",id:"attributes",level:2},{value:"Available Methods",id:"available-methods-8",level:3},{value:"Examples",id:"examples-8",level:3},{value:"Stats",id:"stats",level:2},{value:"Available Methods",id:"available-methods-9",level:3},{value:"Examples",id:"examples-9",level:3},{value:"Common Patterns",id:"common-patterns",level:2},{value:"Filtering and Searching",id:"filtering-and-searching",level:3},{value:"Including Relationships",id:"including-relationships",level:3},{value:"Pagination",id:"pagination",level:3},{value:"Error Handling",id:"error-handling",level:3},{value:"Next Steps",id:"next-steps",level:2}];function h(e){const a={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.header,{children:(0,r.jsx)(a.h1,{id:"api-resources",children:"API Resources"})}),"\n",(0,r.jsx)(a.p,{children:"Complete reference for all available resources and methods in the Trading Card API PHP SDK."}),"\n",(0,r.jsx)(a.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(a.p,{children:"The SDK provides access to the following Trading Card API resources:"}),"\n",(0,r.jsxs)(a.table,{children:[(0,r.jsx)(a.thead,{children:(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.th,{children:"Resource"}),(0,r.jsx)(a.th,{children:"Description"}),(0,r.jsx)(a.th,{children:"CRUD Operations"})]})}),(0,r.jsxs)(a.tbody,{children:[(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Cards"})}),(0,r.jsx)(a.td,{children:"Individual trading cards"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Sets"})}),(0,r.jsx)(a.td,{children:"Card sets and collections"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Players"})}),(0,r.jsx)(a.td,{children:"Player information"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Teams"})}),(0,r.jsx)(a.td,{children:"Team data"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Genres"})}),(0,r.jsx)(a.td,{children:"Card categories/types"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Brands"})}),(0,r.jsx)(a.td,{children:"Trading card brands"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Manufacturers"})}),(0,r.jsx)(a.td,{children:"Card manufacturers"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Years"})}),(0,r.jsx)(a.td,{children:"Trading card years"}),(0,r.jsx)(a.td,{children:"\u2705 Create, Read, Update, Delete"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Attributes"})}),(0,r.jsx)(a.td,{children:"Card attributes"}),(0,r.jsx)(a.td,{children:"\u2705 Read"})]}),(0,r.jsxs)(a.tr,{children:[(0,r.jsx)(a.td,{children:(0,r.jsx)(a.strong,{children:"Stats"})}),(0,r.jsx)(a.td,{children:"Model statistics"}),(0,r.jsx)(a.td,{children:"\u2705 Read"})]})]})]}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"cards",children:"Cards"}),"\n",(0,r.jsx)(a.p,{children:"Individual trading cards with detailed information."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get single card\n$card = TradingCardApiSdk::card()->get($id, $options = []);\n\n// List cards\n$cards = TradingCardApiSdk::card()->getList($filters = []);\n\n// Create card\n$card = TradingCardApiSdk::card()->create($data);\n\n// Update card\n$card = TradingCardApiSdk::card()->update($id, $data);\n\n// Delete card\n$success = TradingCardApiSdk::card()->delete($id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples",children:"Examples"}),"\n",(0,r.jsx)(a.h4,{id:"get-single-card",children:"Get Single Card"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Basic card retrieval\n$card = TradingCardApiSdk::card()->get('card-123');\n\n// Get card with relationships\n$card = TradingCardApiSdk::card()->get('card-123', [\n 'include' => 'set,player,team,prices'\n]);\n\n// Access card data\necho $card['name']; // Card name\necho $card['description']; // Card description\necho $card['rarity']; // Card rarity\necho $card['set']['name']; // Set name (if included)\n"})}),"\n",(0,r.jsx)(a.h4,{id:"list-cards",children:"List Cards"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Basic listing\
1n$cards = TradingCardApiSdk::card()->getList();\n\n// With pagination\n$cards = TradingCardApiSdk::card()->getList([\n 'page' => 1,\n 'limit' => 25\n]);\n\n// With filters\n$cards = TradingCardApiSdk::card()->getList([\n 'name' => 'Charizard',\n 'year' => 2023,\n 'rarity' => 'rare',\n 'genre' => 'Pokemon'\n]);\n\n// With sorting\n$cards = TradingCardApiSdk::card()->getList([\n 'sort' => 'name',\n 'order' => 'asc'\n]);\n"})}),"\n",(0,r.jsx)(a.h4,{id:"create-card",children:"Create Card"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$newCard = TradingCardApiSdk::card()->create([\n 'name' => 'Custom Pikachu',\n 'description' => 'A special custom Pikachu card',\n 'rarity' => 'ultra_rare',\n 'set_id' => 'set-456',\n 'player_id' => 'player-789',\n 'number' => '025',\n 'condition' => 'mint'\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"sets",children:"Sets"}),"\n",(0,r.jsx)(a.p,{children:"Card sets and collections that group related cards."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-1",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Standard CRUD operations\n$set = TradingCardApiSdk::set()->get($id, $options = []);\n$sets = TradingCardApiSdk::set()->getList($filters = []);\n$set = TradingCardApiSdk::set()->create($data);\n$set = TradingCardApiSdk::set()->update($id, $data);\n$success = TradingCardApiSdk::set()->delete($id);\n\n// Set-specific methods\n$checklist = TradingCardApiSdk::set()->checklist($id);\n$result = TradingCardApiSdk::set()->addMissingCards($id);\n$result = TradingCardApiSdk::set()->addChecklist($request, $id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-1",children:"Examples"}),"\n",(0,r.jsx)(a.h4,{id:"get-set-with-cards",children:"Get Set with Cards"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get set with all cards\n$set = TradingCardApiSdk::set()->get('set-123', [\n 'include' => 'cards,genre,brand'\n]);\n\n// Access set data\necho $set['name']; // Set name\necho $set['release_year']; // Release year\necho $set['total_cards']; // Total cards in set\n\n// Access cards in the set\nforeach ($set['cards'] as $card) {\n echo $card['name'] . \" (#\" . $card['number'] . \")\\n\";\n}\n"})}),"\n",(0,r.jsx)(a.h4,{id:"set-checklist",children:"Set Checklist"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get checklist for a set\n$checklist = TradingCardApiSdk::set()->checklist('set-123');\n\nforeach ($checklist as $item) {\n $status = $item['collected'] ? '\u2705' : '\u274c';\n echo \"{$status} {$item['card']['name']} (#{$item['card']['number']})\\n\";\n}\n"})}),"\n",(0,r.jsx)(a.h4,{id:"add-missing-cards",children:"Add Missing Cards"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Automatically add missing cards to a set\n$result = TradingCardApiSdk::set()->addMissingCards('set-123');\n\necho \"Added {$result['added_count']} missing cards\\n\";\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"players",children:"Players"}),"\n",(0,r.jsx)(a.p,{children:"Player information and statistics."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-2",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$player = TradingCardApiSdk::player()->get($id, $options = []);\n$players = TradingCardApiSdk::player()->getList($filters = []);\n$player = TradingCardApiSdk::player()->create($data);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-2",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get player with cards\n$player = TradingCardApiSdk::player()->get('player-123', [\n 'include' => 'cards,team'\n]);\n\n// List players by team\n$players = TradingCardApiSdk::player()->getList([\n 'team_id' => 'team-456',\n 'position' => 'pitcher'\n]);\n\n// Create new player\n$player = TradingCardApiSdk::player()->create([\n 'name' => 'John Smith',\n 'position' => 'shortstop',\n 'team_id' => 'team-789',\n 'jersey_number' => 42\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"teams",children:"Teams"}),"\n",(0,r.jsx)(a.p,{children:"Team data and information."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-3",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$team = TradingCardApiSdk::team()->get($id, $options = []);\n$teams = TradingCardApiSdk::team()->getList($filters = []);\n$team = TradingCardApiSdk::team()->create($data);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-3",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get team with players\n$team = TradingCardApiSdk::team()->get('team-123', [\n 'include' => 'players,cards'\n]);\n\n// List teams by location\n$teams = TradingCardApiSdk::team()->getList([\n 'location' => 'New York',\n 'active' => true\n]);\n\n// Create new team\n$team = TradingCardApiSdk::team()->create([\n 'name' => 'Custom Team',\n 'location' => 'Custom City',\n 'founded_year' => 2023,\n 'league' => 'Custom League'\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"genres",children:"Genres"}),"\n",(0,r.jsx)(a.p,{children:"Card categories and types (Pokemon, Baseball, Football, etc.)."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-4",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Standard CRUD operations\n$genre = TradingCardApiSdk::genre()->get($id, $options = []);\n$genres = TradingCardApiSdk::genre()->getList($filters = []);\n$genre = TradingCardApiSdk::genre()->create($data);\n$genre = TradingCardApiSdk::genre()->update($id, $data);\n$success = TradingCardApiSdk::genre()->delete($id);\n\n// Genre-specific methods\n$deletedGenres = TradingCardApiSdk::genre()->listDeleted();\n$deletedGenre = TradingCardApiSdk::genre()->deleted($id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-4",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// List all active genres\n$genres = TradingCardApiSdk::genre()->getList();\n\n// Get genre with sets and cards\n$genre = TradingCardApiSdk::genre()->get('pokemon', [\n 'include' => 'sets,cards'\n]);\n\n// Create new genre\n$genre = TradingCardApiSdk::genre()->create([\n 'name' => 'Custom TCG',\n 'description' => 'A custom trading card game',\n 'slug' => 'custom-tcg'\n]);\n\n// List deleted genres\n$deletedGenres = TradingCardApiSdk::genre()->listDeleted();\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"brands",children:"Brands"}),"\n",(0,r.jsx)(a.p,{children:"Trading card brands and manufacturers."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-5",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$brand = TradingCardApiSdk::brand()->get($id, $options = []);\n$brands = TradingCardApiSdk::brand()->getList($filters = []);\n$brand = TradingCardApiSdk::brand()->create($data);\n$brand = TradingCardApiSdk::brand()->update($id, $data);\n$success = TradingCardApiSdk::brand()->delete($id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-5",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// List all brands\n$brands = TradingCardApiSdk::brand()->getList();\n\n// Get brand with sets\n$brand = TradingCardApiSdk::brand()->get('topps', [\n 'include' => 'sets'\n]);\n\n// Create new brand\n$brand = TradingCardApiSdk::brand()->create([\n 'name' => 'Custom Brand',\n 'description' => 'A custom card brand',\n 'founded_year' => 2023\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"manufacturers",children:"Manufacturers"}),"\n",(0,r.jsx)(a.p,{children:"Card manufacturing companies."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-6",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$manufacturer = TradingCardApiSdk::manufacturer()->get($id, $options = []);\n$manufacturers = TradingCardApiSdk::manufacturer()->getList($filters = []);\n$manufacturer = TradingCardApiSdk::manufacturer()->create($data);\n$manufacturer = TradingCardApiSdk::manufacturer()->update($id, $data);\n$success = TradingCardApiSdk::manufacturer()->delete($id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-6",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// List manufacturers\n$manufacturers = TradingCardApiSdk::manufacturer()->getList();\n\n// Get manufacturer with brands\n$manufacturer = TradingCardApiSdk::manufacturer()->get('panini', [\n 'include' => 'brands,sets'\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"years",children:"Years"}),"\n",(0,r.jsx)(a.p,{children:"Trading card years and eras."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-7",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$year = TradingCardApiSdk::year()->get($id, $options = []);\n$years = TradingCardApiSdk::year()->getList($filters = []);\n$year = TradingCardApiSdk::year()->create($data);\n$year = TradingCardApiSdk::year()->update($id, $data);\n$success = TradingCardApiSdk::year()->delete($id);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-7",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// List all years\n$years = TradingCardApiSdk::year()->getList([\n 'sort' => 'year',\n 'order' =>
1 'desc'\n]);\n\n// Get specific year with sets\n$year = TradingCardApiSdk::year()->get('1989', [\n 'include' => 'sets,cards'\n]);\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"attributes",children:"Attributes"}),"\n",(0,r.jsx)(a.p,{children:"Card attributes and characteristics."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-8",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$attribute = TradingCardApiSdk::attribute()->get($id, $options = []);\n$attributes = TradingCardApiSdk::attribute()->getList($filters = []);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-8",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// List all attributes\n$attributes = TradingCardApiSdk::attribute()->getList();\n\n// Get specific attribute\n$attribute = TradingCardApiSdk::attribute()->get('rarity');\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"stats",children:"Stats"}),"\n",(0,r.jsx)(a.p,{children:"Model statistics and analytics."}),"\n",(0,r.jsx)(a.h3,{id:"available-methods-9",children:"Available Methods"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"$stats = TradingCardApiSdk::stats()->get($type);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"examples-9",children:"Examples"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Get card statistics\n$cardStats = TradingCardApiSdk::stats()->get('cards');\necho \"Total cards: \" . $cardStats['total'];\necho \"By genre: \" . json_encode($cardStats['by_genre']);\n\n// Get set statistics\n$setStats = TradingCardApiSdk::stats()->get('sets');\necho \"Total sets: \" . $setStats['total'];\n\n// Get player statistics\n$playerStats = TradingCardApiSdk::stats()->get('players');\n"})}),"\n",(0,r.jsx)(a.hr,{}),"\n",(0,r.jsx)(a.h2,{id:"common-patterns",children:"Common Patterns"}),"\n",(0,r.jsx)(a.h3,{id:"filtering-and-searching",children:"Filtering and Searching"}),"\n",(0,r.jsxs)(a.p,{children:["Most ",(0,r.jsx)(a.code,{children:"getList()"})," methods support common filters:"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Common filters\n$results = TradingCardApiSdk::card()->getList([\n 'name' => 'search term', // Name contains\n 'year' => 2023, // Exact year\n 'genre' => 'pokemon', // Exact genre\n 'rarity' => 'rare', // Exact rarity\n 'active' => true, // Boolean filters\n 'page' => 1, // Pagination\n 'limit' => 25, // Results per page\n 'sort' => 'name', // Sort field\n 'order' => 'asc' // Sort direction\n]);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"including-relationships",children:"Including Relationships"}),"\n",(0,r.jsxs)(a.p,{children:["Use the ",(0,r.jsx)(a.code,{children:"include"})," parameter to fetch related data:"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"// Single relationship\n$card = TradingCardApiSdk::card()->get('card-id', [\n 'include' => 'set'\n]);\n\n// Multiple relationships\n$card = TradingCardApiSdk::card()->get('card-id', [\n 'include' => 'set,player,team,prices'\n]);\n\n// Nested relationships (if supported)\n$set = TradingCardApiSdk::set()->get('set-id', [\n 'include' => 'cards.player,genre'\n]);\n"})}),"\n",(0,r.jsx)(a.h3,{id:"pagination",children:"Pagination"}),"\n",(0,r.jsx)(a.p,{children:"Handle large datasets with pagination:"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"function getAllCards(): array\n{\n $allCards = [];\n $page = 1;\n $limit = 100;\n\n do {\n $response = TradingCardApiSdk::card()->getList([\n 'page' => $page,\n 'limit' => $limit\n ]);\n \n if (isset($response['data'])) {\n $allCards = array_merge($allCards, $response['data']);\n }\n \n $page++;\n $hasMore = count($response['data']) === $limit;\n } while ($hasMore);\n\n return $allCards;\n}\n"})}),"\n",(0,r.jsx)(a.h3,{id:"error-handling",children:"Error Handling"}),"\n",(0,r.jsx)(a.p,{children:"Always handle potential errors:"}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-php",children:"use CardTechie\\TradingCardApiSdk\\Exceptions\\{\n CardNotFoundException,\n ValidationException,\n RateLimitException\n};\n\ntry {\n $card = TradingCardApiSdk::card()->get('invalid-id');\n} catch (CardNotFoundException $e) {\n // Handle not found\n} catch (ValidationException $e) {\n // Handle validation errors\n $errors = $e->getValidationErrors();\n} catch (RateLimitException $e) {\n // Handle rate limiting\n $retryAfter = $e->getRetryAfter();\n}\n"})}),"\n",(0,r.jsx)(a.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsxs)(a.ul,{children:["\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.a,{href:"./error-handling",children:"Error Handling"})})," - Comprehensive error management"]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.a,{href:"./examples",children:"Examples"})})," - Real-world implementation examples"]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.strong,{children:(0,r.jsx)(a.a,{href:"./installation",children:"Installation & Setup"})})," - Installation and configuration guide"]}),"\n"]})]})}function p(e={}){const{wrapper:a}={...(0,s.R)(),...e.components};return a?(0,r.jsx)(a,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453(e,a,n){n.d(a,{R:()=>i,x:()=>t});var d=n(6540);const r={},s=d.createContext(r);function i(e){const a=d.useContext(s);return d.useMemo(function(){return"function"==typeof e?e(a):{...a,...e}},[a,e])}function t(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),d.createElement(s.Provider,{value:a},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.